Sei sulla pagina 1di 2581

Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR.

SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1

Calcolatori Elettronici e
Sistemi Operativi
Contenuti
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1

Scheda riassuntiva dell'insegnamento


Calcolatori Elettronici e Sistemi
Titolo dell'insegnamento
Operativi (CESO)
Settore Scientifico Disciplinare ING-INF/05 (*)
Ambito disciplinare Ingegneria informatica
Tipo di attività formativa Obbligatoria
Anno di Corso II Laurea Triennale
Numero CFU 12
Numero Lezioni 96 (**)

* Sistemi di Elaborazione delle Informazioni


** 8 lezioni per CFU; 12 CFU => 8x12 = 96 lezioni
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1

Il corso di 12 CFU sarà organizzato in tre moduli


principali:

1) Modulo di Reti Logiche (2.5 CFU)


2) Modulo di Architetture dei Calcolatori (4.5 CFU)
3) Modulo di Sistemi Operativi (5 CFU)

Per ogni CFU sono previste 8 Lezioni


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1

Obiettivi del corso:


• Fornire allo studente gli strumenti basilari per
l’analisi e la sintesi di circuiti logici combinatori e
sequenziali

• Studiare i modelli e le architetture dei calcolatori,


con particolare attenzione alla moderne tecnologie di
progetto

• Apprendere i concetti fondamentali ed i componenti


di un sistema operativo complesso
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1

Prerequisiti

- Conoscenza dei concetti di base


dell’informatica

- Conoscenza del linguaggio di


programmazione C e/o C++
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1

Non essendo obbligatorio aver sostenuto l’esame di


fondamenti di informatica, nelle prossime lezioni saranno
fatti dei richiami alle basi dell’informatica, della
programmazione e del linguaggio C.

In ogni modo, trattandosi solo di richiami, si consiglia


caldamente agli studenti di approfondire le tematiche del
corso di Fondamenti di Informatica.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1

Il corso è suddiviso in 13 Nuclei Tematici

- 1 Nucleo Tematico di Introduzione al Corso e breve ripasso di


Fondamenti di Informatica

- 3 Nuclei Tematici per il Modulo di Reti Logiche

- 5 Nuclei Tematici per il Modulo di Architetture dei Calcolatori

- 4 Nuclei Tematici per il Modulo di Sistemi Operativi

Nelle prossime slide verranno dettagliati i nuclei tematici e le lezioni


associate a ciascuno di essi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1

Nuclei Tematici: Introduzione e Reti Logiche

1. Introduzione al corso e breve ripasso di fondamenti di


Informatica

2. Reti Logiche: Circuiti Combinatori

3. Reti Logiche: Circuiti Sequenziali Asincroni

4. Reti Logiche: Circuiti Sequenziali Sincronizzati


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1

Nuclei Tematici: Architettura dei Calcolatori

5. Il linguaggio dei calcolatori

6. Struttura HW del Calcolatore

7. Gestione dell'I/O

8. Gerarchie di memorie

9. Nuove tendenze Architetturali


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1

Nuclei Tematici: Sistemi Operativi

10. Introduzione ai sistemi operativi

11. Gestione dei processi

12. Gestione delle memoria

13. Gestione dell'I/O e File System


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1

Dettaglio Lezioni: Modulo Reti Logiche


Numero
Lezione Nome Lezione Nucleo tematico
1 Introduzione al Corso Introduzione al corso e breve ripasso di fondamenti di Informatica
2 Richiami di Fondamenti di Informatica Introduzione al corso e breve ripasso di fondamenti di Informatica
3 Il Linguaggio C 1 Introduzione al corso e breve ripasso di fondamenti di Informatica
4 Il Linguaggio C 2 Introduzione al corso e breve ripasso di fondamenti di Informatica
5 Il Linguaggio C 3 Introduzione al corso e breve ripasso di fondamenti di Informatica
6 Algebra Booleana Reti Logiche:Circuiti Combinatori
7 Introduzione alle Reti Logiche Reti Logiche:Circuiti Combinatori
8 Reti Combinatorie: Basi Reti Logiche:Circuiti Combinatori
9 Reti combinatorie Elementari Reti Logiche:Circuiti Combinatori
10 Reti combinatorie significative:decoder, multiplexer, demultiplexer Reti Logiche:Circuiti Combinatori
11 Sintesi di reti logiche combinatorie con mappe di Karnaugh Reti Logiche:Circuiti Combinatori
12 Sintesi a porte NAND (NOR) e porte tri-state Reti Logiche:Circuiti Combinatori
13 Introduzione alle RSA, Flip-Flop SR e Riconoscitore di Sequenza Reti Logiche:Circuiti Sequenziali Asincroni
Sintesi con modello strutturale: Esempi di riconoscitori di sequenza con
14 e senza stato ponte Reti Logiche:Circuiti Sequenziali Asincroni
Sintesi del flip-flop SR con modello strutturale, Introduzione al D-Latch e
15 Esercizio di sintesi Reti Logiche:Circuiti Sequenziali Asincroni
Sintesi con modello strutturale con FF-SR: il riconoscitore di sequenza, il
16 FF D-Latch e il FF-DET come esempi Reti Logiche:Circuiti Sequenziali Asincroni
17 Memorie RAM e ROM. Definizione funzionale, sintesi e montaggio Reti Logiche:Circuiti Sequenziali Asincroni
I registri, introduzione alle reti sequenziali sincronizzate, il segnale di
18 clock Reti Logiche:Circuiti Sequenziali Sincronizzati
19 Contatori, full adder e registri multifunzionali Reti Logiche:Circuiti Sequenziali Sincronizzati
20 Modelli di Moore, Mealy e Mealy Ritardato, FF JK Reti Logiche:Circuiti Sequenziali Sincronizzati
21 Reti Sequenziali Sincronizzate Complesse Reti Logiche:Circuiti Sequenziali Sincronizzati
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1

Dettaglio Lezioni: Modulo Architettura dei Calcolatori (prima parte)

Organizzazione funzionale del calcolatore I: Modello funzionale a blocchi di un calcolatore, Introduzione


22 all'Assembly, rappresentazione dei numeri Il linguaggio dei calcolatori

23 Organizzazione funzionale del calcolatore II: Spazio di memoria, di I/O e registri del processore Il linguaggio dei calcolatori
24 Linguaggio macchina, mnemonico e Assembly Il linguaggio dei calcolatori

25 Indirizzamento delle istruzioni operative: di registro, immediato, di memoria, delle porte di I/O Il linguaggio dei calcolatori

26 Principali Istruzioni ALU I: Istruzioni di trasferimento e gestione della pila Il linguaggio dei calcolatori

27 Principali istruzioni ALU II: Istruzioni aritmetiche, di rotazione, traslazione e logiche Il linguaggio dei calcolatori
28 Istruzioni di controllo e gestione sottoprogrammi Il linguaggio dei calcolatori

29 Programmare in Assembly I: Assembler GAS, direttive e primo esempio di programma Il linguaggio dei calcolatori
Programmare in Assembly II: Dichiarazioni di variabili e costanti, come usare l'assemblatore, esercizio in
30 Assembly Il linguaggio dei calcolatori

31 Controllo di flusso dei programmi in Assembly: if..then..else, cicli ed esercizi Il linguaggio dei calcolatori
32 Sottoprogrammi e passaggi di parametri Il linguaggio dei calcolatori
33 Gestione I/O in Assembly Il linguaggio dei calcolatori
34 Introduzione all Hardware del calcolatore: Struttura HW del Calcolatore

35 Funzionamento interno del calcolatore: Processore, Bus locale e Organizzazione dello spazio esterno Struttura HW del Calcolatore

36 Architettura di un calcolatore a 32 bit: Aspetti fisici del processore, piedinatura Struttura HW del Calcolatore
37 Il Bus locale e lo spazio esterno Struttura HW del Calcolatore
38 Il bus dati a diversa ampiezza: descrizione e montaggio di interfacce Struttura HW del Calcolatore
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1

Dettaglio Lezioni: Modulo Architettura dei Calcolatori (seconda parte)

Strumenti per la gestione delle interfacce: basi di programmazione mista, lettura e


39 scrittura in interfacce. Gestione dell'I/O
40 Interfacce per la tastiera e video Gestione dell'I/O
Meccanismo di interruzione: Introduzione, gestione delle interruzioni e tabella delle
41 interruzioni. Gestione dell'I/O

42 Gestione delle interruzioni mascherabili: il controllore APIC e suo funzionamento Gestione dell'I/O
43 Gestione delle interfacce ad interruzione di programma Gestione dell'I/O
44 Introduzione alle gerarchie di memoria: Motivazioni e memorie DRAM Gerarchie di memorie
45 Memorie Cache I: Principio di località e funzionamento Gerarchie di memorie

46 Memorie Cache II: Il controllore della memoria cache e le cache associative ad insiemi Gerarchie di memorie
47 Bus PCI I: Introduzione, Collegamenti e Transazioni Nuove tendenze Architetturali
48 Bus PCI II: Configurazione delle funzioni e Inizializzazione Nuove tendenze Architetturali
49 Bus PCI III: Gestione delle interruzioni con PCI e … Nuove tendenze Architetturali
Accesso in DMA sul bus locale: il controllore DMA, l'accesso al bus e trasferimenti,
50 interfacce in DMA Nuove tendenze Architetturali
51 Bus Mastering Nuove tendenze Architetturali
52 Tecnica del Pipeline Nuove tendenze Architetturali
53 Esecuzione fuori ordine Nuove tendenze Architetturali
54 Esecuzione speculativa Nuove tendenze Architetturali
Architettura interna del processore con pipeline, esecuzione fuori ordine e speculativa:
55 ripasso ed esempi Nuove tendenze Architetturali
56 Introduzione alle GPU: filosofia di progetto e semplice architettura Nuove tendenze Architetturali
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1

Dettaglio Lezioni: Modulo Sistemi Operativi (prima parte)

57 Che cosa è un sistema operativo?:Concetti di base, Classificazione Introduzione ai sistemi operativi


Evoluzione dei sistemi operativi I: Sistemi Batch, Sistemi
58 Multiprogrammati, Interattivi e timesharing Introduzione ai sistemi operativi
Evoluzione dei sistemi operativi II: Sistemi paralleli e Reti di calcolatori,
59 Moderni sistemi di elaborazione Introduzione ai sistemi operativi
Struttura dei sistemi operativi I: funzioni svolte e chiamate di sistema,
60 Componenti di un SO Introduzione ai sistemi operativi
Struttura dei sistemi operativi II: sistemi monolitici e stratificati,
61 macchine virtuali e architetture client-server Introduzione ai sistemi operativi
62 Introduzione ai processi: il concetto di processo, Gli stati di un processo Gestione dei processi
Scheduling dei processi:Le code di scheduling, lo scheduler e il
63 cambiamento di contesto Gestione dei processi
Operazione sui processi: creazione e terminazione. Introduzione alla
64 programmazione concorrente in Unix Gestione dei processi
65 Processi e thread: programmazione multi-thread, gestione dei thread Gestione dei processi
66 Scheduling della CPU: concetti generali e criteri di scheduling Gestione dei processi
67 Algoritmi di scheduling della CPU Gestione dei processi
Comunicazione fra processi: modelli a memoria condivisa e a scambio di
68 messaggi Gestione dei processi
Sincronizzazione dei processi: Introduzione e il problema della sezione
69 critica Gestione dei processi
70 I semafori: concetti generali, stallo e attesa indefinita Gestione dei processi
I monitor: motivazioni e concetti generali, realizzazione con i semafori e
71 ripresa dei processi Gestione dei processi
Problemi tipici di sincronizzazione: produttore-consumatore e cinque
72 filosofi a cena Gestione dei processi
73 Il file system nei sistemi UNIX Gestione dei processi
74 Multiprogrammazione in Ambiente UNIX Gestione dei processi
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1

Dettaglio Lezioni: Modulo Sistemi Operativi (seconda parte)

75 Introduzione alla gestione della memoria: indirizzi logici e fisici, swapping dei processi Gestione delle memoria
76 Gestore della memoria nei sistemi mono e multiprogrammati Gestione delle memoria
77 Frammentazione e Paginazione Gestione delle memoria
78 Architetture avanzate per la paginazione Gestione delle memoria
79 Segmentazione Gestione delle memoria
80 Memoria virtuale: Concetti principali e paginazione su richiesta Gestione delle memoria

81 Memoria virtuale: Gestione del page fault trap e algoritmo di rimpiazzamento FIFO Gestione delle memoria
82 Memoria virtuale: Algoritmo ottimale, NRU e LRU Gestione delle memoria
83 Memoria virtuale: Altri algoritmi Gestione delle memoria
84 Memoria virtuale: Modalità di allocazione frames Gestione delle memoria

85 Introduzione alla gestione dell'I/O: Il sottosistema di I/O e suoi scopi principali Gestione dell'I/O e File System

86 Struttura software di I/O: organizzazione a livelli, driver, software indipendente dai dispositivi e utente Gestione dell'I/O e File System
Gestione delle memoria secondaria: Introduzione ai dischi, algoritmi di scheduling del disco e gestione
87 errori Gestione dell'I/O e File System
88 Interfaccia del file system: il concetto di file e modalità di accesso Gestione dell'I/O e File System

89 La struttura delle directory:concetti principali, organizzazione e multiutenza Gestione dell'I/O e File System

90 Realizzazione del file system I: Organizzazione, partizioni, strutture datai Gestione dell'I/O e File System

91 Realizzazione del file system II: la struttura della directory, condivisione di file e file system in Unix Gestione dell'I/O e File System

92 Memorizzazione sul disco del file system I: allocazione contigua e lista concatenata Gestione dell'I/O e File System

93 Memorizzazione sul disco del file system II: allocazione con indice e ottimizzazione del file system Gestione dell'I/O e File System
94 Protezione: concetti principali e domini e matrici di protezione Gestione dell'I/O e File System
95 Sicurezza: concetti princilali e cenni di crittografia Gestione dell'I/O e File System
96 Conclusione del corso Gestione dell'I/O e File System
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S1
Attività n°: Introduzione al corso
1

Calcolatori Elettronici e
Sistemi Operativi
Introduzione al Corso
Materiali per lo studio
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S1
Attività n°: Introduzione al corso
1

Risorse per lo studio:


1) Slide fornite dal docente: contengono tutte le informazioni
necessarie per acquisire le conoscenze del corso. Contengono
approfondimenti, note storiche, esercizi e riferimenti bibliografici

1) Alcuni libri di testo: da consultare in base alle necessità di


ciascuno studente. La maggior parte delle informazioni contenute
nelle slide fanno riferimento a specifici paragrafi o libri

1) Pagine Web verificate dal docente: non tutto ciò che si trova su
internet è corretto, anzi molte informazioni sono rumorose e
contraddittorie. Il docente si preoccuperà di certificare le pagine
web che riterrà utili ed interessanti per approfondire alcuni
argomenti
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S1
Attività n°: Introduzione al corso
1

Libri consigliati:
Reti Logiche
Paolo Corsini, Dalle porte AND OR NOT al sistema calcolatore. Un viaggio nel mondo
delle reti logiche in compagnia del linguaggio Verilog. Edizioni ETS, Pisa, 2014
Architettura dei Calcolatori:
Graziano Frosini, Giuseppe Lettieri, Architettura dei Calcolatori (Volume II), Edizioni
Pisa University Press, 2013. Disponibile come ebook (a pagamento ovvio), all'indirizzo
http://www.pisauniversitypress.it/scheda-libro/graziano-frosini-giuseppe-
lettieri/architettura-dei-calcolatori-vol-ii-9788867410811-124153.html
Sistemi Operativi
A. Silberschatz, P. B. Galvin, G. Gagne, Sistemi Operativi: Concetti ed Esempi, Ottava
Edizione, Pearson.. 2009”
Andrew S. Tanenbaum, I moderni sistemi operativi 3/Ed., Edizioni Pearson, 2009 (nel
corso a volte si fa riferimento a questo testo, ma si consiglia di preferire il precedente.)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S1
Attività n°: Introduzione al corso
1

Attenzione:

Versioni più recenti dei libri consigliati vanno più che bene.

Sarà premura dello studente andare a ricercare nelle nuove edizioni


gli argomenti trattati nel corso (si da per scontato che studenti
universitari siano in grado di svolgere questo semplice esercizio).

Essendo il presente un corso di base, è quasi certo che tutti gli


argomenti saranno disponibili anche in versioni aggiornate dei libri.

In ogni modo, il docente ogni anno verificherà che le nuove versioni


dei libri contengano tutti gli argomenti trattati.

Il docente è sempre a disposizione per chiarimenti sui libri di testo e i


loro contenuti.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S1
Attività n°: Introduzione al corso
1

Attenzione

La maggior parte degli argomenti trattati nel corso sono stati tratti dai libri
consigliati.

Questo significa che il docente ha letto, studiato ed analizzato i contenuti di


tali libri e ne ha effettuato una selezione ed una sintesi.

Quanto riportato nelle slide è più che sufficiente per superare


egregiamente l’esame: ciò non vieta allo studente di decidere di leggere i
contenuti dei libri ed utilizzare questi per fissare i concetti.

L’importante è che i concetti siano quelli espressi nel corso. Infatti, ci


potrebbero essere dei concetti espressi nel corso ma non presenti nei libri.
Questi potranno comunque essere oggetto di domanda di esame. I concetti
presenti nei libri ma non espressi nel corso non saranno mai oggetto di
domande di esame.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S1
Attività n°: Introduzione al corso
1

Nota sul diritto di autore

Il titolare del presente corso è il Prof. Pietro Ducange. Egli risulta l’autore principale
di tutte le lezioni.

In alcune lezioni compaiono come co-autori docenti titolari di altre Università. Tali
docenti hanno autorizzato il prof. Ducange ad utilizzare del materiale da loro
prodotto per la realizzazione di parti del presente corso.

Immagini e testi estratti da varie sorgenti sono sempre accompagnati da opportuna


citazione. Eventuali mancanze sono solo attribuibili a sviste (considerando la
grande quantità di fonti analizzate).

Si invita chiunque noti delle evidenti violazioni del diritto di autore, di contattare il
prima possibile il prof. Ducange che provvederà velocemente a risolvere la
situazione.

Tutti i contenuti del presente corso sono utilizzabili solo per fini didattici dagli
studenti iscritti all’Università Telematica eCampus.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S2
Attività n°: Introduzione al corso
1

Calcolatori Elettronici e
Sistemi Operativi
Introduzione al Corso
Organizzazione della didattica

Prof. Pietro Ducange


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S2
Attività n°: Introduzione al corso
1

Organizzazione delle lezioni


Ogni lezione potrà includere

1. Lezione o esercitazione principale (praticamente sempre)

1. Seconda parte della lezione e/o approfondimento

2. Audio o video presentazione (non per tutte le lezioni)

1. Approfondimenti, Letture consigliate, note storiche e discussioni

1. Possibili domande ed esercizi di esame e quiz a riposta multipla

2. Invito a partecipare ad un Webinar (vedi di seguito)


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S2
Attività n°: Introduzione al corso
1

• Le sessioni delle domande non conterranno, in genere, le risposte alle o


le soluzioni agli esercizi (molti esercizi saranno risolti nelle altre
sessioni).

• Solo argomenti e tematiche trattate durante il corso saranno oggetto di


esame.

• Il docente sarà disponibile a rispondere a qualsiasi dubbio sui contenuti


di tutte le sessioni e dell’ultima in particolare.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S2
Attività n°: Introduzione al corso
1

Gestione dell’ePortfolio dello Studente

• Prestare attenzione alle sessioni di approfondimento con esercizi e alle


sessioni di esempi di domande di esame.

• In alcune di queste sessioni verrà richiesto allo studente di caricare sul


proprio ePorfolio (sessioni di studio contrassegnate dall’azione
COMPILA) la soluzione dello specifico esercizio o le risposte alle
domande di esame.

• La soluzione e/o le risposte caricate devono essere farina del sacco dello
studente. E’ inutile caricare la soluzione fornita dal docente nelle slide o
copiare pezzi di slide e incollarle come risposta alle domande.

• Sarà premura del docente fornire un feedback allo studente sul materiale
caricato.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S2
Attività n°: Introduzione al corso
1

Ma a cosa serve caricare esercizi e risposte sull’ePortfolio?

Prima di tutto serve al docente per monitorare lo stato di avanzamento


dello studio dello studente.

Serve anche allo studente, che con una certa frequenza entra in contatto
con il docente. Infatti, ogni volta che viene effettuato il caricamento lo
studente è tenuto (anche se non gli viene data comunicazione dalla
piattaforma) a notificare il caricamento al docente tramite sistema di
messaggistica.

Serve allo studente per capire se sta procedendo bene nello studio
(questo è valido se è lui che realizza gli esercizi e si sforza di scrivere le
risposte alle domande): il docente fornirà dei feeback tramite il quale lo
studente potrà capire a che punto è nel suo processo di apprendimento.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S2
Attività n°: Introduzione al corso
1

Caricare esercizi e risposte sull’ePortfolio mi da diritto a qualche


punteggio in sede di esame?

Purtroppo no!

All’esame la commissione è tenuta a valutare obiettivamente lo studente


sulla base delle risposte che fornisce, sia nel test sia nell’interrogazione,
dinnanzi alla commissione stessa.

Resta comunque obbligatorio effettuare il caricamento per poter essere


ammessi all’esame.

Si ricorda, inoltre, che per essere ammessi all’esame è necessario


scaricare tutte le slide del corso.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S2
Attività n°: Introduzione al corso
1

WEBINAR

• In alcune lezioni gli studenti troveranno un invito a partecipare


ad un webinar.

• Tale partecipazione, se pur fortemente consigliata, non è


obbligatoria.

• Esistono due tipi di webinar:


– Di supporto alle esercitazioni
– Di supporto alla parte teorica
• I webinar saranno ripetuti ciclicamente e verranno pubblicati
periodicamente calendari delle tematiche.

• Per maggiori informazioni, rivolgersi ai TOL.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S2
Attività n°: Introduzione al corso
1

Ricevimento in Ufficio Virtuale

Il docente effettua ricevimento agli studenti nell’ufficio virtuale messo a


disposizione dalla piattaforma di eLearning di eCampus (si consiglia agli studenti
di chiedere ai tutor o al supporto tecnico informazioni a riguardo).

Sul sito del docente (http://bit.ly/1RGAdIR) sono disponibili gli orari del
ricevimento.

E’ caldamente consigliato (obbligatorio) iscriversi al ricevimento in Ufficio Virtuale


almeno due giorni prima contattando il docente tramite il sistema di messaggistica
e specificando le tematiche a cui si è interessati.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S2
Attività n°: Introduzione al corso
1

Alcune regole per l’attività didattica

1. Appena si decide di seguire il corso, notificarlo al docente tramite il sistema di


messaggistica della piattaforma di eLearning di eCampus. In tale occasione fissare
con il docente un primo appuntamento in Aula Virtuale per effettuare la conoscenza,
richiedere chiarimenti, chiedere consigli, etc.

2. Leggere attentamente la scheda corso e le FAQ messe a disposizione sulla


pagina personale del docente (http://bit.ly/1RGAdIR).

3. Il docente consiglia caldamente di partecipare ad almeno tre incontri in Aula


Virtuale prima di sostenere l’esame. E’ l’occasione per confrontarsi su contenuti del
corso ed altri aspetti utili all’apprendimento e al superamento dell’esame.

4. Per qualsiasi necessità contattare il docente, anche fuori dall’orario di ricevimento,


tramite il sistema di messaggistica della piattaforma di eLearning di eCampus.

5. Limitare al massimo l’uso della mail per contattare il docente.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S3
Attività n°: Introduzione al corso
1

Calcolatori Elettronici e
Sistemi Operativi
Introduzione al Corso:
Modalità di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S3
Attività n°: Introduzione al corso
1

Modalità di esame:

A partire dalle sessione di Febbraio-Marzo 2017 l’esame si sostiene secondo le


modalità stabilite dal regolamento di Ateneo.

Sono pertanto abolite le prove parziali!

Per le modalità di verifica per l’anno in corso fare riferimento alla scheda corso
dell’anno accademico in essere e ai documenti forniti dal docente sulla sua pagina
web (goo.gl/Eih1Kf)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S3
Attività n°: Introduzione al corso
1

Qualche regola (patti chiari, amicizia lunga…)


• Per sostenere l’esame occorre iscriversi sempre

• Per qualsiasi dubbio sull’iscrizione all’esame, non esitare a contattare il docente.

• Tutto il materiale caricato nell’eporfolio non viene considerato per il calcolo del
voto finale. Resta comunque obbligatorio caricare esercizi e risposte alle
domande per poter accedere all’esame.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S3
Attività n°: Introduzione al corso
1

Il Docente
Il Prof. Pietro Ducange si è laureato in Ingegneria Informatica presso
l’Università di Pisa nel 2005. Ha conseguito il Dottorato di Ricerca in Ingegneria
dell’Informazione nel 2009 presso lo stesso Ateneo. Da Gennaio 2009 a
Maggio 2014 è stato titolare di Assegno di Ricerca presso il Dipartimento di
Ingegneria dell’Informazione dell’Università di Pisa. Da Maggio 2014 è
Professore Associato per il settore scientifico disciplinare Ing-Inf/05 presso
l’Università degli Studi eCampus.
Il Prof. Ducange svolge attività di ricerca nel campo della Computational
Intelligence ed ha pubblicato più di 30 articoli su riviste e atti di congressi
internazionali. E’ tuttora membro del Computational Intelligence Group del
Dipartimento di Ingegneria dell’Informazione dell’Università di Pisa. Il prof.
Ducange è stato coinvolto in numerosi progetti di ricerca e sviluppo.
Attualmente partecipa ad un progetto sulle Smart Cities e ad un progetto per lo
sviluppo di sistemi di monitoraggio dei consumi elettrici in edifici pubblici e
privati.
Il Prof. Ducange è disponibile per seguire come relatore tesi di Laurea nei
settori: Data Mining, Intelligenza Artificiale, Ingegneria del Software, Sviluppo di
Applicazioni in ambiente Cloud Computing, Big Data.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi

Richiami di Fondamenti di Informatica


Le basi dell’informatica
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Le basi dell’informatica
• Informatica (definizione informale): è la scienza della rappresentazione e dell’elaborazione dell’informazione

• Informatica (definizione formale dell’Association for Computing Machine - ACM): è lo studio sistematico degli algoritmi che
descrivono e trasformano l’informazione, la loro teoria e analisi, il loro progetto, e la loro efficienza, realizzazione e
applicazione.

• Algoritmo: sequenza precisa e finita di operazioni, comprensibili e perciò eseguibili da uno strumento informatico, che
portano alla realizzazione di un compito.

Esempi di algoritmi:
Istruzioni di montaggio di un elettrodomestico
Somma in colonna di due numeri

• Un algoritmo deve essere comprensibile al suo esecutore.

• Calcolatori Elettronici come esecutori di algoritmi. Gli algoritmi vengono descritti tramite programmi, cioè sequenze di
istruzioni scritte in un opportuno linguaggio comprensibile al calcolatore.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Proprietà degli algoritmi


• Compito dell’esperto informatico: produrre algoritmi (cioè capire la
sequenza di passi che portano alla soluzione del problema) e codificarli
in programmi.

• Proprietà essenziali degli algoritmi:


Correttezza:
– un algoritmo è corretto se esso perviene alla soluzione del compito cui è
preposto, senza difettare in alcun passo fondamentale.

Efficienza:
– un algoritmo è efficiente se perviene alla soluzione del compito cui è
preposto nel modo più veloce possibile, compatibilmente con la sua
correttezza.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Rappresentazione dell’informazione

• L’informazione è qualcosa di astratto. Per poterla manipolare bisogna rappresentarla.


• In un calcolatore i vari tipi di informazione (testi, figure, numeri, musica,…) si rappresentano per
mezzo di sequenze di bit (cifre binarie).
• Bit è l’abbreviazione di Binary digIT, numero binario. E’ l'unità di misura elementare
dell'informazione, ma anche la base del sistema numerico utilizzato dai computer. Può assumere
soltanto due valori: 0 o 1.
• Byte è l’unità di misura dell'informazione che corrisponde ad 8 bit.
• Quanta informazione può essere contenuta in una sequenza di n bit? 2n
• ATTENZIONE: Una stessa sequenza di bit può rappresentare informazione differente.
Per esempio “01000001”
rappresenta l’intero 65, il carattere ‘A’, il colore di un puntino sullo schermo
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Calcolatore e Informazione
dispositivi di conversione
testo IN sequenze
disegni OUT di bit
immagini
numeri
musica
...
Calcolatore
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Rappresentazione dei caratteri


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Rappresentazione dei numeri


I numeri vengo rappresentati utilizzando diverse codifiche in base al tipo
• Numeri Naturali: rappresentazione in base due del numero su un certo numero
di bit
• Numeri Interi: rappresentazione binaria in modulo e segno oppure in
complemento a due
• Numeri Reali: rappresentazione in virgola fissa o virgola mobile (sottoinsieme
discreto di numeri reali)
Attenzione:
• il range di valori rappresentabili dipende dal tipo di numero e dal tipo di
rappresentazione
• non è detto che il risultato di una operazione sia rappresentabile
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Il concetto di algoritmo (I)


• Algoritmo: sequenza precisa (non ambigua) e finita di operazioni, che
portano alla realizzazione di un compito.
• Le operazioni utilizzate appartengono ad una delle seguenti categorie:
• Operazioni sequenziali
– Realizzano una singola azione. Quando l’azione è terminata passano
all’operazione successiva.
• Operazioni condizionali
– Controllano una condizione. In base al valore della condizione, selezionano
l’operazione successiva da eseguire.
• Operazioni iterative
– Ripetono l’esecuzione di un blocco di operazioni, finchè non è verificata una
determinata condizione.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Il concetto di algoritmo (II)


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Basi di programmazione
Richiami di Fondamenti di Informatica
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Le basi dell’informatica
• Informatica (definizione informale): è la scienza della rappresentazione e dell’elaborazione
dell’informazione

• Informatica (definizione formale dell’Association for Computing Machine - ACM): è lo studio


sistematico degli algoritmi che descrivono e trasformano l’informazione, la loro teoria e
analisi, il loro progetto, e la loro efficienza, realizzazione e applicazione.

• Algoritmo: sequenza precisa e finita di operazioni, comprensibili e perciò eseguibili da uno


strumento informatico, che portano alla realizzazione di un compito.

Esempi di algoritmi:
Istruzioni di montaggio di un elettrodomestico
Somma in colonna di due numeri

• Un algoritmo deve essere comprensibile al suo esecutore.

• Calcolatori Elettronici come esecutori di algoritmi. Gli algoritmi vengono descritti tramite
programmi, cioè sequenze di istruzioni scritte in un opportuno linguaggio comprensibile al
calcolatore.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Proprietà degli algoritmi


• Compito dell’esperto informatico: produrre algoritmi
(cioè capire la sequenza di passi che portano alla
soluzione del problema) e codificarli in programmi.

• Proprietà essenziali degli algoritmi:


Correttezza:
– un algoritmo è corretto se esso perviene alla soluzione del
compito cui è preposto, senza difettare in alcun passo
fondamentale.

Efficienza:
– un algoritmo è efficiente se perviene alla soluzione del
compito cui è preposto nel modo più veloce possibile,
compatibilmente con la sua correttezza.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Rappresentazione dell’informazione
• L’informazione è qualcosa di astratto. Per poterla manipolare bisogna
rappresentarla.
• In un calcolatore i vari tipi di informazione (testi, figure, numeri, musica,…) si
rappresentano per mezzo di sequenze di bit (cifre binarie).
• Bit è l’abbreviazione di Binary digIT, numero binario. E’ l'unità di misura
elementare dell'informazione, ma anche la base del sistema numerico
utilizzato dai computer. Può assumere soltanto due valori: 0 o 1.
• Byte è l’unità di misura dell'informazione che corrisponde ad 8 bit.
• Quanta informazione può essere contenuta in una sequenza di n bit? 2n
• ATTENZIONE: Una stessa sequenza di bit può rappresentare informazione
differente.
Per esempio “01000001”
rappresenta l’intero 65, il carattere ‘A’, il colore di un puntino sullo schermo
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Calcolatore e Informazione
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Rappresentazione dei caratteri


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Rappresentazione dei numeri


I numeri vengo rappresentati utilizzando diverse codifiche in base al tipo
• Numeri Naturali: rappresentazione in base due del numero su un certo
numero di bit
• Numeri Interi: rappresentazione binaria in modulo e segno oppure in
complemento a due
• Numeri Reali: rappresentazione in virgola fissa o virgola mobile
(sottoinsieme discreto di numeri reali)
Attenzione:
• il range di valori rappresentabili dipende dal tipo di numero e dal tipo di
rappresentazione
• non è detto che il risultato di una operazione sia rappresentabile
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Il concetto di algoritmo (I)


• Algoritmo: sequenza precisa (non ambigua) e finita di
operazioni, che portano alla realizzazione di un compito.
• Le operazioni utilizzate appartengono ad una delle seguenti
categorie:
• Operazioni sequenziali
– Realizzano una singola azione. Quando l’azione è terminata
passano all’operazione successiva.
• Operazioni condizionali
– Controllano una condizione. In base al valore della condizione,
selezionano l’operazione successiva da eseguire.
• Operazioni iterative
– Ripetono l’esecuzione di un blocco di operazioni, finchè non è
verificata una determinata condizione.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Il concetto di algoritmo (II)


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Programmare
• La formulazione testuale di un algoritmo in un
linguaggio comprensibile ad un calcolatore è detta
PROGRAMMA.
• Ricapitolando, per risolvere un problema:

– Individuazione di un procedimento risolutivo

– Scomposizione del procedimento in un insieme ordinato di


azioni – ALGORITMO

– Rappresentazione dei dati e dell’algoritmo attraverso un


formalismo comprensibile al calcolatore: LINGUAGGIO DI
PROGRAMMAZIONE
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Chi esegue i programmi? Il


calcolatore!
RETE di INTERCONNESSIONE

INTERFACCE
PROCESSORE
MEMORIA

PRINCIPALE TRASDUTTORI

Architettura di von Neumann


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

La memoria: architettura logica


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Esecuzione dei programmi


• La memoria contiene dati e programmi (istruzioni)
codificati in forma binaria
• Il processore ripete all’infinito le azioni seguenti :
– preleva una nuova istruzione dalla memoria
– la decodifica
– la esegue
• L’esecuzione di un’istruzione può comportare
• Elaborazione e/o Trasferimento (memoria ↔ processore,
I/O ↔ processore)
• Le periferiche permettono al calcolatore di
interagire con il mondo esterno
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Linguaggi di programmazione (I)


• Sono strumenti specifici per scrivere programmi
• Un linguaggio è caratterizzato da:

• SINTASSI - insieme di regole formali per la


scrittura di programmi, che fissano le modalità
per costruire frasi corrette nel linguaggio

• SEMANTICA - insieme dei significati da


attribuire alle frasi (sintatticamente corrette)
costruite nel linguaggio
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Linguaggi di programmazione (II)


• Esistono linguaggi a vari livelli di astrazione

• Linguaggio macchina sequenze di bit (difficile da leggere e capire)


0001001000110100

• Linguaggio Assembler istruzioni macchina espresse con nomi


simbolici (dipendente dalla macchina)
MOV AL 0x54

• Linguaggi ad Alto livello indipendenti dalla macchina


int main()
{

}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Le fasi della sviluppo del programma (I)


• Sviluppo di un programma (approccio compilato):

- editing: scrivere il testo e memorizzarlo su supporti di memoria permanenti


- compilazione
- linking
- esecuzione

• Compilatore: traduce il programma sorgente in programma oggetto

• ANALISI programma sorgente


- analisi lessicale
-analisi sintattica
• TRADUZIONE
- generazione del codice
-ottimizzazione del codice

• Esempi: C, C++, Pascal…


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Le fasi della sviluppo del programma (II)


• Sviluppo di un programma (approccio interpretato):

- editing: scrivere il testo e memorizzarlo su supporti di


memoria permanenti
- interpretazione
• ANALISI programma sorgente
analisi lessicale
analisi sintattica
• ESECUZIONE

• ESEMPIO: Basic, Matlab


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Il concetto di variabile
(direttamente da Wikipedia)
• In informatica, una variabile identifica una porzione di memoria
destinata a contenere dei dati, che possono essere modificati nel
corso dell'esecuzione di un programma
• Una variabile è spesso, ma non sempre, caratterizzata da un
nome
• Una costante è invece una posizione di memoria che mantiene lo
stesso valore per tutta la durata dell'esecuzione del programma.
• Nei linguaggi tipizzati, ciascuna variabile è caratterizzata da un
tipo di dato, che specifica come devono essere considerati i dati
rappresentati, e possibilmente restringe i valori accettabili.
• L'insieme delle variabili esistenti a tempo di esecuzione è
contenuto all'interno dell'ambiente.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi

Richiami di Fondamenti di Informatica


Esempi di Algoritmi
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

• In questo approfondimento si mostrano alcuni


esempi di algoritmi.
• Inoltra, si mostra un esempio di come vengono
utilizzate le variabili.
• Si ricorda agli studenti che è fondamentale avere
padronanza dei concetti discussi in questa prima
lezione di richiami di fondamenti di informatica.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Il concetto di algoritmo
• L’esecuzione delle azioni nell’ordine specificato dall’algoritmo consente di
risolvere il problema.
• Risolvere il problema significa produrre risultati a partire da dati in ingresso

algoritmo

risultati
dati
esecutore

• L’algoritmo deve essere applicabile ad un qualsiasi insieme di dati in


ingresso appartenenti al dominio di definizione dell’algoritmo (se
l’algoritmo si applica ai numeri interi deve essere corretto sia per gli interi
positivi che per gli interi negativi)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Esempi di algoritmi (I)

• Calcolo equazione ax+b = 0


- leggi i valori di a e di b
- calcola –b
- dividi quello che hai ottenuto per a e
chiama x il risultato
- stampa x
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Esempi di algoritmi (II)

•Calcolo del massimo fra due numeri


- leggi i valori di a e di b
- se
a > b stampa a
altrimenti
stampa b
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Esempi di algoritmi (II)

•Calcolo del massimo di un insieme


- scegli un elemento come massimo
provvisorio e chiamalo max
- per ogni elemento i dell’insieme:
se i>max
eleggi i come nuovo max
- il risultato è max
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Esempio di utilizzo delle variabili


Calcolo equazione ax+b = 0
- leggi i valori di a e di b
Var a,b;
a=input; b=input;
due porzioni di memoria vengono riservate per memorizzare i valori di a e b e viene scritto
in tali porzioni la codifica di tali valori.

- calcola –b
Var c; c=-b;
una porzione di memoria e’ riservata per il valore –b, opportunamente calcolato
dall’operatore – che potrebbe corrispondere ad un insieme di istruzioni macchina

- dividi quello che hai ottenuto per a e chiama x il risultato


Var x; x=a/c
una porzione di memoria è riservata per x in cui viene scritto il risultato dell’operazione di
divisione fra la variabile a e la variabile c
- stampa x
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S3
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi

Richiami di Fondamenti di Informatica


Esempi di Domande di Esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S3
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Esempi di domande di esame

• Come si rappresenta l’informazione in generale


all’interno di un calcolatore?
• Il risultato di un operazione aritmetica è sempre
rappresentabile all’interno di un calcolatore?
• Che cosa è un byte?
• Disegnare l’architettura di Von Neumann
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S3
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Esempi di domande di esame

• Cosa è un algoritmo?
• Mostrare un esempio di algoritmo.
• Cosa è una variabile?
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S3
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1

Esempi di domande di esame

• Differenza fra sintassi e semantica di un


linguaggio di programmazione.
• Differenza fra approccio compilato e
interpretato nelle fasi di sviluppo di un
programma.
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 3
#lezione#
Titolo: Linguaggio C: Prima parte
#titolo#
Attività n°: 1
#attività#

Calcolatori Elettronici e
Sistemi Operativi
Richiami di Fondamenti di Informatica:
Il Linguaggio C: Introduzione e Compilazione
Dr. Marco Faella (Università di Napoli "Federico II”)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3
Titolo: Linguaggio C: Prima parte
Attività n°: 1

• Si ringrazia il Dr. Marco Faella dell’Università


“Federico II” di Napoli per aver gentilmente
contribuito alla realizzazione delle lezioni
relative al richiamo dei concetti di base del
Linguaggio C.
• Per qualsiasi dubbio, si prega di contattare
solo il Prof. Pietro Ducange, titolare del corso
di Calcolatori Elettronici e Sistemi Operativi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3
Titolo: Linguaggio C: Prima parte
Attività n°: 1

• Si consiglia di seguire e studiare la


presente lezione e le due successive a
distanza temporale ravvicinata.
• Infatti, la presente introduce i primissimi
concetti del C (compilazione, tipi di dati,
funzioni) mentre le successive due
alternano elementi teorici ed esempi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3
Titolo: Linguaggio C: Prima parte
Attività n°: 1

• Coloro che hanno seguito il corso di


fondamenti di informatica e hanno studiato
il C++ riusciranno tranquillamente a
seguire tutti gli argomenti discusse nelle
tre lezioni di richiamo al linguaggio C.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3
Titolo: Linguaggio C: Prima parte
Attività n°: 1

• Il C consente la gestione di bit, byte e indirizzi di


memoria, a differenza di altri linguaggi di alto
livello come basic e pascal, per questo alle volte
è definito un linguaggio di medio livello, ossia
più vicino al basso livello, ossia all'assembler.
Tra l'altro ha solo 32 parole chiave, ben poche al
confronto del basic, che ne ha solitamente più di
150. Inoltre è un linguaggio portabile, ossia un
listato scritto in ANSI C può essere compilato su
ogni compilatore standard di ogni sistema
operativo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3
Titolo: Linguaggio C: Prima parte
Attività n°: 1

• I compilatori C richiedono un listato scritto in


formato testo, che si può scrivere con un editor
qualsiasi o con quello integrato nel compilatore.
Questo file di testo, che di solito ha come
suffisso .C, viene compilato e trasformato in un
file oggetto (o modulo), che ha come suffisso
.OBJ, il quale a sua volta deve essere linkato
con un linker per divenire un file eseguibile
.EXE. In questo modo si possono linkare
assieme file oggetto prodotti da vari listati in c, o
anche da linguaggi diversi, per formare
l'eseguibile unico finale.
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 3
#lezione#
Titolo: Linguaggio C: Prima parte
#titolo#
Attività n°: 1
#attività#

Contenuto dei file



I file “.c” contegono:
direttive per il pre-processore
codice sorgente

I file “.h” possono contenere:
direttive per il pre-processore
dichiarazioni di funzioni
dichiarazioni di variabili, strutture

I file “.h” NON contengono
l'implementazione delle funzioni
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 3
#lezione#
Titolo: Linguaggio C: Prima parte
#titolo#
Attività n°: 1
#attività#

Modularità

E' opportuno distribuire le funzionalità
delle applicazioni complesse in piu' file.
Semplifica lo sviluppo, il debugging ed il riuso
del codice.

L'accorpamento delle funzionalità
avviene durante la compilazione:
NON utilizzare direttive del tipo:
● #include “miofile.c”
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 3
#lezione#
Titolo: Linguaggio C: Prima parte
#titolo#
Attività n°: 1
#attività#

Compilazione

Nei sistemi Linux, la compilazione di sorgenti C
avviene utilizzando il comando gcc (GNU C
Compiler)

Per compilare il programma test1.c potrebbe
essere sufficiente eseguire:
gcc test1.c
Il nome dell'eseguibile, in questo caso, è a.out
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 3
#lezione#
Titolo: Linguaggio C: Prima parte
#titolo#
Attività n°: 1
#attività#

Compilazione

Per creare l'eseguibile, gcc attraversa varie fasi, tra cui:
preprocessing
compilazione
linking

Se l'applicazione e' distribuita in più sorgenti, può
essere sufficiente eseguire il seguente comando:
gcc -o nomefile file1.c file2.c...
In questo caso, il nome del programma eseguibile è
nomefile
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 3
#lezione#
Titolo: Linguaggio C: Prima parte
#titolo#
Attività n°: 1
#attività#

Compilazione separata

Normalmente, il compilatore esegue sia la
compilazione che il linking
● gcc -c file1.c esegue solo la compilazione,
producendo il file oggetto file1.o
● se abbiamo i file oggetto file1.o e file2.o, possiamo
“linkarli” con gcc file1.o file2.o, producendo a.out

il programma make automatizza questo processo
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S1
Titolo: Linguaggio C: Prima parte
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Richiami di Fondamenti di Informatica:
Il Linguaggio C: operatori, funzioni, blocchi
Dr. Marco Faella (Università di Napoli "Federico II”)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S1
Titolo: Linguaggio C: Prima parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S1
Titolo: Linguaggio C: Prima parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S1
Titolo: Linguaggio C: Prima parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S1
Titolo: Linguaggio C: Prima parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S1
Titolo: Linguaggio C: Prima parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S1
Titolo: Linguaggio C: Prima parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S2
Titolo: Linguaggio C: Prima parte
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi

Richiami di Fondamenti di Informatica:


Il Linguaggio C: tipi di dati
Dr. Marco Faella (Università di Napoli "Federico II”)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S2
Titolo: Linguaggio C: Prima parte
Attività n°: 1

Si prega di scaricare il file richiamiC_3.pdf che contiene


una descrizione dei principali tipi di variabili gestiti dal
linguaggio C.
Calcolatori Elettronici e Sistemi Operativi. Prof. Pietro Ducange
Richiami di Fondamenti di Informatica: Il Linguaggio C

Tipi di dati

In C esistono vari tipi di variabili, questo per venire incontro sia all'esigenze di rappresentabilità di
grossi numeri sia al maggior risparmio di memoria possibile, utilizzando di volta in volta il tipo più
adeguato ad una specifica situazione. Nella tabella seguente sono mostrati i vari tipi, con la parola
che in C ne consente l'uso (char per carattere, int per intero e così via), una spiegazione sui dati che
possono rappresentare ed il numero di byte necessari, all'interno del C, per la loro rappresentazione:

Range
Tipi di dichiarazione N. di byte
(valori min e max)
unsigned char 1 (8 bit) 0 fino 255
char 1 (8 bit) -128 fino 127
unsigned int 2 (16 bit) 0 fino 65,535
short int 2 (16 bit) -32,768 fino 32,767
int 2 (16 bit) -32,768 fino 32,767
unsigned long 4 (32 bit) 0 fino 4,294,967,295
long 4 (32 bit) -2,147,483,648 fino 2,147,483,647
float 4 (32 bit) 3.4 * (10**-38) fino 3.4 * (10**+38)
double 8 (64 bit) 1.7 * (10**-308) fino 1.7 * (10**+308)
long double 10 (80 bit) 3.4 * (10**-4932) fino 1.1 * (10**+4932)

Il tipo char è adibito a contenere uno ed un solo carattere; questa imposizione, scomoda quando
vogliamo memorizzare una successione di caratteri, è stata risolta in alcuni linguaggi adottando il
tipo string (stringa), mentre in C questa situazione viene risolta utilizzando un array di char, (ne
parleremo nel paragrafo dedicato agli array). Ritornando al nostro char, esso può contenere un
qualsiasi carattere definito secondo lo standard ASCII e quindi potrà contenere qualsiasi lettera
(maiuscola o minuscola), cifra (da 0 a 9) e simbolo previsto dalla codifica. Per dichiarare ed
inizializzare una variabile char, ad esempio inizializzandola con la lettera 'r', basta scrivere:

char a = 'r'; //dichiarazione ed inizializzazione di una variabile di tipo char

Il tipo int è, invece, quello che permette di contenere dei numeri; il tipo int ha le sue due varianti
che sono short e long, anche se in realtà un tipo int è già di per sé un tipo short, mentre il long
permette di estendere (utilizzando due byte in più) il range dei valori che il tipo int può assumere,
questo per venire incontro all'esigenza di lavorare con grandi numeri. Il tipo int contiene numeri,
appunto, interi, quelli che in matematica vengono chiamati numeri naturali, e cioè senza la virgola e
parti frazionate. Qui di seguito presentiamo un pezzo di codice in cui vengono dichiarate ed
inizializzate variabili int e, per far capire come il fatto che int rappresenti i numeri naturali comporti
una certa attenzione, verrà eseguita l'operazione di divisione tra due interi (utilizzando l'operatore di
divisione / ):
int x = 7;
int y = 3;
int z;

z = x / y; // z vale 2, cioè la parte intera della divisione tra 7 e 3

I tipi float e double sono chiamati anche numeri in virgola mobile, cioè quelli che in matematica
vengono chiamati numeri reali, e quindi possono essere usati per contenere tutti quei numeri che
hanno parti frazionarie. La differenza tra i due sta solamente nei bit che sono riservati per la loro
rappresentazione, che si va a riflettere, non solo nel range di rappresentazione, ma anche nel
numero di cifre dopo la virgola che possono essere rappresentate, in questo caso risulta, quindi, più
accurata la rappresentazione utilizzando i double. Qui di seguito presentiamo un semplice pezzo di
codice (utilizzando i double) per far vedere come, a differenza degli int, venga rappresentata la
divisione tra due numeri in virgola mobile:

double x = 7.0;
double y = 2.0;
double z;

z = x / y ; // z vale 3.5

Da notare che la notazione usata per rappresentare la virgola è quella inglese, cioè quella in cui si
usa un punto (e non una virgola) per dividere la parte intera da quelle frazionaria.

Numeri con segno e senza segno


In termini di rappresentabilità c'è da far notare che l'uso dei bit per rappresentare un determinato
tipo varia a seconda che quel tipo sia signed (con segno) o unsigned (senza segno); questo è dovuto
al fatto che se un tipo è formato, ad esempio, da 8 bit come l'intero 114, che di default è signed, si
useranno 7 bit per rappresentare il numero e 1 bit (quello più a sinistra, detto anche bit più
significativo) per rappresentare il segno (che è '+' se il bit vale 0 ed è '-' se il bit vale 1):

01110010 // rappresenta, in bit, l'intero 114


11110010 // cambiando il bit più a sinistra si ottiene l'intero -114

Mentre, se avessimo utilizzato un unsigned int, i valori sarebbero stati tutti positivi, perché anche il
bit più significativo sarebbe stato usato per rappresentare il numero:

01110010 // rappresenta, in bit, l'intero 114


11110010 // rappresenta, in bit, l'intero 242

Ammesso di avere n bit per rappresentare un numero, se è signed, allora i valori possibili saranno
compresi tra -2(n-1)+1 e 2(n-1), quindi, nel caso di una rappresentazione ad 8 bit si avrebbero valori
compresi tra -127 e 128, questo perché tra i numeri entro il range deve essere considerato anche lo
zero.
Nel caso di un unsigned, invece i valori, come già detto, sono tutti positivi e possono assumere
valori compresi tra 0 e 2n - 1, ritornando al caso degli 8 bit si avrebbero valori compresi tra 0 e 255.

Casting
Quando si lavora con tipi di dati diversi tra loro, che siano primitivi (int, char, float, ecc.) od
avanzati, può essere necessario convertire valori da un tipo ad un altro. Questa operazione si chiama
casting, ad assume il nome di coercizione (coercion) quando si forza la conversione esplicita di un
tipo ad un altro tipo, conversione magari non prevista automaticamente. In C, per convertire
esplicitamente un tipo ad un altro tipo, si usa l'operatore ( ), queste parentesi tonde prendono il
nome di operatore di cast; all'interno delle parentesi bisogna mettere il nuovo tipo al quale
vogliamo passare:

// Casting da float ad int


int numero;
float reale;

reale = 47.19;
numero = (int)reale; // vale 47

ad esempio è possibile forzare la conversione di tipo dal tipo float al tipo int, o dal tipo char al tipo
int;

// Casting da int a float


int numero;
float reale;

numero = 18;
reale = (float)numero;

// Casting da char ad int


int numero;
int lettera;

lettera = 'A';
numero = (int)lettera; // vale 65, il valore ASCII di A

alcune conversioni di tipo vengono eseguite automaticamente (casting implicito), generalmente


quando si utilizzano tipi di altro tipo come int. E' possibile, e consigliabile, utilizzare l'operatore di
casting anche quando si compiono operazioni sui valori come, ad esempio, la divisione:

int primo;
int secondo;
float ris_div;

ris_div = (float)primo / (float)secondo;

Comunque la regola dice che se si è nel dubbio bisogna sempre mettere l'operatore di cast, ovvero
bisogna sempre convertire esplicitamente i tipi. Il casting è e rimane un'operazione potente che, se
ben utilizzata, può apportare notevoli benefici ad un programma.

Tipo enumerazione
Il tipo enumerazione è abbastanza particolare, perché permette di associare a delle costanti letterali,
un valore intero; in questo modo possiamo utilizzare tali nomi per identificare il loro valore;
facciamo un esempio utilizzando i giorni della settimana:

enum giorni { lun, mar, mer, gio, ven, sab, dom } settimana;

In questo caso abbiamo definito una nuova variabile di nome "settimana" e di tipo enumerazione
"giorni"; l'identificatore "lun" assume il valore 0, "mar" assume il valore 1, e così via; in poche
parole si ha un indice iniziale "0" e gli altri assumono una numerazione progressiva. Questo ci può
essere molto utile se dobbiamo scrivere un programma che operi sui giorni della settimana (come
un calendario); se non esistesse il tipo enumerazione il programma non potrebbe assegnare alcun
"valore" ad un determinato giorno e quindi sarebbe molto più difficile (e dispendioso in termini di
codice) lavorare in tal senso.
E' possibile, però, assegnare alle costanti anche valori iniziali diversi da 0, o valori non numerici,
come spiegato nei due esempi:

// valori non numerici


enum seq_escape { suono = 'a', cancella = 'b', tab = 't', invio = 'r' };

// indice iniziale diverso da 0


enum mesi { gen = 1, feb, mar, apr, mag, giu, lug, ago, set, ott, nov, dic };

che implica "feb" uguale a 2, "mar" uguale a 3, e così via.

Tipi di dato avanzati


Strutture
Le strutture del C permettono un'aggregazione di variabili, molto simile a quella degli array, ma a
differenza di questi non ordinata e non omogenea (una struttura può contenere variabili di tipo
diverso); in modo formale una struttura è un’aggregazione di elementi di tipo arbitrario.
Per denotare una struttura si usa la parola chiave struct seguita dal nome identificativo della
struttura, che è opzionale. Nell'esempio sottostante si definisce una struttura "libro" e si crea
un'istanza di essa chiamata "biblio":

// dichiarazione della struct


struct libro
{
char titolo[100];
char autore[50];
int anno_pubblicazione;
float prezzo;
};

//dichiarazione dell'istanza biblio


struct libro biblio;

La variabile "biblio" può essere dichiarata anche mettendo il nome stesso dopo la parentesi graffa:

// dichiarazione della struct e della variabile biblio


struct libro
{
char titolo[100];
char autore[50];
int anno_pubblicazione;
float prezzo;
} biblio;

mentre è possibile pre-inizializzare i valori, alla dichiarazione, mettendo i valori (giusti nel tipo)
compresi tra parentesi graffe:

struct libro biblio = {"Guida al C", "Fabrizio Ciacchi", 2003, 45.2};

Per accedere alle variabili interne della struttura si usa l'operatore "."; una volta che si può accedere
ad una variabile interna questa può essere trattata e/o manipolata come qualsiasi altra variabile:

// assegna un valore al prezzo del libro


biblio.prezzo = 67.32;
// assegna ad una variabile int l'anno di pubblicazione del libro
int anno = biblio.anno_pubblicazione;

// stampa il titolo del libro


printf ("%s n", biblio.titolo);

Nuovi tipi di dato


Per definire nuovi tipi di dato viene utilizzata la funzione typedef. Con typedef e l'uso di struct è
possibile creare tipi di dato molto complessi, come mostrato nell'esempio seguente:

typedef struct libro


{
char titolo[100];
char autore[50];
int anno_pubblicazione;
float prezzo;
} t_libro;

t_libro guida={"Guida al C", "Fabrizio Ciacchi", 2003, 45.2};

In questo modo abbiamo definito un nuovo tipo di nome "t_libro", che non è altro che una struttura;
"guida" è la variabile creata di tipo "t_libro"; come per ogni altro tipo di dato, anche con "t_libro" si
possono creare degli array:

t_libro raccolta[5000];

e, per accedervi, o per inizializzare i valori, è sufficiente utilizzare l'indice per identificare
l'elemento dell'array ed il punto (.) per accedere alle variabili interne del tipo "t_libro";

// assegna un valore al prezzo del 341 libro


raccolta[340].prezzo = 67.32;

// assegna ad una variabile int l'anno di pubblicazione del 659 libro


int anno = raccolta[658].anno_pubblicazione;
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S3
Titolo: Linguaggio C: Prima parte
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi

Richiami di Fondamenti di Informatica:


Il Linguaggio C: Esempi di domande di esame
Dr. Marco Faella (Università di Napoli "Federico II”)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S3
Titolo: Linguaggio C: Prima parte
Attività n°: 1

Esempi di domande di Esame:


• Il linguaggio C è compilato o interpretato?
• Fare un esempio di come si dichiarano due variabili:
una di tipo double e una di tipo struct. Definire la struct
prima di dichiararla.
• Cosa è un blocco?
• Cosa si intende per visibilità di una variabile?
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Richiami di Fondamenti di Informatica:
Il Linguaggio C: Gestione I/O
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

Per utilizzare le funzioni di I/O bisogna includere la libreria


<stdio.h>

Output
printf (<stringa di formato >[,<lista di espressioni>])
si utilizzare per visualizzare dati sullo standard output
<lista di espressioni> ::= <espressione> {, <espressione>}
sono espressioni il cui valore deve essere visualizzato
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

<stringa di formato>: contiene i caratteri da visualizzare ed


i simboli di formato per i valori delle espressioni da
visualizzare:
• %d per la visualizzazione di un numero intero
• %f per la visualizzazione di un numero reale
• %c per la visualizzazione di un carattere
• %s per la visualizzazione di una stringa
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

Input
scanf (<stringa di formato> , <lista indirizzi variabili>)
consente la lettura di dati dallo standard input
<lista di indirizzi di variabili> ::= <indirizzo> {,<indirizzo>}
<indirizzo> ::= &<variabile>
<stringa di formato> (vedi printf)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

Esempi di input:

scanf (“%d %f %c”, &n, &x, &c);

scanf (“%s”, nomestringa); (una variabile che contiene


l’indirizzo del suo primo carattere)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

ATTENZIONE

• Le funzioni scanf e printf hanno sintassi simili


• Ma scanf è di input ed ha bisogno di sapere
l’indirizzo della cella in cui voglio memorizzare il
dato d’ingresso. Quindi ogni variabile (scalare)
deve essere preceduta dal simbolo &
• printf è una funzione di output ed ha bisogno di
sapere il valore della variabile e quindi non
serve &
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S1
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Richiami di Fondamenti di Informatica:
Il Linguaggio C: I puntatori
Dr. Marco Faella (Università di Napoli "Federico II”)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S1
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

Puntatori
• I puntatori sono la parte più importante della
programmazione in C, quella che permette di lavorare "a
basso livello" (cioè agendo su singole istruzioni del
processore), mantenendo però una praticità unica nel suo
genere.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S1
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

• Un puntatore è una variabile che contiene l'indirizzo di memoria


di un'altra variabile. Quando dichiariamo una variabile, a questa
verrà riservato un indirizzo di memoria, ad esempio la posizione
1000; un puntatore contiene, appunto, l'indirizzo di tale variabile
(quindi il valore 1000). L'importanza risiede nel fatto che si possono
manipolare sia il puntatore che la variabile puntata (cioè la variabile
memorizzata a quell'indirizzo di memoria).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S1
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

• Per definire un puntatore è necessario seguire la seguente sintassi:


// variabile normale
int variabile;

// puntatore
int *puntatore;

// assegno al puntatore l'indirizzo di variabile


puntatore = &variabile;

*puntatore=10;
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S1
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

• L'asterisco (*) viene chiamato operatore di indirezione


o deferenziazione e restituisce il contenuto dell'oggetto
puntato dal puntatore;
• L'operatore & restituisce l'indirizzo della variabile.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S1
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

Puntatori: Esempio
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S1
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

Funzioni: passaggio dei parametri


Il passaggio dei parametri può avvenire:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S1
Titolo: Linguaggio C: Seconda parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S1
Titolo: Linguaggio C: Seconda parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S2
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi

Richiami di Fondamenti di Informatica:


Il Linguaggio C: Controllo del flusso
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S2
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

Strutture di controllo di flusso

• Selezione if
if (<condizione>) <istruzioni> [else <istruzioni>]
<istruzioni> ::= <istruzione> | ‘{‘ <istruzione> {<istruzione>} ’}

esempio
if (x > 0)
y = x;
else
y = -x;
printf(“dato %d\n”, y);
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S2
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

Esempio di suo dell’operatore condizionale if

/* Dati due numeri in ingresso, individua il maggiore*/

#include <stdio.h>
#include <conio.h>
int main(){
int num1,num2;
printf("Immetti i due numeri:");
scanf("%d%d",&num1,&num2);
if (num1==num2) printf("I due numeri sono uguali");
else
if(num1>num2)printf("Il primo è maggiore”);
else printf("Il secondo è maggiore");
return 0;
}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S2
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

Ciclo for

for(<istr.iniziale>;<condizione>;<istr. ciclica>) <istr.>

Il ciclo for è indicato quando il modo più naturale per esprimere la condizione di
permanenza in un ciclo consiste nello specificare quante volte debbano essere
ripetuti l'istruzione o il blocco controllati dal ciclo.

Le forme tradizionali di ciclo for possono essere parafrasate come "ripeti (il codice
controllato) per i che va da un certo valore iniziale a un certo valore finale, con un
certo passo". i è in generale una variabile di tipo intero, detta contatore
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S2
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

esempio uso ciclo for:


calcolo della somma dei primi 100 numeri naturali

#include <stdio.h>
int main(){
int i, somma = 0;
for ( i=1; i<=100; i=i+1)
somma = somma+i;
printf (“La somma vale: %d\n”, somma);
return 0;
}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S2
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

• Ciclo while
while (<condizione>) <istruzioni>

Il ciclo while (mentre, o fintantoché) è indicato quando la condizione di


permanenza in un ciclo è una generica condizione booleana, indipendente dal
numero di iterazioni eseguite. Le forme tradizionali di ciclo while possono
essere parafrasate come "ripeti (il codice controllato) fintantoché resta vera la
condizione C". Un esempio tipico è la lettura di dati da un file di cui non si
conosca a priori la dimensione; esso potrebbe assumere la forma "leggi il
prossimo dato finché non incontri la fine del file"
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S2
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

Esempio uso ciclo while:


calcolo radice quadrata intera di un numero intero n

#include <stdio.h>
int main(){
int n, radice = 1;
printf (“Inserire il numero:”);
scanf (“%d”, &n);
while (radice*radice <= n)
radice++;
radice--;
printf (“La radice vale %d\n”, radice);
return 0;}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S2
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

• Ciclo do..while
do <istruzioni> while (<condizione>)

Il ciclo do..while (ripeti finché) differisce dal while perchè esso garantisce che
venga eseguita sempre almeno una iterazione del ciclo. Infatti la condizione che
controlla il ciclo viene verificata dopo aver concluso la prima iterazione.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S2
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

Esempio uso ciclo do..while

legge e addiziona dei numeri, termina quando la somma supera il valore 1000

#include <stdio.h>
int main(){
int i, somma =0, cont =0;
do{
printf (“Inserire nuovo numero:”);
scanf (“%d”, &i);
somma = somma + i;
cont++;
}while (somma <= 1000);
printf (“I numeri letti sono %d\n”,cont);
return 0;
}
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 4/S3
#lezione#
Titolo: Linguaggio C: Seconda parte
#titolo#
Attività n°: 1
#attività#

Calcolatori Elettronici e
Sistemi Operativi
Richiami di Fondamenti di Informatica:
Il Linguaggio C: esempi di domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S3
Titolo: Linguaggio C: Seconda parte
Attività n°: 1

Esempi di domande di esame:

• Cosa sono i puntatori?


• Quale è la differenza fra passaggio dei parametri per
valore e passaggio per riferimento?
• Scrivere un programma che faccia un esempio di uso
del ciclo for
• Quale è la differenza fra il ciclo while e il ciclo
do..while?
• A cosa serve la libreria <stdio.h>?
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 5
#lezione#
Titolo: Linguaggio C: Terza parte
#titolo#
Attività n°: 1
#attività#

Calcolatori Elettronici e
Sistemi Operativi
Richiami di Fondamenti di Informatica:
Il Linguaggio C:
Controllo del flusso e richiamo vettori
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5
Titolo: Linguaggio C: Terza parte
Attività n°: 1

Strutture per il controllo del flusso

• Selezione switch
<istr. switch>::=switch(<espr.>)‘{‘<istr. case>|<istr. default>’}’
<istr.case>::=case<valore intero>:{case <valore intero>:} <istr.> [break]
<istr. default>::=default <istr.>

l’istruzione switch ha delle differenze dall’if-else, infatti può essere usata solo in
alcuni casi dove:

1. Viene valutata solamente una variabile, tutte le scelte dipenderanno, infatti, da


questa variabile. La variabile deve essere un tipo int, shor, long o char;
2. Ogni singolo valore della variabile può controllare solo una scelta. Una scelta
finale, chiamata default è incaricata di catturare tutti i valori dei casi non
specificati;
Si nota che lo switch ha, inoltre, una struttura abbastanza particolare, è a cascata,
cioè se si esegue il primo caso (avendo sotto degli altri) e non si mette un break per
uscire, continua ad eseguire anche le istruzioni successive che fanno parte di altre
casistiche.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5
Titolo: Linguaggio C: Terza parte
Attività n°: 1

Esempio uso della selezione switch

Legge due numeri ed un simbolo di operazione (+,-,*,/); visualizza il risultato


dell’operazione richiesta

#include <stdio.h>
int main(){
int m,n;
char operazione;
printf (“Inserire i due numeri:”);
scanf (“%d%d”, &m,&n);
printf (“Inserire l’operazione:”);
scanf (“%c”, &operazione);
switch (operazione) {
case ‘+’:
printf(“Risultato %d\n”, m+n);
break;

….continua->
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5
Titolo: Linguaggio C: Terza parte
Attività n°: 1

….continua->

case ‘-’:
printf(“Risultato %d\n”, m-n);
break;
case ‘*’:
printf(“Risultato %d\n”, m*n);
break;
case ‘/’:
printf(“Risultato %d\n”, m/n);
break;
default:
printf(“operazione non consentita\n”);
}
return 0;}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5
Titolo: Linguaggio C: Terza parte
Attività n°: 1

Richiamo dei Vettori

• un vettore (array unidimensionale) è un insieme di


elementi dello stesso tipo
• ha un nome che lo identifica
• gli elementi del vettore vengono identificati, oltre che con il
nome del vettore di appartenenza, con il valore di un indice
numerico
• per identificare un elemento si utilizza il nome del vettore
seguito dal valore dell’indice racchiuso tra parentesi.
es. giorni_mese [3]
• il valore dell’indice può essere una qualsiasi espressione; ad
esempio
es. giorni_mese [n +3]
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5
Titolo: Linguaggio C: Terza parte
Attività n°: 1

• occorre dichiarare il tipo degli elementi e la dimensione del


vettore (in C i vettori hanno dimensione prefissata)
<tipo > <nome >‘[‘ <dimensione >‘]’
• il valore dell’indice parte da zero
• un vettore occupa locazioni contigue di memoria
• il C non effettua alcun controllo (né in fase di compilazione,
né in fase di esecuzione) sul superamento dei limiti di un
vettore
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5
Titolo: Linguaggio C: Terza parte
Attività n°: 1

Esempio uso dei vettori:

/* Programma che legge n numeri in un vettore e li visualizza in ordine inverso */


#include <stdio.h>
#define MAX 100
int main (){
int n, i, numeri[MAX ];
/* Lettura dimensione vettore */
printf (“Inserire il numero di elementi:”);
scanf (“%d”, &n);
if (n>MAX) printf (“Valore troppo elevato\n”);
else{
/* lettura dei numeri */
for (i=0; i<n; i++){
printf (“Inserire un numero:”);
scanf (“%d”, &numeri[i]);
}
/* visualizzazione dei numeri in ordine inverso */
for(i=n-1; i>=0; i--) printf (“%d\n”, numeri[i]);
}
return 0;}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5
Titolo: Linguaggio C: Terza parte
Attività n°: 1

Per approfondimenti sull’allocazione dinamica della memoria


si consiglia la lettura del seguente documento pubblicamente
disponibile su

http://it.wikipedia.org/wiki/Malloc
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S1
Titolo: Linguaggio C: Terza parte
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi

Richiami di Fondamenti di Informatica:


Il Linguaggio C: Esempi ed Esercizi
Dr. Marco Faella (Università di Napoli "Federico II”)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S1
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S1
Titolo: Linguaggio C: Terza parte
Attività n°: 1

Esempio 1
Qual’è il comportamento del seguente codice C ?

#include <stdio.h>
#include <unistd.h>

int main(void)
{
printf("Hello World!");
sleep(5);
}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S1
Titolo: Linguaggio C: Terza parte
Attività n°: 1

Esempio 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S1
Titolo: Linguaggio C: Terza parte
Attività n°: 1

Esempio 1
Alcune funzioni di I/O standard utilizzano il buffering
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S1
Titolo: Linguaggio C: Terza parte
Attività n°: 1

Prima stampa “Hello World” e poi aspetta 5 secondi prima di terminare.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S1
Titolo: Linguaggio C: Terza parte
Attività n°: 1

Esempio 2
Qual’è l'output del seguente codice C ?
#include <stdio.h>
int main(void)
{
int x,y;
x=0;
y=0;
while(x=y) x=x+1;
printf("x=%d, y=%d\n",x,y);
}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S1
Titolo: Linguaggio C: Terza parte
Attività n°: 1

Esempio 2
Qual’è l'output del seguente codice C ?
#include <stdio.h>
int main(void)
{
int x,y;
x=0;
y=0;
while(x==y) x=x+1;
printf("x=%d, y=%d\n",x,y);
}
Risposta: x=0, y=0

La condizione del while è implementata utilizzando l'operatore di


assegnazione “=” invece dell'operatore di confronto “==”
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S1
Titolo: Linguaggio C: Terza parte
Attività n°: 1

Esempio 3
Qual’è l'output del seguente codice C ?
#include <stdio.h>
int main(void)
{
int x,y;
x=0;
for(y=0; y<99; y++);
{
x = x+1;
}
printf("x=%d, y=%d\n", x, y);
}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S1
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi

Richiami di Fondamenti di Informatica:


Il Linguaggio C: Esempi ed Esercizi
Dr. Marco Faella (Università di Napoli "Federico II”)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1

Esempio 5: scanf
Qual’è il comportamento del seguente
programma?
#include <stdio.h>
int main(void)
{
int x;
char stringa[31];
printf("Inserisci un intero:");
scanf("%d", &x);
printf("Inserisci una riga di testo:");
fgets(stringa, 30, stdin);
}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1

Esempio 6: array
Qual’è l'errore in questo codice ?

#include <stdio.h>

int main(void)
{
int a[10], i;
for(i=1; i<=10; i++)
a[i] = i;
printf("a[%d]=%d\n", i, a[i]);
}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1

Esempio 6: array
Qual’è l'errore in questo codice ?

#include <stdio.h>

int main(void)
{
int a[10], i;
for(i=0; i<=9; i++)
a[i] = i;
printf("a[%d]=%d\n", i, a[i]);
}

Gli elementi in un array a con 10 elementi sono:


a[0], a[1], ... a[9]
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1

Esempio 7
Qual’è l'errore in questo codice ?

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char *stringa;
strcpy(stringa, argv[1]);
printf("%s", stringa);
return 0;
}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 5/s2
Titolo: Linguaggio C: terza parte
Attività n°: 2

Calcolatori Elettronici e
Sistemi Operativi
Richiami di Fondamenti di Informatica:
Il Linguaggio C: Conclusioni
Prof. Pietro Ducange
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 5/s2
Titolo: Linguaggio C: terza parte
Attività n°: 2

Al termine delle tre lezioni di richiamo al linguaggio C, ci si aspetta che lo studente sia
in grado di scrivere un programma in C, compilarlo e farlo eseguire.

Ovviamente, non essendo obiettivo di questo corso insegnare a programmare o


utilizzare il linguaggio C, è caldamente consigliato che lo studente abbia studiato il
corso di Fondamenti di Informatica.

L’obiettivo delle tre lezioni di richiamo al C è aiutare lo studente a ricordare concetti


che dovrebbero essere già in suo possesso.

Si ricorda che se lo studente ha studiato il C++, i concetti del linguaggio C sono molto
simili. Infatti, in linea di massima, il C++ include tutti gli elementi del linguaggio C.

Nella prossima slide si introducono alcune differenze fra C e C++


Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 5/s2
Titolo: Linguaggio C: terza parte
Attività n°: 2

Differenze fra C e C++

In C le variabili devono essere allocate sempre all’inizio del blocco che le


contiene. In C++ possono essere allocate in qualsiasi punto del programma

In C++ un'istruzione come for (int i = 0 ; i < 10 ; i++) è perfettamente valida,


mentre in C si deve dichiarare la variabile del ciclo all'inizio del blocco.

Gestione Input e Output


• in C:
– printf(“testo %d”, num);
• in C++:
– cout<<“testo”<<num;
• in C:
– scanf(“%d”,&num);
• in C++:
– cin >> num;
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 5/s2
Titolo: Linguaggio C: terza parte
Attività n°: 2

Altre differenze riguardano la gestione della memoria dinamica, le funzioni


inline, gli header, i commenti, l’overloading di funzioni.

Inoltre, il C++ è orientato agli oggetti e consente di definire tipi di dati astratti
(uso delle classi) e la gestione del polimorfismo.

Per il corso di calcolatori elettronici e sistemi operativi è sufficiente


conoscere i concetti discussi nelle due lezioni di richiami al linguaggio C.
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 5/s2
Titolo: Linguaggio C: terza parte
Attività n°: 2

Riferimento bibliografico per il linguaggio C:

Il linguaggio C. Principi di programmazione


e manuale di riferimento
di Brian W. Kernighan, Dennis M. Ritchie
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 5/s3
Titolo: Linguaggio C: terza parte
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Il Corso in Pillole
Webinar
Prof. Pietro Ducange
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 5/s3
Titolo: Linguaggio C: terza parte
Attività n°: 1

Webinar

• Si invitano gli studenti a seguire il webinar come in oggetto alla


presente lezione.

• Tutti i webinar vengono ripetuti ciclicamente durante l’anno


accademico secondo un calendario a disposizione degli studenti.

• Per maggiori informazioni sui calendari contattare i TOL o il docente.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6
Titolo: Algebra Booleana
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Algebra Booleana: introduzione e
funzioni logiche
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6
Titolo: Algebra Booleana
Attività n°: 1

Algebra binaria e Circuiti Elettronici


I calcolatori elettronici operano con segnali elettrici con valori di potenziale discreti.
Si considerano sono considerati significativi soltanto due potenziali: il valore basso
(0) o il valore alto (1).
I potenziali intermedi, che si verificano durante le transizioni di potenziale, non
vengono considerati.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6
Titolo: Algebra Booleana
Attività n°: 1

L'aritmetica binaria è stata adottata proprio perché i bit sono


rappresentabili tramite elementi elettronici che consentono di
distinguere i 2 stati del potenziale elettrico.
Come detto in precedenza, il valore di potenziale alto (2-5V)
viene associato al valore 1 e il valore di potenziale basso (0-0.8V)
viene associato al valore 0.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6
Titolo: Algebra Booleana
Attività n°: 1

Il funzionamento dei circuiti elettronici può essere


modellato tramite lʼAlgebra di Boole.

Le operazioni logiche Booleane sono somma (OR), prodotto (AND) e


inversione
(NOT) logica:
– OR (A+B): risultato uguale ad 1 (true) se almeno un operando vale 1
(true)
– AND (A⊕B): risultato uguale ad 1 (true) solo se tutti gli operandi sono
1 (true)
– NOT (~A): risultato uguale allʼinverso del valore dell’operando (0 1
oppure 1 0)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6
Titolo: Algebra Booleana
Attività n°: 1

Vi sono diverse proprietà dell’algebra booleana che sono utili per manipolare
equazioni logiche:

- Proprietà di identità: A+0=A e A⋅1=A


- Proprietà di assorbimento: A+1=1 e A⋅0=0
- Proprietà dell’inverso: A+(~A)=1 e A⋅(~A)=0
- Proprietà commutativa: A+B=B+A e A⋅B=B⋅A
- Proprietà associativa: A+(B+C)=(A+B)+C e A⋅ (B⋅C)=(A⋅B) ⋅C
- Proprietà distributiva: A⋅(B+C)= (A⋅B)+(A⋅C) e A+(B⋅C)=(A+B) ⋅(A+C)
- Teorema di De Morgan: ~ (A⋅B) = (~ A)+( ~ B) e ~ (A+B) = (~ A) ⋅( ~ B)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6
Titolo: Algebra Booleana
Attività n°: 1

Funzioni Logiche
Una funzione logica f = [0,1]N -> [0,1]M è definita solo sul dominio digitale (i valori
sono solo 0 ed 1) ed è completamente specificata :

- Da una tabella di verità

oppure

- Da una equazione logica

La funzione logica descrive una blocco funzionale con N ingressi ed M uscite binarie.
Chiameremo questo blocco funzionale Rete Logica.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S1
Titolo: Algebra Booleana
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Algebra Booleana: tabelle di verità
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S1
Titolo: Algebra Booleana
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S1
Titolo: Algebra Booleana
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S1
Titolo: Algebra Booleana
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S1
Titolo: Algebra Booleana
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S2
Titolo: Algebra Booleana
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Algebra Booleana
Note storiche e approfondimenti
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S2
Titolo: Algebra Booleana
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S2
Titolo: Algebra Booleana
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S2
Titolo: Algebra Booleana
Attività n°: 1

Per approfondimenti sull’algebra booleana si consiglia la pagina ufficiale di


Wikipedia:

http://it.wikipedia.org/wiki/Algebra_di_Boole
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S3
Titolo: Algebra Booleana
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Algebra Booleana: : Esempi di
domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S3
Titolo: Algebra Booleana
Attività n°: 1

Possibili domande di esame:

1) Cosa è un bit? Come è relazionato con


l’algebra booleana ?

1) Quali sono le operazioni logiche


fondamentali dell’algebra booleana?
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S3
Titolo: Algebra Booleana
Attività n°: 1

3) Elencare le proprietà dell’algebra


booleana

3) Scrivere tabelle di verità ed equazioni


logiche delle operazioni logiche
fondamentali
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7
Titolo: Il sistema fisico
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Introduzione alle Reti Logiche:
Il sistema fisico
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7
Titolo: Il sistema fisico
Attività n°: 1

Il sistema fisico
• Si ringrazia il Prof. Giovanni Stea per il
sostanziale contributo alla realizzazione
delle slide relative al modulo di Reti
Logiche.
• Gli studenti e i tutor sono tenuti a
contattare solo il prof. Ducange, titolare
del corso, per eventuali chiarimenti sul
materiale relativo al modulo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7
Titolo: Il sistema fisico
Attività n°: 1

Il sistema fisico
Si supponga di avere il seguente sistema fisico:

Le due scatolette comunicano tramite un filo elettrico.


Nella scatoletta di sinistra si ha la possibilità di impostare una tensione tra 0V e
5Vs, variandola nel tempo, e nella scatoletta di destra si ha la possibilità di
osservare una lampadina.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7
Titolo: Il sistema fisico
Attività n°: 1

Il sistema fisico
Si supponga che un osservatore nella scatola di destra sia in grado di decidere
che:

• se la tensione impostata sul filo è tra 0V e 0.8V, allora la lampada è spenta;


• se la tensione è tra 2V e 5V, allora la lampada è accesa;
• se la tensione è nel mezzo tra i due intervalli, l’osservatore qualche volta
decide che è spenta e qualche volta che è accesa (l’osservatore prende
sempre una decisione).

Del sistema fisico in questione interessa solo descrivere solo questo aspetto di
trasmissione – ricezione.

Questo sistema fisico, cioè reale, è modellabile (descrivibile, rappresentabile)


tramite un modello astratto chiamato rete logica.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7
Titolo: Il sistema fisico
Attività n°: 1

Il sistema fisico

La figura mostra un esempio di rete logica in cui esistono:

• due sottoreti, dette Tx (di trasmissione) ed Rx (di ricezione), la cui


composizione interna non mi interessa (in questo momento)
• una variabile logica w che le connette (di uscita rispetto a Tx, di ingresso
rispetto ad Rx).

Una variabile logica è una variabile che può assumere due valori, distinti tra
loro. I due valori che una variabile logica assume vengono, per consuetudine,
codificati con i simboli ‘0’ ed ‘1’, detti anche bit o cifre binarie.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7
Titolo: Il sistema fisico
Attività n°: 1

Il sistema fisico
Più in generale, una rete logica è un modello astratto di un sistema fisico,
quest’ultimo costituito da dispositivi tra loro interconnessi. Tali dispositivi si
scambiano informazioni codificate. Le informazioni sono codificate tramite
fenomeni fisici che si presentano ad un osservatore in due aspetti distinti. Ad
esempio:
• corrente forte, corrente debole
• tensione alta, tensione bassa
• perforazione di una zona di un foglio di carta, assenza di perforazione
• magnetizzazione positiva/negativa di un’areola di materiale ferromagnetico

In particolare, durante il corso useremo questo tipo di modello per descrivere i
circuiti elettronici che formano i sistemi di elaborazione dell’informazione.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S1
Titolo: Introduzione alle Reti Logiche
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Introduzione alle Reti Logiche:
Il Sistema Fisico e descrizione funzionale
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S1
Titolo: Introduzione alle Reti Logiche
Attività n°: 1

• Si ringrazia il Prof. Giovanni Stea per il


sostanziale contributo alla realizzazione delle
slide relative al modulo di Reti Logiche.
• Gli studenti e i tutor sono tenuti a contattare solo
il prof. Ducange, titolare del corso, per eventuali
chiarimenti sul materiale relativo al modulo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S1
Titolo: Introduzione alle Reti Logiche
Attività n°: 1

Si supponga di avere il seguente sistema fisico:

Le due scatolette comunicano tramite un filo elettrico.


Nella scatoletta di sinistra si ha la possibilità di impostare una tensione tra 0V e
5Vs, variandola nel tempo, e nella scatoletta di destra si ha la possibilità di
osservare una lampadina.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S1
Titolo: Introduzione alle Reti Logiche
Attività n°: 1

Si supponga che un osservatore nella scatola di destra sia in grado di decidere


che:

• se la tensione impostata sul filo è tra 0V e 0.8V, allora la lampada è spenta;


• se la tensione è tra 2V e 5V, allora la lampada è accesa;
• se la tensione è nel mezzo tra i due intervalli, l’osservatore qualche volta
decide che è spenta e qualche volta che è accesa (l’osservatore prende
sempre una decisione).

Del sistema fisico in questione interessa solo descrivere solo questo aspetto di
trasmissione – ricezione.

Questo sistema fisico, cioè reale, è modellabile (descrivibile, rappresentabile)


tramite un modello astratto chiamato rete logica.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S1
Titolo: Introduzione alle Reti Logiche
Attività n°: 1

La figura mostra un esempio di rete logica in cui esistono:

• due sottoreti, dette Tx (di trasmissione) ed Rx (di ricezione), la cui composizione interna
non mi interessa (in questo momento)
• una variabile logica w che le connette (di uscita rispetto a Tx, di ingresso rispetto ad Rx).

Una variabile logica è una variabile che può assumere due valori, distinti tra loro. I due valori
che una variabile logica assume vengono, per consuetudine, codificati con i simboli ‘0’ ed
‘1’, detti anche bit o cifre binarie.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S1
Titolo: Introduzione alle Reti Logiche
Attività n°: 1

Più in generale, una rete logica è un modello astratto di un sistema fisico,


quest’ultimo costituito da dispositivi tra loro interconnessi. Tali dispositivi si
scambiano informazioni codificate. Le informazioni sono codificate tramite
fenomeni fisici che si presentano ad un osservatore in due aspetti distinti. Ad
esempio:
• corrente forte, corrente debole
• tensione alta, tensione bassa
• perforazione di una zona di un foglio di carta, assenza di perforazione
• magnetizzazione positiva/negativa di un’areola di materiale ferromagnetico

In particolare, durante il corso useremo questo tipo di modello per descrivere i
circuiti elettronici che formano i sistemi di elaborazione dell’informazione.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S1
Titolo: Introduzione alle Reti Logiche
Attività n°: 1

Descrizione funzionale di una rete logica

Una rete logica è caratterizzata da:


• un insieme di N variabili logiche di ingresso. L’insieme degli N valori assunti
all’istante t dalle variabili di ingresso si chiama stato di ingresso. L’insieme di
tutti i possibili stati di ingresso (2N) verrà indicato con
• un insieme di M variabili logiche di uscita. L’insieme degli M valori assunti
all’istante t dalle variabili di uscita si chiama stato di uscita. L’insieme di tutti i
possibili stati di uscita (2M) verrà indicato con
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S1
Titolo: Introduzione alle Reti Logiche
Attività n°: 1

Inoltre, una rete logica è caratterizzata da una legge di


evoluzione nel tempo, che descrive come le uscite evolvono
in funzione degli ingressi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S1
Titolo: Introduzione alle Reti Logiche
Attività n°: 1

Classificazione delle reti logiche


Le reti logiche si classificano in base a due criteri, entrambi
riguardanti il tipo di legge di evoluzione nel tempo:
• presenza/assenza di memoria
• temporizzazione della legge di evoluzione
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S1
Titolo: Introduzione alle Reti Logiche
Attività n°: 1

Classificazione in base alla presenza/assenza di memoria


Le reti logiche si dividono in:

• reti combinatorie: sono quelle reti in cui lo stato di uscita dipende soltanto
dallo stato di ingresso. Ad un certo stato di ingresso corrisponde uno ed un
solo stato di uscita. Analogia con il concetto di funzione matematica.

• reti sequenziali: in cui lo stato di uscita dipende dalla storia degli stati di
ingresso precedenti. Ad un certo stato di ingresso può corrispondere uno
stato di uscita od un altro, a seconda della storia passata. Queste ultime
sono reti con memoria, in quanto per decidere quale sia l’uscita hanno
bisogno di ricordare il passato.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S1
Titolo: Introduzione alle Reti Logiche
Attività n°: 1

Classificazione in base alla temporizzazione della legge di evoluzione

La legge che fa corrispondere le uscite agli ingressi può essere resa operativa
in ogni istante, oppure messa in pratica ad istanti discreti nel tempo.
Nel primo caso, le uscite sono continuamente adeguate agli ingressi.
Nel secondo caso, la rete “dorme”, e “si sveglia” soltanto in certi istanti,
adeguando lo stato di uscita allo stato di ingresso presente in quei dati istanti.

Si distinguono a tale proposito:


• reti asincrone, in cui l’aggiornamento delle uscite avviene continuamente
nel tempo;
• reti sincronizzate, in cui l’aggiornamento delle uscite avviene ad istanti (di
sincronizzazione) separati nel tempo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S1
Titolo: Introduzione alle Reti Logiche
Attività n°: 1

Una rete logica è inserita all’interno di un mondo in cui qualcuno imposta dei valori
logici sulle variabili di ingresso e qualcun altro legge i valori logici delle variabili
d’uscita.

Quale sia l’interpretazione che viene data a tali variabili è una cosa che non ci
interessa a questo livello, al pari del fenomeno fisico con il quale l’informazione
viene scambiata.

Il modello consente quindi di astrarre dalla fisica del sistema, e dal contorno del
sistema.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S2
Titolo: Transizioni dei segnali
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Introduzione alle Reti Logiche:
transizioni dei segnali
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S2
Titolo: Transizioni dei segnali
Attività n°: 1

Approfondimenti sul concetto di Modello di rete logica

Un modello è un modo, normalmente semplificato, di descrivere alcuni aspetti di


una realtà complessa.
• Esempio preso dalla fisica: il punto materiale è un modello (semplice) di un
sistema fisico (complesso), utile per descrivere alcune proprietà del moto del
sistema stesso.

• Esempio preso dall’elettrotecnica: un circuito a parametri concentrati è un


modello nel quale si suppone che gli effetti resistivi, capacitivi, induttivi, siano
localizzati in alcuni componenti invece che diffusi su tutti i conduttori.

In particolare, tutte le volte che si modella qualcosa, si trascurano alcuni aspetti


della realtà.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S2
Titolo: Transizioni dei segnali
Attività n°: 1

Transizioni dei segnali

In figura si mostra una possibile evoluzione nel tempo della variabile logica. La
variabile logica può stare soltanto in due stati, 0 ed 1, e quindi le sue transizioni
sono istantanee.
Si mostra, inoltre, anche la corrispondente variazione della tensione ad un capo del
filo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S2
Titolo: Transizioni dei segnali
Attività n°: 1

Transizioni dei segnali

Si stabilisce che:
• all’istante t0 la variabile logica w si setta, oppure transisce ad 1, etc.
• all’istante t1 la variabile logica w si resetta, oppure transisce a 0, etc.

Mentre in un modello astratto si può pensare che una variabile logica cambi
istantaneamente ad un dato istante, una tensione non cambia istantaneamente
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S2
Titolo: Transizioni dei segnali
Attività n°: 1

In realtà quello che succede nel sistema fisico è questo:


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S2
Titolo: Transizioni dei segnali
Attività n°: 1

In realtà quello che succede nel sistema fisico è questo:


La grandezza fisica, per un certo tempo Dt, rimane nella fascia di
indeterminazione, in quella fascia cioè in cui non appartiene a nessuno dei
due intervalli di tensione associati ad uno dei due valori logici. Quindi, l’istante
in cui la variabile logica cambia valore è noto con una certa incertezza.

Nei sistemi fisici che si modellano come reti logiche, il tempo per il quale le
grandezze fisiche che si modellano come variabili logiche variano è molto
minore del tempo nel quale restano a regime. Sotto questa ipotesi, un modello
in cui le variabili logiche cambiano stato in maniera istantanea, pur se
approssimato, è comunque un buon modello.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S2
Titolo: Transizioni dei segnali
Attività n°: 1

Contemporaneità
Si consideri una semplice rete logica a due ingressi ed una uscita

L'insieme dei possibili ingressi è


L'uscita ovviamente può valere
Si suppone che prima dell’istante t1 lo stato di ingresso presente sia, ad esempio,
(1,0), e che all’istante t1 lo stato di ingresso diventi (0,1).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S2
Titolo: Transizioni dei segnali
Attività n°: 1

Contemporaneità
Ciò che secondo me accade in ingresso Ciò che la rete potrebbe vedere

Problema:
Non si può garantire che due grandezze fisiche varino contemporaneamente.
Se, quindi, si basa un ragionamento sull’ipotesi che due variabili di ingresso
varino contemporaneamente, poi non si potrà mai costruire un sistema fisico
che verifichi questa ipotesi.
Pertanto, bisogna evitare di supporre che due variabili di ingresso varino
contemporaneamente.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S2
Titolo: Transizioni dei segnali
Attività n°: 1

Contemporaneità
Non è possibile che in una realizzazione fisica di un sistema si presentino in
sequenza due stati di ingresso che differiscono tra loro per più di un bit.

Se prima dell’istante t1 è presente lo stato di ingresso (10), e dopo è presente


lo stato di ingresso (01), vuol dire necessariamente che, per un certo
intervallo di tempo, la rete ha visto in ingresso uno stato di ingresso
intermedio (11 o 00).

Soluzione:
Nel descrivere l’evoluzione temporale di una rete asincrona, dovremo quindi
preoccuparci del fatto che gli stati di ingresso siano vincolati a cambiare un bit
alla volta. In altre parole si dovrà sempre supporre che stati di ingresso
consecutivi siano adiacenti. (adiacenti significa che differiscono di un solo
bit).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S2
Titolo: Transizioni dei segnali
Attività n°: 1

Contemporaneità

Altro problema:
I due ingressi potrebbero variare in modo molto ravvicinato nel tempo.
Potrebbe succedere che, a causa delle variazioni di impedenza dei contatti, ed
a causa del fatto che le reti non sono oggetti ideali, due transizioni troppo
ravvicinate vengano risentite dalla rete nell’ordine opposto rispetto a quello
che io penso di aver imposto.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S3
Titolo: Esempi di domande di esame:
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Introduzione alle Reti Logiche: Esempi
di domane di esame
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S3
Titolo: Esempi di domande di esame:
Attività n°: 1

Esempi di domande di esame:


• Descrivere una rete logica a livello
funzionale.
• Come si classificano le reti logiche?
• Quale è la differenza fra reti sincrone ed
asincrone?
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S3
Titolo: Esempi di domande di esame:
Attività n°: 1

Esempi di domande di esame:


• Cosa è la fascia di indeterminazione del
segnale ?
• Cosa significa settare e resettare una
variabile logica?
• Descrivere il problema della
contemporaneità.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S1
Titolo: Introduzione alle Reti Combinatorie
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Introduzione alle Reti Combinatorie:
Descrizione strutturale,
attraversamento e pilotaggio
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S1
Titolo: Introduzione alle Reti Combinatorie
Attività n°: 1

In figura si mostra un esempio di rete combinatoria con N ingressi ed M uscite.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S1
Titolo: Introduzione alle Reti Combinatorie
Attività n°: 1

L’uscita viene aggiornata continuamente. Ciò vuol dire che la rete è sempre
sensibile a ciò che succede in ingresso.
L’uscita dipende soltanto dallo stato di ingresso presente in quel momento.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S1
Titolo: Introduzione alle Reti Combinatorie
Attività n°: 1

Una rete combinatoria è caratterizzata da:

• un insieme di N variabili logiche di ingresso.


• un insieme di M variabili logiche di uscita.
• Una descrizione funzionale del tipo F: X->Z, che mappa quindi uno stato
di ingresso in uno stato di uscita. Questa legge stabilisce il comportamento
della rete, quindi dare questa legge significa dare la specifica di cosa faccia
la rete.
• Una legge di evoluzione nel tempo che stabilisce continuamente: detto X
lo stato di ingresso, imposta lo stato di uscita ad F(X).

Una rete combinatoria lavora continuamente, cioè è sempre in evoluzione (è


infatti una rete di tipo asincrono).

Lo stato di ingresso può cambiare in qualunque momento.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S1
Titolo: Introduzione alle Reti Combinatorie
Attività n°: 1

Primo esempio di rete combinatoria: Inverter

Particolare rete logica combinatoria con un ingresso ed


un’uscita (N=1, M=1), quindi: X={0,1}, Z={0,1} .

La legge di corrispondenza che regola il comportamento


dell'inverter, data a parole, è:
“Se l’ingresso è zero, l’uscita è uno e viceversa”.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S1
Titolo: Introduzione alle Reti Combinatorie
Attività n°: 1

Una rete combinatoria continuamente elabora lo stato di


ingresso per produrre uno stato di uscita.

In ogni sistema fisico (ad esempio, nei dispositivi elettronici


che formano i sistemi di elaborazione), una variazione negli
ingressi viene a manifestarsi in uscita dopo un tempo finito
(es: carica di un condensatore).

Si parla di questo tempo dicendo che una rete logica ha un


tempo di attraversamento (di accesso, di risposta)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S1
Titolo: Introduzione alle Reti Combinatorie
Attività n°: 1

Tempo di attraversamento: intercorre fra l'istante in cui un ingresso cambia di


stato e l'istante in cui l'uscita cambia il suo stato, in accordo con la legge che
regola la rete.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S1
Titolo: Introduzione alle Reti Combinatorie
Attività n°: 1

Dire che una rete logica ha un tempo di attraversamento di


20ns significa dire che lo stato di uscita si sarà adeguato ad
un cambiamento dello stato di ingresso dopo 20ns che lo
stato di ingresso sarà stato cambiato.

Si dice, in tal caso, che la rete logica va a regime dopo 20 ns


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S1
Titolo: Introduzione alle Reti Combinatorie
Attività n°: 1

Quando una rete è a regime, è pronta ad assorbire una


nuova variazione dello stato di ingresso. In particolare,
chi pilota questa rete deve evitare di variare lo stato di
ingresso più velocemente del tempo di risposta della
rete.

Una rete in cui gli ingressi cambiano in modo tale che


la rete riesca ad andare a regime dopo ogni
cambiamento dello stato di ingresso si dice pilotata in
modo fondamentale
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S2
Titolo: Descrizione funzionale
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Introduzione alle Reti Combinatorie:
Descrizione funzionale
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S2
Titolo: Descrizione funzionale
Attività n°: 1

Descrizione funzionale

Una rete combinatoria si descrive indicando:


• quanti sono gli ingressi;
• quante sono le uscite;
• qual è la funzione F, cioè la descrizione
funzionale
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S2
Titolo: Descrizione funzionale
Attività n°: 1

Descrizione funzionale
La descrizione funzionale può essere data in diversi modi:

• A parole, come visto nell'esempio dell'inverter;

• Utilizzando linguaggi di descrizione (come per esempio il


Verilog), che hanno una propria sintassi, e che servono ad
assistere il progettista di sistemi di elaborazione;

• Sfruttando l’algebra di Boole;

• In maniera immediata utilizzando le tabelle di verità.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S2
Titolo: Descrizione funzionale
Attività n°: 1

Esempio di rete logica descritta con tabella di verità

La presenza di una riga in questa tabella significa che, per lo stato di ingresso
(100), in uscita è presente – a regime – lo stato di uscita (11).

Si dice che la variabile di uscita z1 riconosce gli stati di ingresso (010), (011),
(100), (101), e che la variabile di uscita z0 riconosce (001), (100), (101).

Ovviamente, nella parte sinistra della tabella ci devono essere tutti i possibili
stati di ingresso.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S2
Titolo: Descrizione funzionale
Attività n°: 1

Esempio di rete logica descritta con tabella di verità

In alcuni casi, al progettista potrebbe non interessare quale


valore assuma una variabile di uscita in corrispondenza di un
particolare stato di ingresso.

Magari il progettista è sicuro che un certo stato di ingresso


non si potrà presentare.

In questi casi, si evita di specificare un valore per le variabili


di uscita nei casi suddetti, inserendo un trattino in
corrispondenza del valore di uscita che non voglio specificare.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S2
Titolo: Descrizione funzionale
Attività n°: 1

Esempio di rete logica descritta con elementi non


specificati

Il simbolo indicato dal trattino si chiama “non specificato”, e non è un valore


logico. Non specificato significa che non interessa – adesso – decidere
quale valore assumerà la variabile logica di uscita. Resta inteso che
assumerà comunque valore 0 o 1.
In molti casi, evitare di specificare il valore di una variabile di uscita rende più
semplice sintetizzare la rete, cioè realizzarla con un sistema fisico
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Esempi di domande di esame
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Esempi di domande di esame:

• Che cosa è una rete combinatoria?

• Da cosa è caratterizzata una rete combinatoria?

• Cosa sono la descrizione funzionale e la legge di


evoluzione nel tempo?

Caricare le risposte alle precedenti 3


domande sull’ePortfolio.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Esempi di domande di esame:

• Cosa si intende per tempo di attraversamento?

• Quando una rete combinatoria si dice a regime?

• Cosa significa rete combinatoria pilotata in modo


fondamentale?

• Descrivere l'inverter.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9
Titolo: Reti a zero ed un ingresso
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Combinatorie Elementari
Reti a zero ed un ingresso
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9
Titolo: Reti a zero ed un ingresso
Attività n°: 1

“Una rete combinatoria ad N ingressi ed M uscite può essere realizzata


interconnettendo M reti combinatorie ad N ingressi ed una uscita”.

Data questa proprietà, ci si può limitare a considerare soltanto reti con


un’uscita. Tanto, qualunque rete con più uscite può essere scomposta.
Questo significa anche che reti logiche più complesse possono essere
realizzate mettendo insieme sottosistemi più semplici.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9
Titolo: Reti a zero ed un ingresso
Attività n°: 1

Reti a zero ingressi

Sono reti senza ingressi con una uscita che assume valore 1 o valore 0.
Dal punto di vista fisico, si realizzano connettendo l’uscita alla tensione di
riferimento VCC (1) o a massa (0).
Quindi sono “reti” per modo di dire. Basta un filo connesso ad una tensione.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9
Titolo: Reti a zero ed un ingresso
Attività n°: 1

Reti ad un ingresso
Inverter:

Questa rete è stata già discussa nella precedente lezione


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9
Titolo: Reti a zero ed un ingresso
Attività n°: 1

Reti ad un ingresso
Elemento Neutro:

Serve a:
• a generare ritardo (utile per le temporizzazioni)
• a rigenerare i segnali elettrici degradati.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9
Titolo: Reti a zero ed un ingresso
Attività n°: 1

Reti ad un ingresso
Generatori di costanti

Sono due casi degeneri di reti che generano in uscita sempre uno o sempre
zero. Attenzione, in questo caso accettano degli ingressi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S1
Titolo: Porte AND, XOR. NAND, OR, NOR
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Combinatorie Elementari:
Porte AND, XOR. NAND, OR, NOR
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S1
Titolo: Porte AND, XOR. NAND, OR, NOR
Attività n°: 1

Porte logiche elementari a due ingressi

Porta AND
x0 x1 z
0 0 0
0 1 0
1 0 0
1 1 1

L’uscita vale 1 solo se entrambi gli ingressi valgono 1.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S1
Titolo: Porte AND, XOR. NAND, OR, NOR
Attività n°: 1

Porte logiche elementari a due ingressi

Porta XOR
x0 x1 z
0 0 0
0 1 1
1 0 1
1 1 0

L’uscita vale 1 solo se gli ingressi sono diversi.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S1
Titolo: Porte AND, XOR. NAND, OR, NOR
Attività n°: 1

Porte logiche elementari a due


ingressi
Porta OR
x0 x1 z
0 0 0
0 1 1
1 0 1
1 1 1

L’uscita vale 1 solo se almeno un ingresso vale 1.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S1
Titolo: Porte AND, XOR. NAND, OR, NOR
Attività n°: 1

Porte logiche elementari a due ingressi


Porta NOR
x0 x1 z
0 0 1
0 1 0
1 0 0
1 1 0

L’uscita vale 0 solo se almeno un ingresso vale 1.


La legge di corrispondenza è equivalente a quella che si ottiene applicando un
invertitore in cascata ad una porta OR.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S1
Titolo: Porte AND, XOR. NAND, OR, NOR
Attività n°: 1

Porte logiche elementari a due ingressi


Porta NAND
x0 x1 z
0 0 1
0 1 1
1 0 1
1 1 0

L’uscita vale 0 solo se entrambi gli ingressi valgono 1.


La legge di corrispondenza è equivalente a quella che si ottiene applicando
un invertitore in cascata ad una porta AND
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S2
Titolo: Esempi di reti a più ingressi
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Combinatorie Elementari
Esempi a più ingressi
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S2
Titolo: Esempi di reti a più ingressi
Attività n°: 1

Reti Combinatorie Elementari


Esempi a più ingressi
Si può pensare di estendere la funzione logica espressa dalle
porte AND e OR al caso di N ingressi.

• AND ad N ingressi: l’uscita vale 1 se e solo se tutti gli


ingressi valgono 1
• OR ad N ingressi: l’uscita vale 1 se e solo se almeno un
ingresso vale 1

Detto questo, si possono realizzare porte di questo genere


per mezzo di porte AND ed OR a 2 ingressi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S2
Titolo: Esempi di reti a più ingressi
Attività n°: 1

Porte logiche elementari a più ingressi

Realizzazione Porta AND con tre ingressi


x2 x1 x0 y z

0 0 0 0 0

0 0 1 0 0

Y 0 1 0 0 0

0 1 1 0 0

1 0 0 0 0

1 0 1 0 0

1 1 0 1 0

1 1 1 1 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S2
Titolo: Esempi di reti a più ingressi
Attività n°: 1

Porte logiche elementari a più ingressi

Realizzazione Porta AND con quattro ingressi


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S2
Titolo: Esempi di reti a più ingressi
Attività n°: 1

Porte logiche elementari a più ingressi


Realizzazione Porta AND con quattro ingressi: metodo
migliore

Il numero di porte AND utilizzato è lo stesso (3), ma nel secondo caso il segnale
di ingresso deve attraversare 2 livelli di logica invece di 3. Quindi, il tempo di
attraversamento della seconda rete è minore del tempo di attraversamento
della prima.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S2
Titolo: Esempi di reti a più ingressi
Attività n°: 1

Porte logiche elementari a più ingressi

In generale, un AND ad N ingressi si fa con N-1 AND a 2


ingressi, disposti ad albero bilanciato, in quanto in questa
disposizione il numero di livelli di logica che il segnale deve
attraversare è minimo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S2
Titolo: Esempi di reti a più ingressi
Attività n°: 1

Porte logiche elementari a più ingressi


Realizzazione Porta AND con otto ingressi
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S2
Titolo: Esempi di reti a più ingressi
Attività n°: 1

Porte logiche elementari a più ingressi


Realizzazione Porta OR con otto ingressi (stesso metodo
delle porte AND)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S2
Titolo: Esempi di reti a più ingressi
Attività n°: 1

Porte logiche elementari a più ingressi


In commercio esistono anche AND ed OR a più di 2 ingressi.
Per rappresentare graficamente porte con un numero elevato di ingressi, si usa
spesso questa simbologia:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S3
Titolo: Reti Combinatorie Elementari
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche

Reti Combinatorie Elementari


Esempi di domande di esame
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S3
Titolo: Reti Combinatorie Elementari
Attività n°: 1

Esempi di domande di Esame:


• Descrizione funzionale e tabella di verità di una porta logica elementare
(inverter, and, xor, or, nand…)

• Come si realizza una porta AND a più ingressi?

• Esistono in commercio reti, realizzate dal punto vi vista elettronico, con piu di
due ingressi?
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S3
Titolo: Reti Combinatorie Elementari
Attività n°: 1

Esempi di domande di Esame:


Es 1
Si consideri una porta XOR a due ingressi, e la relativa tabella di verità. Si dispongano ad
albero un certo numero di porte XOR, e si calcoli quale sia la funzione logica calcolata da un
tale montaggio, che generalizza quella di una porta XOR a due ingressi. Si dia una
dimostrazione formale (per induzione sul numero di livelli dell’albero) della relazione trovata.

Soluzione: Mettere più porte XOR in cascata (eventualmente ad albero) consente di fare
circuiti che riconoscono stati di ingresso con un numero dispari (pari) di 1 (dimostrare
per induzione sul numero di livelli dell’albero).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S3
Titolo: Reti Combinatorie Elementari
Attività n°: 1

Esempi di domande di Esame:


Es 2
Dimostrare (tramite un opportuno esempio) che connettendo ad albero porte
NAND (oppure NOR) a due ingressi non si ottiene una generalizzazione della
funzione logica descritta per porte a due ingressi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10
Titolo: Il Decoder
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Combinatorie Significative: il decoder
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10
Titolo: Il Decoder
Attività n°: 1

Il Decoder

È una rete con N ingressi e p uscite, con p=2N.

La sua legge di corrispondenza è la seguente: “ogni uscita riconosce uno ed


un solo stato di ingresso, in particolare l’uscita j-sima riconosce lo stato di
ingresso i cui bit sono la codifica di j in base 2, cioè se
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10
Titolo: Il Decoder
Attività n°: 1

Esempio: Decoder 2 to 4, descrizione con


tabella di verità
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10
Titolo: Il Decoder
Attività n°: 1

Esempio: Decoder 2 to 4, descrizione con algebra booleana e


circuiti logici elementari
Si consideri l'uscita z3

Tale uscita è quindi il prodotto logico delle variabili di ingresso

Si consideri l'uscita z2

Tale uscita è quindi il prodotto logico della variabile x1 e della variabile x0


complementata
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10
Titolo: Il Decoder
Attività n°: 1

Esempio: Decoder 2 to 4, descrizione con algebra booleana e circuiti


logici elementari
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10
Titolo: Il Decoder
Attività n°: 1

Esempio: Decoder 2 to 4, realizzazione circuitale

Come si puo notare, nella figura a sinistra ci sono 4 inverter, mentre in quella
a destra ci sono solo due inverter.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10
Titolo: Il Decoder
Attività n°: 1

Esempio: Decoder 2 to 4, realizzazione circuitale


In generale, in un decoder N to 2N ogni uscita è il prodotto di tutti gli N
ingressi, diretti o complementati. Tutti i possibili stati di ingresso sono
riconosciuti da una ed una sola uscita. La legge di corrispondenza, scritta per
ogni uscita sotto forma di espressione booleana, è la seguente:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10
Titolo: Il Decoder
Attività n°: 1

Esempio: Decoder 2 to 4, realizzazione circuitale


In generale, la realizzazione di un decoder richiede tante porte AND (ad N
ingressi) quante sono le uscite (2N), e tanti invertitori quanti sono gli ingressi (N).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10
Titolo: Il Decoder
Attività n°: 1

Esempio: Realizzazione di decoder 1 to 2

Questo è un caso degenere, che non richiede logica.


Infatti:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S1
Titolo: il decoder espandibile
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Combinatorie Significative:
il decoder espandibile
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S1
Titolo: il decoder espandibile
Attività n°: 1

Il Decoder espandibile

Il decoder descritto in precedenza non è espandibile. Non è cioè possibile


costruire decoder grandi combinando decoder più piccoli. Per questo motivo,
esistono decoder dotati di un ingresso aggiuntivo, detto di abilitazione (enabler).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S1
Titolo: il decoder espandibile
Attività n°: 1

Il Decoder espandibile

ll decoder con enabler ha N+1 ingressi e 2N uscite.


La sua descrizione funzionale è, a parole, la seguente: “se l’ingresso di
enabler è 1, la rete si comporta come un decoder N to 2N. Altrimenti,
tutte le uscite sono a 0”.
In pratica, l’ingresso di abilitazione “accende” il decoder.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S1
Titolo: il decoder espandibile
Attività n°: 1

Il Decoder espandibile: sintesi

Si consideri un decoder senza enabler e si indichino con y0…yp-1 le sue uscite

Ciascuna uscita zi del decoder con


enabler sara’descritta come segue:

Si ottiene immediatamente che: zi =yie


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S1
Titolo: il decoder espandibile
Attività n°: 1

Il Decoder espandibile: sintesi poco furba

Si mettono 2N porte AND a 2 ingressi in più!!!!!


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S1
Titolo: il decoder espandibile
Attività n°: 1

Il Decoder espandibile: sintesi furba

Considerando le equazioni booleane che descrivono il decoder con enabler


(riguardare quelle del decoder classico e la formula per il calcolo di zi), si capisce
che basta aggiungere un ingresso ad ogni AND dell'enabler classico.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S2
Titolo: Reti Combinatorie Significative
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Combinatorie Significative:
Demultiplexer e Multiplexer
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S2
Titolo: Reti Combinatorie Significative
Attività n°: 1

Demultiplexer (Demux)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S2
Titolo: Reti Combinatorie Significative
Attività n°: 1

Demultiplexer (Demux)
Da un semplice esercizio (che si invita gli studenti a svolgere),
si ha che la tabella di verità del demultiplex risulta essere:

A ben guardare, la descrizione


funzionale è identica a quella di un
decoder con enabler, salvo aver
dato un nome diverso alle variabili.
Infatti, “decoder con enabler” e
“demultiplexer” sono due modi diversi
di chiamare la stessa rete.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S2
Titolo: Reti Combinatorie Significative
Attività n°: 1

Multiplexer (Mux)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S2
Titolo: Reti Combinatorie Significative
Attività n°: 1

Multiplexer (Mux): sintesi


Si consideri un decoder N to 2N , e gli si da
come ingresso le variabili di comando. Ciascuna
delle 2N uscite del decoder si attiverà in
corrispondenza di una configurazione delle
variabili di comando.

Quindi, si può mettere in AND a ciascuna uscita


una delle variabili di ingresso.
In questo modo si ottengono 2N variabili logiche,
che hanno la seguente proprietà:
• tutte meno una sono sicuramente nulle.
• quell’unica che non sono sicuro che sia nulla
(sia la j-sima) vale quanto vale xj.

Mettendo le 2N uscite delle porte AND in


ingresso ad una porta OR si ottiene la sintesi
finale del multiplexer.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S2
Titolo: Reti Combinatorie Significative
Attività n°: 1

Multiplexer (Mux): sintesi furba


Andando a guardare come è realizzato un decoder, si osserva che nella sintesi fatta
sopra ci sono due porte AND in cascata. Come già osservato nelle lezioni precedenti,
si possono compattare in una AND a N+1 ingressi. Quindi, l’unica complessità in più è
aver aggiunto una porta OR a 2N ingressi in fondo.

La strada più lunga da un ingresso


ad un’uscita (in questo caso sono tutte
uguali) transita attraverso due porte
(una AND ed una OR, non contando le
NOT).

Un multiplexer è quindi una rete a due


livelli di logica.

Le porte AND e OR contano per un


livello, le porte NOT non vengono
contate.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S2
Titolo: Reti Combinatorie Significative
Attività n°: 1

Multiplexer: rete combinatoria universale

È facile rendersi conto che un multiplexer con N variabili di comando è in grado


di realizzare qualunque legge combinatoria di N ingressi ed un’uscita.
Infatti, basta connettere ai 2N ingressi dei generatori di costante (che, in pratica,
vuol dire attaccare i piedini di ingresso a tensione o a massa) in maniera
opportuna.

Per ogni riga j della tabella di verità, se l’uscita vale 1 attacco l’ingresso xj a Vcc,
altrimenti lo attacco a massa.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S2
Titolo: Reti Combinatorie Significative
Attività n°: 1

Multiplexer: rete combinatoria universale

Bisogna considerare delle conseguenze molto importanti legate al fatto che il


multiplexer sia una rete combinatoria universale.
• Un multiplexer si realizza con porte AND, OR, NOT, ed è una rete a due livelli di
logica.
• Un multiplexer realizza una qualunque rete combinatoria ad un’uscita.
• Una rete combinatoria a più uscite può essere scomposta in reti ad un’uscita
messe “in parallelo”.

Se segue che:

Ogni rete combinatoria può essere costruita combinando AND, OR,


NOT in al più due livelli di logica
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S3
Titolo: Reti Combinatorie Significative
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Combinatorie Significative
Esempi domande di esame
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S3
Titolo: Reti Combinatorie Significative
Attività n°: 1

Esempi di domande di esame:


• Definizione e sintesi circuitale di un decoder 2 to 4

• Differenza fra sintesi furba e sintesi poco furba di un decoder 2 to 4

• Definizione di un decoder con enabler

• Che differenza c'é fra un decoder con enabler e un demultiplexer?


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S3
Titolo: Reti Combinatorie Significative
Attività n°: 1

Esempi di domande di esame:


• Sintesi circuitale di un demultiplexer

• Definizione e sintesi circuitale di un multiplexer

• Cosa significa che un multiplexer è una rete combinatoria universale?

• Sintesi circuitale di una generica rete combinatoria, definita da una


tabella di verità, utilizzando un multiplexer.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Sintesi di reti logiche combinatorie con
mappe di Karnaugh: Introduzione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Sintesi di reti in forma SP (somma di prodotti) a costo minimo

Un po’ di nomenclatura:
• forma SP perché l’uscita z è ottenuta come somma di prodotti
• forma canonica perché ogni prodotto contiene tutti gli ingressi diretti
o negati
• ciascuno dei termini della somma si chiama mintermine, e
corrisponde ad uno stato di ingresso riconosciuto dalla rete.

Esistono due criteri di costo:


• criterio di costo a porte: ogni porta conta per un’unità di costo.
• criterio di costo a diodi: ogni ingresso conta per un’unità di costo.

Quindi, una porta AND a 2 ingressi è equivalente ad una porta AND a 10


ingressi in accordo al primo criterio, costa cinque volte meno in accordo
al secondo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Esempio: Tabella di verità e sua forma SP canonica (fatta da una lista di


mintermini)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Esempio: Tabella di verità e sua forma SP canonica (fatta da una lista


di mintermini)

Una rete in forma canonica SP non è detto che sia a costo minino. Spesso è
possibile ottenere delle reti descritte sempre in forma SP a costo ridotto.

Si può ottenere infatti una descrizione, sempre in forma SP, fatta da una lista
degli implicanti.
Ciascun termine di questa lista è detto implicante.

Un implicante è il prodotto di alcune variabili di ingresso dirette o negate che


riconosce alcuni stati di ingresso.

Un mintermine è un caso particolare di implicante che contiene tutte le variabili


di ingresso.

Un implicante è detto principale se non è in grado di fondere con nessun altro


implicante
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Mappe di Karnaugh
Le mappe di Karnaugh sono un altro modo di rappresentare le leggi combinatorie,
che presenta alcuni vantaggi rispetto alle tabelle di verità, soprattutto quando si
deve cercare la sintesi di costo minimo.
Una mappa di Karnaugh per una rete ad N ingressi è una matrice di 2N celle
multidimensionali.
Ciascuna cella contiene il valore della variabile di uscita per un particolare stato di
ingresso.

• Ogni cella è individuata da uno stato di ingresso, che ne costituisce le


coordinate in RN
• Ogni cella contiene il valore dell’uscita corrispondente a quello stato di ingresso.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Mappe di Karnaugh: Esempi


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Mappe di Karnaugh: Esempi

Importantissimo:
Le mappe di Karnaugh vanno immaginate disegnate su superfici “sferiche”.
Ciò che si trova all’estrema destra è contiguo a ciò che si trova all’estrema
sinistra. Ciò che si trova all’estremo superiore è contiguo a ciò che si trova
all’estremo inferiore.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Mappe di Karnaugh: al massimo di ordine 4!!!!

Il difetto delle mappe di Karnaugh è che non è possibile mettere più di due
variabili su un asse mantenendo la proprietà vista sopra (cioè che tutte e
sole le celle le cui coordinate differiscono per un bit siano adiacenti sulla
mappa
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Sintesi di reti logiche combinatorie con
mappe di Karnaugh: Sottocubi e implicanti
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Mappe di Karnaugh
Qualche definizione:
• Sottocubo di ordine 1: una casella che contiene un 1, corrispondente quindi ad
uno stato di ingresso riconosciuto dalla rete.
• Coordinate di un sottocubo di ordine 1: valore dello stato di ingresso che
corrisponde al sottocubo
• Adiacenza tra sottocubi di ordine 1: due sottocubi di ordine 1 si dicono
adiacenti se differiscono tra loro per una sola coordinata (avendo le altre N-1
coordinate identiche).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Mappe di Karnaugh
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Mappe di Karnaugh
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Mappe di Karnaugh
Si può, ovviamente, iterare il ragionamento per costruire sottocubi di ordine 4 (ed
eventualmente più grandi, anche se non con questo esempio).
• Ad esempio, i sottocubi C ed F, entrambi di ordine 2, sono adiacenti.
• Quindi fondono a generare un sottocubo di ordine 4, che chiamiamo H. Anche C e D
fondono per generare un sottocubo di ordine 4, il sottocubo G.
• I sottocubi G ed H coprono tutti gli stati riconosciuti dalla rete.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Mappe di Karnaugh
Altre definizioni:

• Sottocubo principale: un sottocubo tale per cui non esiste nessun sottocubo
più grande che lo copre completamente. Nell esempio precedente, G ed H
sono sottocubi principali.
• Lista di copertura: insieme (qualunque) di sottocubi che coprono tutti i sottocubi
di ordine 1, che includono, cioè, tutte le caselle della mappa che contengono un
1. G ed H sono una lista di copertura.
• Lista di copertura irridondante: tale che se viene rimosso un sottocubo non è
più una lista di copertura.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Mappe di Karnaugh
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Algoritmo per la ricerca di sottocubi principali


o Si parte dai sottocubi di ordine più grande che si trovano sulla mappa, e si
segnano tutti. Tali sottocubi, per definizione, non sono contenuti in nessun
sottocubo di ordine maggiore, e quindi sono senz’altro principali.
o Domanda: l’insieme dei sottocubi che considerati basta a coprire tutta la mappa?
-Se sì, ho finito.
o Se no, si passa ai sottocubi di ordine inferiore. Si devono considerare tutti, tranne
quelli che sono (ovviamente) già coperti da quelli già considerati al passo
precedente.
o Domanda: l’insieme dei sottocubi considerati basta a coprire tutta la mappa?
Se sì, ho finito.
o Se no, si passa ai sottocubi di ordine inferiore e cosi via.

L’algoritmo termina sicuramente, perché male che vada avrò bisogno dei sottocubi di
ordine 1 per coprire l’intera mappa.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Esempio: ricerca sottocubi principali

In questo caso, non mi bastano i tre sottocubi di ordine 4 A,B,C, perché resta
scoperto uno stato riconosciuto dalla rete (0100). Devo considerare anche tutti i
sottocubi di ordine 2, tranne quelli già coperti da sottocubi di ordine 4. Quindi
devo aggiungere anche D. In questo modo ottengo la lista degli implicanti
principali.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Esercizio: Data la seguente tabella di verità , trovare la lista degli


implicanti principali

Continua…
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

…continua
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

…continua

Vista la corrispondenza fra cuboidi e implicanti possiamo definire la lista di


copertura come la lista di implicanti, la cui somma è una forma SP per la
funzione f che descrive una certa rete logica.

Se una lista di copertura è ridondante, si potrebbere togliere uno o più


implicanti ed avere un ancora una lista di copertura. Togliere un implicante
significa togliere una porta AND ed un ingresso all’OR finale, quindi significa
andare verso una rete di costo minore, quale che sia il criterio adottato.

La lista degli implicanti principali può essere ridondante. Quindi, si


fornisce di seguito un algoritmo per ridurla ad una forma non ridondante.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

…continua
L’algoritmo è il seguente: si parte dalla mappa di Karnaugh sulla quale si sono
disegnati gli implicanti (i sottocubi) principali e si nota quanto segue:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

…continua
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1

Attenzione – molto importante da ricordare


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S2
Titolo: sintesi a costo minimo
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Sintesi di reti logiche combinatorie con
mappe di Karnaugh: sintesi a costo minimo
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S2
Titolo: sintesi a costo minimo
Attività n°: 1

sintesi a costo minimo


Si prega di scaricare il documento ListeDiCoperturaNonRidondanti.pdf

La prima parte del documento mostra come effettuare la ricerca delle liste di
copertura non ridondanti, con un esempio completo di sintesi di rete logica con
mappe di Karnaugh.

La seconda parte mostra un esempio di sintesi di rete logiche in cui esistono dei
valori degli ingressi a cui non sono associati delle uscite (uscite non specificate).

Si consiglia gli studenti di approfondire questi due esercizi in quanto in sede di


esame ne saranno proposti di analoghi.
Ricerca delle liste di copertura non ridondanti
Prof. Giovanni Stea, Università di Pisa

Vediamo un esempio più complesso (xxxx):


x3x2 Ricerca dei sottocubi principali: ce n’è uno di
x1x0 00 01 11 10
A ordine 4 (A), e poi devo passare a quelli di ordine 2
00 1 (B,C,D)
Sottocubi essenziali: A e D, che formano il cuore
C
01 1 B 1 1 della mappa.
D
11 1 1 Qualunque lista di coperture irridondante deve
contenere A e D
10 1

Si spuntano tutti i sottocubi di ordine 1 contenuti in


x3x2 sottocubi principali essenziali. In questo caso, non
x1x0 00 01 11 10
A abbiamo coperto interamente nessun altro
00 1 sottocubo principale. Quindi, non esistono sottocubi
assolutamente eliminabili.
C
01 1 B 1 1

D I sottocubi che rimangono (B e C) si chiamano


11 1 1 semplicemente eliminabili.

10 1

A questo punto, per ottenere la lista di costo minimo devo:


c) generare tutte le possibili liste di copertura non ridondanti che
- includono tutti i sottocubi principali essenziali
- non includono nessun sottocubo principale assolutamente eliminabile
- includono un sottoinsieme di sottocubi principali semplicemente eliminabili
d) tra tutte queste, valuto quella di costo minimo applicando il criterio di costo voluto.

La strada per andare avanti è la seguente: prendo in considerazione un qualunque sottocubo


semplicemente eliminabile, e formulo due ipotesi diverse:
1. lo considero come se fosse essenziale (è chiaro che non lo è, in realtà), e quindi lo
aggiungo alla lista di copertura. In conseguenza di questo, qualche altro sottocubo
diventa assolutamente eliminabile
2. lo considero come se fosse assolutamente eliminabile (è chiaro che non lo è, in realtà), e
quindi lo tolgo da qualunque lista di copertura. Come conseguenza di questo, qualche
altro sottocubo diventa essenziale.

Finché ho sottocubi semplicemente eliminabili, vado avanti tenendo conto di tutti i possibili
scenari. Ad ogni nuovo passo, formulo due nuove ipotesi relativamente ad un sottocubo
semplicemente eliminabile. Partendo dal cuore della mappa, posso creare un albero di decisioni
binario, alle foglie del quale ci sono tutte le possibili liste di copertura non ridondanti. Tra tutte
queste, sceglierò quella di costo minimo.
Nel nostro caso, proviamo a prendere in esame il sottocubo B:
x3x2 x3x2
x1x0 00 01 11 10 x1x0 00 01 11 10
A A
00 1 00 1

C C
01 1 B 1 1 01 1 1 1

D D
11 1 1 11 1 1

10 1 10 1

Se considero B come essenziale, C diventa Se considero B come assolutamente eliminabile,


assolutamente eliminabile, in quanto C diventa essenziale, in quanto è l’unico
interamente coperto da B e D. sottocubo a coprire un sottocubo di ordine 1.

La scelta dà origine al seguente albero binario.

{ A, D, B} + x2 ⋅ x1 ⋅ x0
{ A, D} z = x3 ⋅ x2 + x3 ⋅ x2 ⋅ x0
{ A, D, C} + x3 ⋅ x1 ⋅ x0

La lista di copertura di costo minimo si ottiene confrontando tutte le possibili realizzazioni ottenute
in questa maniera, usando il criterio a diodi o a porte. Nel nostro caso, sono del tutto equivalenti.

Vediamo un esempio più complesso (sempre la tabella di verità scritta all’inizio):


x3x2 D x3x2 D
x1x0 00 01 11 10 x1x0 00 01 11 10

00 1 00 1

E E
01 1 B 1 01 1 B 1
C C

A A
11 1 1 11 1 1

10 F 1 1 1 10 F 1 1 1

Sottocubi essenziali: soltanto A, che è il Non ci sono sottocubi assolut. eliminabili.


cuore della mappa. Tutti i sottocubi rimasti sono semplicemente
eliminabili.

Consideriamo il sottocubo semplicemente eliminabile E, ed applichiamo l’algoritmo.


1. Se considero E come se fosse essenziale, C diventa assolutamente eliminabile
2. Se considero E come se fosse assolutamente eliminabile, C e B diventano essenziali.
x3x2 D
x3x2 D x1x0 00 01 11 10
x1x0 00 01 11 10

00 1
00 1
{ A, E}
E
01 1 1
01 1 B 1 { A}
B
C

A
{ A, C , B}
A 11 1 1
11 1 1

10 F 1 1 1
10 F 1 1 1

Andiamo avanti secondo la prima ipotesi, cioè che E sia essenziale (figura di sinistra). Tolto C, non
ho più implicanti assolutamente eliminabili. Devo quindi fare un’altra ipotesi. La faccio su D.
- se D è essenziale, B ed F sono assolutamente eliminabili
- se D è assolutamente eliminabile, B ed F sono essenziali
In entrambi i casi, ho trovato una lista di copertura.

{ A, E , D}
{ A, E}
{ A, E , B, F }
{ A}
{ A, C , B}
Mettiamoci nella seconda ipotesi, cioè che il cuore della mappa sia A, C, B. A questo punto, se D è
essenziale, F è assolutamente eliminabile e viceversa.

{ A, E , D}
{ A, E}
{ A, E , B, F }
{ A}
{ A, C , B, D}
{ A, C , B}
{ A, C , B, F }
A questo punto, ho tutte le liste di copertura non ridondanti per la mappa (le foglie dell’albero
binario). Tra queste, c’è la lista di costo minimo. Per trovare quale sia, devo applicare il criterio di
costo. In questo caso particolare, ho B, C, D, E, F che hanno tutti lo stesso costo (sono infatti
sottocubi dello stesso ordine), quindi si vede subito che la lista di copertura di costo minimo è {A,
E, D}.
Quindi:

z = x3 ⋅ x1 + x2 ⋅ x1 ⋅ x0 + x3 ⋅ x2 ⋅ x0

x3

x2

x1

x0

AND AND AND

v3 v2 v1
z
OR
Quella scritta sopra è la realizzazione di costo minimo per la rete la cui tabella di verità abbiamo
scritto all’inizio.

Osservazione: Dove è che intervengono i criteri di costo (a porte o a diodi)? Nello scegliere quale,
tra tutte le liste di copertura non ridondanti trovate, sia quella di costo minore. Quindi, il
procedimento per trovare le liste di copertura non ridondanti è identico, quale che sia il criterio di
costo.
Data una rete con N ingressi, e scelta una realizzazione con N s sottocubi, ciascuno di dimensione

D j , 1 ≤ j ≤ N s , le formule per i costi sono:

- costo a porte: CP = N s + 1
N
- (
costo a diodi: CD = N s + ∑ j =S1 N − log 2 D j )

Osservazione: Il risultato finale non dipende da quale sottocubo si considera volta per volta ad
ogni passo dell’algoritmo. In tutti i casi, verranno prodotte tutte le possibili liste di copertura non
ridondanti. Si deve, però, stare attenti, a far sì che ad ogni passo non si generino liste non
ridondanti. Ad esempio:

E
{ A, C , E}
{ A, C}
C
{ A}
~C

{ A, E}
In questo caso non posso inserire E dopo aver inserito C, altrimenti ottengo una lista ridondante.
Sintesi di leggi non completamente specificate –

decodificatore BCD a 7 segmenti


Prof. Giovanni Stea, Università di Pisa

Un decodificatore BCD a 7 segmenti è una rete che ha 4 variabili di ingresso, che vanno
interpretate come la codifica in base 2 di una cifra decimale, e produce 7 uscite, che vanno ad
accendere i segmenti di un display a cristalli liquidi che illumina la cifra data in ingresso.

zG A
zF F B
x3 G
zE
x2
BCD Decoder zD
x1 E C
zC D
x0
zB
zA

BCD sta per Binary Coded Decimal, ed è un modo per rappresentare i numeri naturali (ne
vedremo altri quando parleremo di aritmetica), tipico delle calcolatrici tascabili con display LCD.
Con tale tipo di rappresentazione, ciascuna cifra decimale viene rappresentata su 4 bit.
Abbiamo visto che la sintesi a costo minimo per una rete con M uscite si affronta un’uscita alla
volta. Prendiamo a riferimento l’uscita zE, e sintetizziamo la rete di costo minimo che la realizza.
J x3 x2 x1 x0 zE x3x2
0 0 0 0 0 1 x1x0 00 01 11 10

1 0 0 0 1 0
2 0 0 1 0 1 00 1 0 - 1
3 0 0 1 1 0
4 0 1 0 0 0
01 0 0 - 0
5 0 1 0 1 0
6 0 1 1 0 1
7 0 1 1 1 0 11 0 0 - -
8 1 0 0 0 1
9 1 0 0 1 0
? 1 0 1 0 - 10 1 1 - -
? 1 0 1 1 -
? 1 1 0 0 -
? 1 1 0 1 -
? 1 1 1 0 -
? 1 1 1 1 -
Si vede subito che non mi interessa cosa succeda quando in ingresso si presenta uno stato che
codificherebbe un numero naturale >9, in quanto nelle ipotesi di funzionamento gli unici stati di
ingresso possibili sono quelli relativi a cifre da 0 a 9. Quindi, non ha senso chiedersi quanto valga
l’uscita, o meglio, non ha senso volerlo decidere adesso. Mi riservo di assegnare all’uscita il
valore che più mi converrà, nell’ottica di ottenere la rete di costo minimo. Per dire questo, metto
nella tabella di verità, e nella mappa di Karnaugh che le corrisponde, un non specificato.
Vediamo come si affronta la sintesi in questo caso.
x3x2
x1x0 00 01 E 11 10
Ricerca degli implicanti principali:
considero i valori non specificati come degli 00 1 0 - 1 C
1, in quanto mi fa comodo ottenere implicanti A

più grandi.
01 0 0 - 0
Ce la faccio con 5 implicanti di ordine 4,
proprio grazie al fatto di aver considerato i B
11 0 0 - -
non specificati come 1.
D
10 1 1 - -

x3x2
x1x0 00 01 E 11 10
Ricerca degli implicanti essenziali: mi
preoccupo di riconoscere soltanto gli stati 00 1 0 - 1 C
effettivamente corrispondenti ad un 1 (che è A

come dire: tratto i non specificati come se


01 0 0 - 0
fossero 0). Pertanto, solo C e D sono
essenziali. Di A, B ed E non mi interessa B
11 0 0 - -
niente.
D
10 1 1 - -

La rete di costo minimo in forma SP che realizza l’uscita desiderata è, quindi:

zE = x2 ⋅ x0 + x1 ⋅ x0
x2
AND zE
x0 OR

AND
x1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S3
Titolo: Esempi di domande di esame:
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Sintesi di reti logiche combinatorie con
mappe di Karnaugh: Domande di esame
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S3
Titolo: Esempi di domande di esame:
Attività n°: 1

Esempi di domande di esame:


• Cosa significa sintesi in forma SP in forma canonica?

• A cosa servono le mappe di Karnaugh?

• Cosa sono i sottocubi?

• Differenza fra mintermini, implicanti e implicanti principali?


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S3
Titolo: Esempi di domande di esame:
Attività n°: 1

Esempi di domande di esame:


Nel test scritto proposto durante l’esame potrebbe essere richiesto di sintetizzare
reti logiche usando le mappe di Karnaugh.

Scaricare i file es1.pdf ed es2.pdf come esempio per gli esercizi. Nel file es2, ignorare
il punto 2.

Inoltre, numerosi esercizi possono recuperati on line. Ecco alcuni esempi:

http://unielettronica.altervista.org/materiale/elettronica/pdf001.pdf
http://fermi.mo.it/~loar/mysito/DownLoad/elettronica3/Le%20Mappe%20di%20Karnaugh.pdf
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12
Titolo: Sintesi a porta Nand e Nor
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Porte Logiche Universali
Sintesi a porta Nand e Nor
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12
Titolo: Sintesi a porta Nand e Nor
Attività n°: 1

Sintesi a porta Nand e Nor


Le porte NAND e NOR sono dette porte logiche universali. Infatti, ogni porta logica può
essere fatta usando esclusivamente porte NAND (o usando esclusivamente porte NOR).

Porta Logica Realizz. Con Nand Realizz. con or


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12
Titolo: Sintesi a porta Nand e Nor
Attività n°: 1

Sintesi a porte NAND


Si supponga di avere una rete logica sintetizzata a due livelli di logica SP (a
sinistra)

A destra si mostra la procedura per ottenere una sintesi a sole porte NAND
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12
Titolo: Sintesi a porta Nand e Nor
Attività n°: 1

Sintesi a porte NAND

Data una sintesi SP di un circuito, la sintesi a porte NAND che gli corrisponde ha lo
stesso costo, sia a diodi che a porte (nel costo non si contano gli invertitori sugli
ingressi)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12
Titolo: Sintesi a porta Nand e Nor
Attività n°: 1

Sintesi a porte NAND


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12
Titolo: Sintesi a porta Nand e Nor
Attività n°: 1

Sintesi a porte NOR


Per effettuare una sintesi a porte NOR è necessario avere una rete logica in cui
l'uscita è descritta come prodotti di somme.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12
Titolo: Sintesi a porta Nand e Nor
Attività n°: 1

Sintesi a porte NOR


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12
Titolo: Sintesi a porta Nand e Nor
Attività n°: 1

Sintesi a porte NOR


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12
Titolo: Sintesi a porta Nand e Nor
Attività n°: 1

Sintesi a porte NOR


Si supponga di avere una rete logica sintetizzata a due livelli di logica PS (a
sinistra)

A destra si mostra la procedura per ottenere una sintesi a sole porte NOR
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12
Titolo: Sintesi a porta Nand e Nor
Attività n°: 1

Sintesi a porte NOR

Data una sintesi SP di un circuito, la sintesi a porte NOR che gli corrisponde ha lo
stesso costo, sia a diodi che a porte (nel costo non si contano gli invertitori sugli
ingressi)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S1
Titolo: Esercizio di esame completo
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Porte Logiche Universali:
Esercizio completo di esame
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S1
Titolo: Esercizio di esame completo
Attività n°: 1

Esercizio completo di esame


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S1
Titolo: Esercizio di esame completo
Attività n°: 1

Sintesi a porte NAND


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S1
Titolo: Esercizio di esame completo
Attività n°: 1

Sintesi a porte NAND


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S1
Titolo: Esercizio di esame completo
Attività n°: 1

Sintesi a porte NAND


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S1
Titolo: Esercizio di esame completo
Attività n°: 1

Sintesi a porte NAND


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S1
Titolo: Esercizio di esame completo
Attività n°: 1

Sintesi a porte NOR


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S1
Titolo: Esercizio di esame completo
Attività n°: 1

Sintesi a porte NOR


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S1
Titolo: Esercizio di esame completo
Attività n°: 1

Sintesi a porte NOR


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S1
Titolo: Esercizio di esame completo
Attività n°: 1

Sintesi a porte NOR


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S2
Titolo: Porte Tri-state
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Porte Tri-state
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S2
Titolo: Porte Tri-state
Attività n°: 1

Porte Tri-state
In molti casi, fa comodo poter connettere insieme le uscite delle reti.
Ad esempio, in figura a sinistra si mostra un bus condiviso, su cui possono
connettersi le uscite di reti diverse e impostare ad un dato valore. Ovviamente,
non lo possono fare contemporaneamente, ma dovranno fare a turno.
Nella figura di destra, si mostra un esempio di linee che servono, in tempi
diversi, come ingressi ed uscite ad una data rete (ad esempio, le linee dati
rispetto alla memoria RAM).

Poiche le reti logiche sono dei circuiti elettronici, ci potrebbero essere dei
problemi elettrici quando si collegano fra loro due o più uscite.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S2
Titolo: Porte Tri-state
Attività n°: 1

Porte Tri-state
In figura si mostra un modello elettrico semplificato, ma ragionevole, di cosa
succede su un’uscita: un’uscita è un generatore di tensione in serie ad una
piccola resistenza.

Quando l’uscita vale 1, sull’uscita c’è la stessa tensione di alimentazione.


Quando l’uscita vale 0, sull’uscita c’è la tensione di riferimento (massa). Le
due resistenze R0 ed R1 sono di norma molto piccole. Che succede se
connetto insieme due uscite?
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S2
Titolo: Porte Tri-state
Attività n°: 1

Porte Tri-state
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S2
Titolo: Porte Tri-state
Attività n°: 1

Porte Tri-state
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S2
Titolo: Porte Tri-state
Attività n°: 1

Porte Tri-state
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S2
Titolo: Porte Tri-state
Attività n°: 1

Porte Tri-state
Fin qui si è visto cosa succede quando ci sono due uscite connesse sulla stessa
linea. In realtà, ce ne potrebbero essere più di due. In quel caso, il problema
peggiora: che succede se N-1 valgono 0 ed 1 vale 1? Qual è il livello elettrico in
uscita? Potrò mai garantire che i livelli elettrici siano sempre corretti, quale che sia la
configurazione delle uscite?

Lo stesso problema si verifica quando si hanno delle linee di ingresso-uscita. Se


sono uscite, si comportano come quelle scritte sopra. Se sono ingressi, sono uscite
per qualche altra rete, e quindi si verificano gli stessi problemi.

Per poter gestire configurazioni del genere, è necessario disporre di apparati capaci
di disabilitare le uscite, cioè di disconnettere fisicamente un’uscita da una linea
condivisa. Tali apparecchi prendono il nome di porte tri-state.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S2
Titolo: Porte Tri-state
Attività n°: 1

Porta tri-state

Quando b vale 1 la porta tri-state si comporta come un elemento neutro.


Quando b vale 0, l’uscita è (come se fosse) disconnessa dal resto della rete. Si
dice in tal caso che l’uscita si trova in alta impedenza.

Quando la porta si trova in alta impedenza, qualunque tensione venga applicata


sull’uscita, non scorrerà comunque corrente (o ne scorrerà una quantità
trascurabile).

Quando ci sono N uscite collegate insieme, su ogni uscita deve essere


presente una porta tri-state. Ad ogni istante, almeno N-1 porte devono trovarsi in
alta impedenza.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S2
Titolo: Porte Tri-state
Attività n°: 1

Porta tri-state
Esempio: multiplexer decodificato

• Se tutte le variabili di comando valgono 0, l’uscita è in alta impedenza.


• Altrimenti, una sola variabile di comando deve essere ad 1, nel qual caso l’uscita
insegue l’ingresso corrispondente
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S2
Titolo: Porte Tri-state
Attività n°: 1

Porta tri-state
Esempio: rete con linea di ingresso-uscita
Si supponga che la variabile d sia utilizzata sia come ingresso sia come uscita

• Quando ENB vale 0 la variabile d viene utilizzata come ingresso


• Quando ENB vale 1 la variabile d viene utilizzata come uscita
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 12/S2
Titolo: Porte Logiche Universali
Attività n°: 2

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Sintesi a porte NAND (NOR) e porte tri-state:
Domande di esame
Prof. Pietro Ducange
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 12/S2
Titolo: Porte Logiche Universali
Attività n°: 2

Esempi di domande di esame

• Perché porte NAND e NOR sono dette universali?

• Sintetizzare le porte AND, OR, NOT utilizzando le porte universali.

• Esempio di sintesi a porte NAND (NOR) da sintesi SP (PS).

• Differenza fra sintesi SP e PS


Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 12/S2
Titolo: Porte Logiche Universali
Attività n°: 2

Esempi di domande di esame

• Saper risolvere un esercizio come nella seconda attivita’di questa lezione

• Tabella di verità di una porta tri-state

• Fare un esempio di utilizzo di una porta tri-state


Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 12/S3
Titolo: Porte Logiche Universali
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Didattica Interattiva: Mappe Concettuali
Prof. Pietro Ducange
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 12/S3
Titolo: Porte Logiche Universali
Attività n°: 1

Mappe Concettuali

Si invita lo studente a realizzare una mappa concettuale che sintetizzi la tematica relativa
alle reti combinatorie.

Lo studente troverà all’interno della piattaforma di studio eCampus una specifica


esercitazione relativa a questa attività didattica interattiva.

Per maggiori informazioni su come realizzare mappe concettuali e su come utilizzare gli
appositi strumenti messi a disposizione dalla piattaforma di studio di invita lo studente a
consultare la guida dello studente e/o contattare il proprio TOL.

In allegato alla presente sessione di studio, lo studente può trovare un estratto del
manuale eCampus che introduce le mappe concettuali e lo strumento CMAP.
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 12/S3
Titolo: Porte Logiche Universali
Attività n°: 1

Mappe Concettuali

Si invita lo studente a caricare sul proprio ePortfolio, in formato PDF, la


versione finale della mappa concettuale realizzata.

Lo studente è libero di utilizzare qualsiasi strumento per la


realizzazione della mappa, l’importante è effettuare un caricamento
della medesima in PDF sull’ePorfolio.
APPENDICE 7

DEFINIZIONE 
Una mappa concettuale è uno strumento per rappresentare le conoscenze.

Tali conoscenze devono essere ordinate in modo gerarchico, per rispecchiare in parte il modo in cui le
conoscenze stesse vengono immagazzinate nella nostra mente.

UTILIZZO DELLE MAPPE CONCETTUALI 
Una mappa concettuale non dovrebbe essere utilizzata allo scopo di elencare o esplorare possibili contenuti,
ma con la funzione di illustrare i rapporti esistenti tra i concetti.

Nel caso la costruzione di una mappa concettuale proceda di pari passo con l’apprendimento di un dato
argomento, allora essa subirà profonde mutazioni nel tempo, che rispecchieranno i cambiamenti della
struttura cognitiva del soggetto che apprende.

ELEMENTI DI BASE 

A. CONCETTI 
Un concetto può essere formato da una singola parola, o anche da una serie di parole; può anche
comprendere alcuni attributi che lo connotano.

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it

364
APPENDICE 7

I concetti possono essere di due tipi: concetti oggetto (fiore, storia, legge…) e concetti evento (rivoluzione,
eclissi, arrugginimento…). Ogni concetto compare una sola volta in una mappa concettuale.

B. FRASI LEGAME 
Le frasi legame contengono in genere predicati che esprimono denotazione, azione, consequenzialità -
dipendenza (logica, temporale, mezzo-fine), appartenenza, articolazione, esemplificazione, ecc. Ciascuna di
tali relazioni individua un concetto più sovraordinato, generale o inclusivo, e un concetto a questo
subordinato. Dalle frasi legame sono escluse domande, avversative, pronomi relativi.

Le parole concetto possono entrare a far parte delle frasi legame solo se sono concetti molto ricorrenti e
inclusivi, o se non appartengono al contesto della mappa. (es. inserire la parola “numero” in una mappa
concettuale sui numeri).

C.CARATTERISTICHE 
Le frecce si aggiungono solo nei casi in cui una proposizione deve essere letta in direzione orizzontale,
leggermente obliqua o dal basso verso l’alto (per evitare ambiguità ). Un singolo concetto può essere
collegato a più concetti. Poiché ogni relazione va letta dall’alto in basso, dovrà esistere un concetto più
inclusivo di tutti gli altri: il c.d. concetto radice, che si troverà al vertice della struttura piramidale.

Dal concetto radice si diramano le proposizioni con i concetti di primo livello e da questi si procede verso il
basso ampliando la struttura ad albero del secondo livello e dei successivi, con concetti via via sempre più
specifici e subordinati.

D. CRITERI SU LARGA SCALA 
1. Sviluppare una mappa tenendo conto di una chiave interpretativa o di una domanda focale precisa;

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
365
APPENDICE 7

2. iniziare a valutare la presenza di concetti più comprensivi di quelli relativi alla domanda focale, che
potrebbero essere utili a inquadrare il contesto e i presupposti per dare senso e autonomia di significato
all’intera struttura;

3. limitare lo sviluppo gerarchico ai livelli strettamente necessari a rispondere alla domanda focale e non
introdurre ulteriori legami arbitrari o di tipo associativo con altri concetti superflui.

E. CRITERI SU LARGA SCALA 
4. Se ci sono molti concetti di primo livello, legati al concetto radice (quello al vertice), occorre individuare
altri concetti di livello gerarchico intermedio, per raggrupparli in due-quattro categorie al massimo, quindi
sviluppare in modo bilanciato tali categorie.

5. I collegamenti trasversali, proposizioni tra concetti distanti nella mappa, indicano processi di integrazione
della struttura cognitiva – se non se ne abusa. Un numero eccessivo di collegamenti trasversali rende
semplicemente intricata la mappa, pertanto vanno usati solo per chiarire connessioni “rivelatrici” all’interno
della materia trattata.

6. Nel caso di argomenti molto vasti, frazionare la mappa in più sezioni (anche diversificate per colore). Se
ciascuna sezione deve essere strutturata in dettaglio, si consiglia di costruire delle mappe concettuali
distinte e collegate da legami ipertestuali tra loro o a una mappa – indice, creando quello che viene chiamato
Modello di Conoscenza (KM); oppure delineare la sola ossatura dell’argomento complessivo in una singola
mappa.

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it

366
APPENDICE 7

F. CRITERI SU PICCOLA SCALA 
7. Scegliere le parole più semplici possibili per i concetti e non scrivere interi periodi, contenenti più
concetti, in ciascun nodo. Evitare anche l’errore opposto di frammentare il testo piano in tanti nodi quante
sono le parole, ricordando che ogni nodo deve contenere un singolo concetto rilevante.

8. In ogni proposizione individuare qual è il concetto da disporre a un livello gerarchicamente superiore e


scegliere il termine o le parole più semplici e più possibile accurate al fine di indicare la relazione peculiare
tra i due concetti. Per questo compito è spesso utile un buon dizionario.

9. Se ci sono più concetti accomunati dallo stesso tipo di relazione, rispetto a un concetto più comprensivo,
evitare di concatenarli con “e”, come si farebbe nel testo normale; collegarli, invece, tutti alla stessa frase
legame, parallelamente e al di sotto del concetto più inclusivo. In alternativa, se tali concetti si trovano in
posizione terminale, si possono elencare tutti in un singolo nodo.

10. Per quanto possibile costruire relazioni binarie dotate di senso compiuto (“coerenti”), evitando gerundi,
pronomi relativi e congiunzioni che richiedano di estendere i periodi secondo una lettura testuale obbligata.
Occorre rileggere ogni proposizione come a sé stante.

Le frasi-legame non devono contenere concetti che potrebbero avere funzione nodale nella struttura della
mappa, ma solo quei termini necessari a fungere da collegamento (verbi, preposizioni, articoli ecc.)

11. Non inserire lo stesso concetto in diverse regioni nella mappa, anche se con etichette diverse (si può fare
eccezione a questa regola per concetti molto comprensivi, e per questo ricorrenti, o per attributi).
Eventualmente accorpare nello stesso nodo i diversi termini denotativi e connotativi (es. <imperatore Carlo
Magno>)

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
367
APPENDICE 7

INSTALLAZIONE DI CMAP 
Per partecipare alle e-tivities inerenti C-MAP, è necessario installare nel dispositivo personale la relativa
applicazione, selezionando (gratuitamente) il download necessario dall’indirizzo:

http://cmap.ihmc.us/cmaptools/cmaptools-download/.

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it

368
APPENDICE 7

Effettuata la registrazione, occorre cliccare sul download desiderato (per es. Windows (32 bits)) e poi sul
tasto ‘Esegui’.

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
369
APPENDICE 7

Al termine del download parte automaticamente il wizard per l’installazione del client:

Cliccare su NEXT per continuare, poi occorre accettare le condizioni della licenza e scegliere l’installazione
tipica.

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it

370
APPENDICE 7

Quindi accettare tutte le scelte seguente fino alla partenza dell’installazione:

Infine, occorre accettare tutte scelte fino ad arrivare alla schermata seguente, cliccando sul tasto ‘Done’:

La prima volta che si accede al programma si aprirà una finestra


in cui risulterà obbligatorio inserire un ID Utente:

- se studente, coincidente con il proprio numero di matricola. In tutto devono essere nove cifre, occorre
ricordarsi di includere anche gli zeri;

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
371
APPENDICE 7

- se docente, uguale alla Username utilizzata per accedere al VLE.

e una Password, da impostare uguale a quella usata per accedere alla propria Area Riservata del Portale di
Ateneo, sia per lo studente che per il Docente.

Per la condivisione remota delle mappe è necessario aggiungere, alla lista dei Server Cmap presente di
default, il Server Cmap Uniecampus; quindi, cliccando su “Cmap in rete”, poi su “Aggiungi Sito”,

Selezionare “Aggiungi un sito che non fa parte della lista” e utilizzare i seguenti dati:

- Host Name di Internet: cmap.uniecampus.it

- Numero Porta: 4447

- Numero di Porta del Web Server: 90

REDIGERE ELABORATI CON CMAP 

1. AVVIO DI CMAP 

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it

372
APPENDICE 7

Eseguendo l’applicazione si aprirà la finestra Viste – CmapTools che non deve essere chiusa finché si lavora
con CmapTools.

2. CREAZIONE MAPPA 
Cliccare sull’icona del server “Uniecampus”, selezionare la cartella dell’esercitazione e, all’interno di questa,
andare su File-Nuova Cmap per aprire l’editor delle mappe.

3. CREARE NODI E CONCETTI 
Per creare il primo nodo fare un doppio clic in un punto qualsiasi della finestra ‘Nuova Cmap’ e scrivere
direttamente il primo concetto.

Per creare un secondo nodo, collegato al primo, portarsi con il puntatore sulle frecce e trascinare il mouse in
un punto qualsiasi della finestra. Rilasciare il tasto.

Per compilare il testo di concetti e frasi legame, fare doppio clic sui punti interrogativi e digitare il testo.

4. COLLEGARE I CONCETTI 
E possibile collegare concetti creati precedentemente:

• creare i nodi “concetti” e “relazioni” (come detto prima con doppio clic in un punto qualsiasi della
finestra);

• selezionare il nodo sovraordinato e trascinare la freccia sul nodo subordinato.

5. COLLEGARE UN CONCETTO AD UNA RELAZIONE 
Quando si crea un collegamento non orizzontale dall’alto verso il basso, Cmap automaticamente creerà una
freccia. E possibile anche creare il collegamento da una relazione ad un nodo; ciò può servire ad evitare di
ripetere la stessa relazione per due o più concetti collegati ad uno stesso nodo.

6. CANCELLARE UN CONCETTO O UNA RELAZIONE 
Per cancellare un nodo (o una relazione) fare un click con il tasto sinistro del mouse su di esso e premere da
tastiera il tasto Canc.

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
373
APPENDICE 7

NB. Se si elimina la relazione i nodi non vengono eliminati; se invece si elimina il concetto verrà eliminata
anche la relazione corrispondente

7. SPOSTARE UN CONCETTO O UNA RELAZIONE 
Per spostare un nodo o una relazione è sufficiente selezionarli con il tasto sinistro e trascinarli, cosı̀ anche la
linea di collegamento si sposterà (ma non i concetti e le relazioni collegati).

Per selezionare e spostare anche più oggetti: è sufficiente cliccare su un punto dello schermo vicino ai
concetti da selezionare e trascinare il mouse, creando un rettangolo che includa tutti gli oggetti.

Per selezionare tutti gli elementi dello stesso tipo scegliere le opzioni corrispondenti nel menu Modifica,
scegliere invece “Seleziona tutto” se si vuole selezionare tutta la mappa.

8. SALVARE UNA MAPPA 
Si può salvare una mappa scegliendo dal menù FILE le opzioni: Salva Cmap o Salva Cmap Come… .

Inserire eventualmente le informazioni richieste.

NB: Le mappe possono essere aperte, semplicemente facendo doppio clic sulla loro icona.

9. ESPORTARE UNA MAPPA COME IMMAGINE PDF O COME PAGINA WEB 
E possibile esportare una mappa in un’immagine selezionando dal menu File l’opzione Esporta Cmap
come… e nella finestra che si apre scegliere Immagine (o pagina web o PDF).

Le mappe salvate come immagine non possono essere più modificate con C-map.

Il salvataggio come Pagina web si utilizza di solito per consentire la visualizzazione della mappa anche a chi
non possiede Cmap.

MODIFICA DELLE MAPPE 

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it

374
APPENDICE 7

1. LA FINESTRA STILI 
Quando si apre il file, contemporaneamente alla mappa si apre la finestra “Stili”; oppure si può aprire tale
finestra scegliendo l’opzione Stili dal menu Formato.

Nella finestra Stili ci sono 4 schede :

- Carattere, per la scelta del font, della dimensione, del colore, allineamento…

- Oggetto, dove puoi scegliere la forma, il colore, l’ombreggiatura ecc. dei nodi e dei riquadri contenenti le
relazioni;

- Linea, per la scelta del formato delle linee di connessione e delle linee di contorno degli oggetti (colore,
spessore, forma, verso della freccia);

- Cmap, per impostare un colore o un’immagine di sfondo.

2. INSERIRE RISORSE IN UNA CMAP 
In una CMap è possibile inserire diverse risorse, tra cui:

* documenti di testo in formati vari;

* file video;

* immagini;

* altre Cmap;

* file audio;

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
375
APPENDICE 7

* presentazioni;

* pagine web;

* file eseguibili.

In tal modo una mappa può diventare la struttura base per un ipertesto o un ipermedia.

Le risorse possono essere inserite sia direttamente, mediante trascinamento nei nodi o nelle frasi legame
delle mappe, sia importandole mediante il comando Aggiungi risorse del menu File.

Rilasciando il tasto del mouse si aprirà la finestra Modifica Collegamento alle Risorse con un modulo di
informazioni.

N.B. :E possibile sia salvare le risorse che creare un collegamento senza importarle nelle cartelle di
destinazione di Views (in tal caso spuntare la casella relativa).

3. AGGIUNGERE/MODIFICARE LE RISORSE. 
Per modificare le risorse già inserite nella CMap o per aggiungerne altre si può , dopo aver cliccato sul nodo a
cui si vogliono aggiungere/modificare Risorse, scegliere dal Menu Modifica della Cmap aperta l’opzione
Aggiungi/ Modifica Collegamenti a Risorse……

Ricordarsi, dopo aver modificato una risorsa, di cliccare su Aggiorna per salvare le modifiche.

4. CANCELLARE, SPOSTARE O COPIARE UNA RISORSA. 
Cliccare con il tasto destro del mouse sulla risorsa e selezionare Elimina, copia o taglia.

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it

376
APPENDICE 7

Per eliminare una risorsa è possibile anche intervenire dalla finestra Aggiungi/modifica Risorse.

5. COLLEGAMENTO AD ALTRE MAPPE. 
E possibile inserire un collegamento ad un’altra mappa come si inserisce qualsiasi risorsa.

Quando una mappa è molto complessa è possibile spezzarla in due e poi unirle attraverso una frase legame.
E sufficiente trascinare il nodo di una mappa su quello dell’altra (dopo avere visualizzato entrambe le
mappe) e completare la frase legame.

6. INSERIRE COLLEGAMENTI A PAGINE WEB. 
Se la risorsa da inserire è collegamento a una pagina di Internet si deve selezionare, dalla finestra Views,
l’opzione Aggiungi Pagina Internet.

Si può mettere il collegamento alla pagina web sul nodo della mappa come visto per le altre risorse.

7. AGGIUNGERE/INSERIRE INFORMAZIONI.

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
377
APPENDICE 7

E possibile aggiungere delle informazioni ai concetti: cliccare sul concetto scelto con il tasto destro del
mouse e scegliere l’opzione Aggiungi Informazioni (saranno visibili al passaggio del mouse).

Per inserire un’annotazione, cliccare in un punto qualsiasi della Cmap o su un concetto con il tasto destro del
mouse e nella finestra che appare scegliere Annotazione cliccando con il tasto sinistro . Si aprirà la finestra
Annotazione in cui sarà possibile inserire un commento.

Si sottolinea che l’annotazione non è legata al concetto ma può essere spostata in vari punti della mappa;
inoltre, lo strumento Annotazione può essere utile sia in una costruzione collaborativa di mappe sia al
docente per inserire commenti alla mappa degli studenti.

VISUALIZZAZIONE DI MAPPE GIÀ PUBBLICATE SUL SERVER REMOTO 

E possibile apportare modifiche alla mappa: quando si proverà a salvare le modifiche, verrà richiesto di
inserire ID e Password.

Se ci si autentica sarà possibile salvare le modifiche alla mappa sul server remoto; se invece non si
posseggono i diritti di modifica, sarà possibile solo salvare la mappa sul computer locale.

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it

378
APPENDICE 7

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
379
APPENDICE 7

PUBBLICAZIONE DI UNA MAPPA SUL SERVER REMOTO 

A) CREAZIONE DELLA CARTELLA: 
* selezionare dalla finestra Viste l’opzione Cmap in rete;

* selezionare il server pubblico su cui registrare la mappa;

* dalla finestra del server selezionato scegliere: File – Nuova cartella;

* scegliere un nome per la cartella.

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it

380
APPENDICE 7

B) IMPOSTARE LE AUTORIZZAZIONI.
Per poter impostare quali dei propri studenti deve poter accedere ad una determinata cartella/mappa è
necessario cliccare col destro sulla cartella/mappa e successivamente sulla voce Autorizzazioni. In seguito
tramite la voce “I miei studenti” presente all’interno della propria “Area riservata” è possibile ottenere il
numero di matricola di ogni studente, tale numero sarà necessario per effettuare la ricerca dello studente a
cui si vorrà garantire un determinato tipo di accesso (amministratore, sola lettura etc….).

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
381
APPENDICE 7

C) CREAZIONE DI UN NUOVO UTENTE:  
- selezionare Aggiungi Utente.

- assegnare un nome (ID) ed una password all’utente;

- spuntare le autorizzazioni concesse all’utente creato.

D) SALVARE LA MAPPA SUL SERVER REMOTO: 
E sufficiente trascinare la mappa, precedentemente creata, dalla cartella locale a quella creata sul server
remoto.

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it

382
APPENDICE 7

Quando la mappa viene salvata sul server, automaticamente viene pubblicata come pagina HTML
all’indirizzo che si trova alla base della mappa. La mappa è cosı̀ raggiungibile e visualizzabile da qualsiasi
browser.

E) MODULO REGISTRAZIONI. 
E possibile registrare le fasi di costruzione di una mappa ed è l'ideale per porre l’attenzione sul processo di
costruzione delle mappe concettuali:

* dal menu Viste scegliere Nuova Cmap;

* dal menu della nuova mappa scegliere Strumenti –Registrazione Cmap;

* avviare e interrompere la registrazione al momento opportuno.

F) STRUMENTI DI COLLABORAZIONE. 
Permettono di:

* collaborare simultaneamente alla costruzione/modifica di una mappa, condividendo idee anche


attraverso una chat;

* collaborare alla costruzione di un gruppo di mappe concettuali;

* condividere idee, fare commenti, e commentare criticamente le mappe degli altri studenti;

* collaborare tramite la condivisione di proposizioni mentre ciascuno costruisce la propria mappa


concettuale in un dato dominio di conoscenza, senza essere in grado di visualizzare le altrui mappe. La lista
delle proposizioni condivise è continuamente aggiornata sulla base di quanto gli utenti decidono di
pubblicare del contenuto delle proprie mappe.

G) COLLABORAZIONE SINCRONA. 
Attraverso gli strumenti di collaborazione sincrona è ovviamente possibile che più utenti condividano
contemporaneamente la stessa mappa e collaborino/cooperino alla costruzione della stessa, utilizzando
anche una chat per dialogare e concordare il lavoro in corso.

© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
383
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13
Titolo: Introduzione
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Introduzione alle Reti Sequenziali
Asincrone
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13
Titolo: Introduzione
Attività n°: 1

Le reti logiche viste fin ora sono di tipo combinatorio e non sono
dotate di memoria.
Questo significa che lo stato di uscita dipende solamente dallo stato
in ingresso alla rete stessa.

Le reti sequenziali si differenziano da quelle combinatorie in quanto


il loro stato di uscita non solo dipende dallo stato di ingresso, ma
dipende anche da uno stato interno in cui si trovano nell’instante
precedente alla presentazione di un nuovo ingresso.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13
Titolo: Introduzione
Attività n°: 1

Rete sequenziale elementare

Consideriamo la rete in figura, costituita da un BUFFER (elemento di ritardo e


rigenerazione del segnale) richiuso su se stesso a formare un anello elementare.
Esso ha due situazioni di stabilità: una situazione è quella in cui la variabile di uscita
vale 0, mentre l’altra è quella in cui la variabile di uscita vale 1.
• Nella situazione di stabilità in cui q vale 0, diremo che l’anello ha memorizzato (e
mantiene in uscita) il bit 0, ovvero che nell’anello è presente lo stato interno S0.
• Nella situazione di stabilità in cui q vale 1, diremo che l’anello ha memorizzato (e
mantiene in uscita) il bit 1, ovvero che nell’anello è presente lo stato interno S1.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13
Titolo: Introduzione
Attività n°: 1

Rete sequenziale elementare

L’anello mostrato in figura ha scarsa rilevanza pratica. Infatti, è impossibile


cambiare lo stato interno iniziale, cioè lo stato interno in cui si porta (in modo
aleatorio) quando viene inizialmente applicata la tensione al BUFFER. In altre
parole, non è possibile che, dopo l’accensione, l’anello possa essere indotto a
memorizzare, in tempi diversi, bit diversi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13
Titolo: Introduzione
Attività n°: 1

Il flip flop SR

Come primo esempio di rete asincrona si mostra il flip-flop (FF) o latch SR


(Set-Reset) : esso ha due ingressi denominati s e r , ed un’uscita q.

Simbolo del FF-SR


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13
Titolo: Introduzione
Attività n°: 1

Il flip flop SR: funzionamento

Il FF-SR si comporta nel seguente modo:


• se la variabile s è alta (vale 1) e la variabile r è bassa (vale 0), l’uscita
viene posta al livello alto (set),
• se la variabile s è bassa e la variabile r è alta, l’uscita viene posta al livello
basso (reset);
• se entrambi gli ingressi sono bassi, l’uscita mantiene il valore precedente
• Il comportamento della rete non è definito se entrambi gli ingressi sono alti.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13
Titolo: Introduzione
Attività n°: 1

Il flip flop SR: tabella di applicazione


Come per le reti combinatorie esiste la tabella di verità, nel caso delle reti
sequenziali si utilizzano le tabelle di applicazione. Tali tabelle descrivono tutte le
possibili transizioni dei valori della variabili di uscita e per ciascuna transizione sono
elencati gli stati di ingresso da applicare alla rete per provocarla.

In figura (b) si mostra la tabella di transizione del FF-SR mostrato in figura (a).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Introduzione alle Reti Sequenziali Asincrone:
Concetti Principali e Descrizione Formale
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1

Le reti logiche viste fin ora sono di tipo combinatorio e non sono
dotate di memoria.
Questo significa che lo stato di uscita dipende solamente dallo stato
in ingresso alla rete stessa.

Le reti sequenziali si differenziano da quelle combinatorie in quanto


il loro stato di uscita non solo dipende dallo stato di ingresso, ma
dipende anche da uno stato interno in cui si trovano nell’instante
precedente alla presentazione di un nuovo ingresso.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1

Rete sequenziale elementare

Consideriamo la rete in figura, costituita da un BUFFER (elemento di ritardo e


rigenerazione del segnale) richiuso su se stesso a formare un anello elementare.
Esso ha due situazioni di stabilità: una situazione è quella in cui la variabile di uscita
vale 0, mentre l’altra è quella in cui la variabile di uscita vale 1.
• Nella situazione di stabilità in cui q vale 0, diremo che l’anello ha memorizzato (e
mantiene in uscita) il bit 0, ovvero che nell’anello è presente lo stato interno S0.
• Nella situazione di stabilità in cui q vale 1, diremo che l’anello ha memorizzato (e
mantiene in uscita) il bit 1, ovvero che nell’anello è presente lo stato interno S1.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1

Rete sequenziale elementare

L’anello mostrato in figura ha scarsa rilevanza pratica. Infatti, è impossibile


cambiare lo stato interno iniziale, cioè lo stato interno in cui si porta (in modo
aleatorio) quando viene inizialmente applicata la tensione al BUFFER. In altre
parole, non è possibile che, dopo l’accensione, l’anello possa essere indotto a
memorizzare, in tempi diversi, bit diversi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1

Il flip flop SR

Come primo esempio di rete asincrona si mostra il flip-flop (FF) o latch SR


(Set-Reset) : esso ha due ingressi denominati s e r , ed un’uscita q.

Simbolo del FF-SR


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1

Il flip flop SR: funzionamento

Il FF-SR si comporta nel seguente modo:


• se la variabile s è alta (vale 1) e la variabile r è bassa (vale 0), l’uscita
viene posta al livello alto (set),
• se la variabile s è bassa e la variabile r è alta, l’uscita viene posta al livello
basso (reset);
• se entrambi gli ingressi sono bassi, l’uscita mantiene il valore precedente
• Il comportamento della rete non è definito se entrambi gli ingressi sono alti.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1

Il flip flop SR: tabella di applicazione


Come per le reti combinatorie esiste la tabella di verità, nel caso delle reti
sequenziali si utilizzano le tabelle di applicazione. Tali tabelle descrivono tutte le
possibili transizioni dei valori della variabili di uscita e per ciascuna transizione sono
elencati gli stati di ingresso da applicare alla rete per provocarla.

In figura (b) si mostra la tabella di transizione del FF-SR mostrato in figura (a).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1

In figura si mostra lo schema generale di una rete sequenziale asincrona, che


segue la definizione funzionale precedentemente introdotta.

Immagine estratta da: http://profmorri.altervista.org/digitale/cap9.html


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1

Descrizione di una rete sequenziale asincrona: l’esempio del flip-flop SR

• Gli stati di ingresso che la rete puo assumere sono: X={00,11,10,11}


• Gli stati di uscita sono: Z={0,1}
• Gli stati interni sono due e sono S0 e S1, quindi S={S0, S1}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1

Descrizione di una rete sequenziale asincrona: l’esempio del flip-flop SR


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1

Descrizione di una rete sequenziale asincrona: l’esempio del flip-flop SR

Si associa:
• al nome S0, lo stato in cui il FF SR memorizza il bit 0 (e lo presenta in
uscita)

• al nome S1, lo stato in cui il FF SR memorizza il bit 1 (e lo presenta in


uscita)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1

Descrizione di una rete sequenziale asincrona: l’esempio del flip-flop SR


Si riprenda la tabella di applicazione del FF-SR

Ora, si può osservare che, per quanto appena detto, la prima riga della tabella si legge come:
“se sono nello stato S0 e l’ingresso s è a 0, rimango nello stato S0 (qualunque cosa faccia
r)”.
Attenzione: Una rete sequenziale asincrona è un circuito sempre in evoluzione. Negli intervalli in
cui lo stato interno successivo coincide con quello precedente la rete si dice essere in un
situazione di stabilità.
Le reti sequenziali asincrone significative sono quelle che sono dotate di una legge A tale da
assicurare che partendo da una situazione di stabilità si arrivi sempre ad un’altra situazione di
stabilità.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1

Descrizione di una rete sequenziale asincrona: l’esempio del flip-flop SR

A partire dalla tabella di applicazione


si può costruire una tabella di flusso
che descrive il funzionamento del
FF-SR.

Le righe della tabella corrispondono


agli stati interni e le colonne agli
ingressi. La casella della matrice
individuata da uno stato S e da un
certo stato dell’ingresso X individua
lo stato successivo A{S,X} . Se tale
stato successivo non è specificato si
utilizza un trattino.
A destra della tabella sono riportati i
Tabella di flusso del FF-SR valori dell’uscita q in corrispondenza
di ciascun stato interno.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1

Descrizione di una rete sequenziale asincrona: l’esempio del flip-flop SR


Una rete sequenziale asincrona evolve (cioè modifica il proprio stato interno
e/o la propria uscita) a seguito di cambiamenti dello stato di ingresso. Non
è difficile vedere che, se essa si trova nello stato (ad esempio) S0 con ingresso
00, la rete non evolve (a meno che non cambi lo stato di ingresso). L’uscita
rimane costante a 0, la variabile d’anello mantiene costante il proprio valore. Si
dice, in questo caso, che la rete ha raggiunto la stabilità (è a regime), oppure
che lo stato interno S0 è stabile con stato di ingresso 00. In tutti i casi in cui
ciò succede, si mette un cerchio intorno allo stato interno stabile (è errore non
metterlo).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1

Descrizione di una rete sequenziale asincrona: l’esempio del flip-flop SR


Come detto in precedenza, le reti sequenziali asincrone interessanti sono quelle
che, partendo da un qualunque stato interno, riescono sempre a raggiungere la
stabilità, purché lo stato di ingresso sia mantenuto costante sufficientemente a
lungo. Il FF-SR ha questa proprietà.

Se, ad esempio, si avesse una rete fatta così

Si avrebbe che, in presenza dell’ingresso 10, la rete oscillerebbe indefinitamente


tra i due stati S0 e S1, e l’uscita oscillerebbe di conseguenza.
Questo tipo di reti non sono oggetto di studio di questo corso.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1

D’ora in avanti, nel parlare delle reti sequenziali asincrone, si supporrà che:

• lo stato di ingresso venga mantenuto per tutto il tempo che ci vuole a


raggiungere la stabilità (pilotaggio in modo fondamentale).

• lo stato di ingresso venga cambiato per un bit alla volta, cioè che stati di ingresso
consecutivi siano anche adiacenti.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1

Una maniera del tutto equivalente di rappresentare una rete sequenziale asincrona
è quella dei grafi di flusso. Un grafo di flusso è un insieme di nodi, che
rappresentano ciascuno uno stato interno, ed di archi, etichettati con uno stato di
ingresso, diretti da uno stato ad un altro.

Gli archi che si perdono all’infinito sono relativi a stati di ingresso che non si
possono verificare in quel caso. Gli archi che fanno “orecchio” indicano il fatto
che uno stato interno è stabile per quegli stati di ingresso. Visto che l’uscita è
funzione soltanto dello stato interno, può essere scritta direttamente dentro il
cerchio.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1

In figura si mostra un diagramma di temporizzazione, il quale fa vedere


che lo stato interno cambia (quando cambia) solo al variare dello stato di
ingresso, e poi si stabilizza.
L’uscita varia quando varia lo stato interno, (normalmente, questo accade
con un minimo di ritardo dovuto alla presenza, in generale, di una legge B,
che andrà implementata in qualche modo e creerà ritardo).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S2
Titolo: Il riconoscitore di sequenza come esempio
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Asincrone:
Il riconoscitore di sequenza come esempio
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S2
Titolo: Il riconoscitore di sequenza come esempio
Attività n°: 1

Un riconoscitore di sequenza è una rete che ha N ingressi (in questo caso N=2, sono
sequenze di 2 bit), ed un’uscita.

A parole, l’evoluzione della rete è la seguente:


“l’uscita è ad 1 soltanto quando si è presentata la sequenza degli stati di
ingresso voluta (01,11,10), ed è a zero altrimenti”

Il riconoscitore di sequenza è per esempio, la rete che sblocca la serratura di una


cassaforte in cui la combinazione è data da una sequenza di parole di N bit.

È ovvio che è una rete con memoria, in quanto deve ricordare una data sequenza di
stati di ingresso.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S2
Titolo: Il riconoscitore di sequenza come esempio
Attività n°: 1

Primo stato: S0

Si supponga che la rete, quando viene accesa, si trovi in uno stato interno
iniziale S0. Ovviamente, in questo stato l’uscita dovrà valere 0, in quanto non
devo sbloccare la cassaforte finché la rete non ha ricevuto tutta la sequenza.

Dallo stato iniziale non si esce finché non si è visto in ingresso il primo passo
corretto della sequenza che voglio riconoscere, cioè 01. Quando arriva 01, la
rete deve cambiare stato, perché devo memorizzare che la sequenza è
cominciata.

Se in S0 si memorizzava il fatto che la sequenza non era ancora iniziata,


adesso ci vuole un altro stato
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S2
Titolo: Il riconoscitore di sequenza come esempio
Attività n°: 1

Secondo stato: S1
In S1si deve restare finché l’ingresso non cambia nuovamente. Per tutto il tempo che
permane 01 come stato di ingresso, la rete non deve fare niente. S1 è stabile con
ingresso 01. Quando cambia lo stato di ingresso, si deve per forza prendere una
decisione.

Se il nuovo stato di ingresso è 11, vuol dire che la rete ha ricevuto due passi di sequenza
corretta, e deve memorizzare questo nuovo avvenimento. Serve un nuovo stato interno,
perché gli altri due memorizzavano, rispettivamente, “0 passi corretti” (S0) e “1 passo
corretto” (S1).

Lo stato di ingresso potrebbe anche diventare 00, nel qual caso si deve ripartire da capo,
tornando in S0.

Lo stato di ingresso non può diventare 10 in quanto si è arrivati in S1 con lo stato di


ingresso 01. In questo caso, nel diagramma di flusso, ci vuole un arco verso “infinito”.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S2
Titolo: Il riconoscitore di sequenza come esempio
Attività n°: 1

Terzo stato: S2

Memorizza il fatto che la rete ha ricevuto due passi corretti di sequenza. Ci è arrivata
con ingresso 11, e finché resta 11 in ingresso deve restare in S2 (orecchio).

Per lo stesso motivo di prima, ci vuole un arco verso infinito per l’ingresso 00.

Gli stati di ingresso 10 e 01 devono portare la rete fuori da S2 necessariamente. Se


arriva 01, la sequenza corrente è errata, ma potrebbe esserne cominciata una
nuova, e quindi devo andare in S1.

Se invece arriva 10, ho terminato la sequenza corretta, e quindi la rete deve andare
in uno stato diverso dai precedenti.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S2
Titolo: Il riconoscitore di sequenza come esempio
Attività n°: 1

Quarto stato: S3

In questo stato la rete deve porre l’uscita ad 1, perché deve sbloccare la


cassaforte.

La rete resta in questo stato fintanto che si mantiene l’ingresso 10.

L’ingresso 01 non è possibile (arco all’infinito).

Qualunque altra cosa arrivi la rete deve ripartire da S0, in quanto non può essere
l’inizio di una sequenza corretta
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S2
Titolo: Il riconoscitore di sequenza come esempio
Attività n°: 1

Ripercorrendo gli stati descritti prima, è possibile disegnare il grafo di flusso


del riconoscitore di sequenza.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S2
Titolo: Il riconoscitore di sequenza come esempio
Attività n°: 1

Inoltre, è molto semplice descrivere la rete con una tabella di sequenza


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S2
Titolo: Il riconoscitore di sequenza come esempio
Attività n°: 1

Osservazione (importante): Non è possibile, con una rete sequenziale asincrona,


descrivere un riconoscitore di sequenze qualunque. Ad esempio, questi due non
possono essere sintetizzati:

- 01, 10, 11 (le variabili di ingresso non possono cambiare contemporaneamente)


- 01, 01, 11 (la rete evolve solo in seguito alle variazioni dello stato di ingresso).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Introduzione delle Reti Sequenziali Asincrone:
Esempi di domande di esame
Il Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Esempi di domande di esame:

• Cosa è una rete sequenziale asincrona?

• Quale è la differenza fondamentale fra una rete combinatoria ed una rete


sequenziale asincrona?

• Flip-flop SR: descrizione a parole e tabella di applicazione.

• Tabella di flusso e grafo di flusso, descrivere con un esempio di cosa si


tratta.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Esempi di domande di esame:

• Quando una rete sequenziale asincrona è pilotata in modo fondamentale


?

• Cosa si intende per stabilità di una rete sequenziale asincrona?

• Disegnare il diagramma di temporizzazione del flip-flop SR.

• Descrivere un riconoscitore di sequenza con il suo diagramma (oppure


tabella) di flusso.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14
Titolo: Modelli Strutturali per la Sintesi
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Asincrone: Modelli
strutturali per la sintesi
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14
Titolo: Modelli Strutturali per la Sintesi
Attività n°: 1

In questa lezione, saranno introdotti i modelli strutturali (con


elementi neutri di ritardo) per la sintesi di reti sequenziali asincrone.

Il punto di partenza sono le leggi A e B descritte in


precedenza:

• Una legge di evoluzione nel tempo del tipo


che mappa quindi una coppia (stato di ingresso, stato
interno) in un nuovo stato interno.

• Una legge di evoluzione nel tempo del tipo


che decide lo stato di uscita basandosi sullo stato interno.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14
Titolo: Modelli Strutturali per la Sintesi
Attività n°: 1

sr
y 00 01 11 10 q
0 0 0 - 1 0
1 1 0 - 1 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14
Titolo: Modelli Strutturali per la Sintesi
Attività n°: 1

Viene semplice capire si può implementare le leggi A e B in termini di reti


combinatorie. In particolare:

• la rete che implementa legge B avrà come ingresso le variabili di stato


e come uscita le variabili di uscita della RSA. In questo caso sarà un
cortocircuito, visto come abbiamo scelto la codifica.

• la rete che implementa legge A avrà come ingresso le variabili di


ingresso e le variabili di stato e come uscita le variabili di stato della
RSA. Ciò implica necessariamente che ci siano degli anelli nella
realizzazione della rete, perché delle variabili di uscita per una rete
combinatoria devono anche rientrare in ingresso.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14
Titolo: Modelli Strutturali per la Sintesi
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14
Titolo: Modelli Strutturali per la Sintesi
Attività n°: 1

Per la progettazione delle reti sequenziali asincrone, bisogna rispettare delle regole di
progetto e di pilotaggio che servono ad evitare che la rete vada a finire in situazioni di
instabilità. Tutti i vincoli per la progettazione delle reti combinatorie devono essere rispettati
(pilotaggio fondamentale, ingressi e uscite successivi devono essere adiacenti).

Prima regola di progetto


E‘ necessario porre particolare attenzione anche nella scelta della codifica
degli stati: poiché risulta impossibile far variare contemporaneamente due segnali logici,
bisogna far in modo che le codifiche di due stati comunicanti differiscano al più per un bit.
Se rispettata, questa regola evita che ci siano problemi di corse critiche, ovvero che si
creino degli stati spuri stabili che portano a memorizzare degli stati definitivi diversi da quelli
che andavano memorizzati.
Questo può essere effettuato anche aggiungendo degli stati fittizi
di passaggio (che possono portare anche a rallentare la risposta della rete).
A questo punto dovrebbe essere chiaro come puntare ad una soluzione a costo
minimo sia nella sintesi della rete per CN1 sia nella codifica degli stati interni,
può portare la rete ad avere malfunzionamenti, pur se pilotata in modo corretto.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14
Titolo: Modelli Strutturali per la Sintesi
Attività n°: 1

Seconda regola di progetto

La rete combinatoria CN1 deve essere pilotata in modo fondamentale. Il


problema è che gli ingressi di CN1 non sono solo le variabili di ingresso della
RSA, ma anche le variabili di stato che rientrano.

Così come, per un corretto pilotaggio, si evita di variare gli ingressi finché la rete
combinatoria non è a regime, si dovrà fare anche in modo che le variazioni delle
variabili di stato (ingressi per CN1) avvengano soltanto quando la rete è a
regime. Questo si fa, appunto, ritardandole opportunamente.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14
Titolo: Modelli Strutturali per la Sintesi
Attività n°: 1

Il numero i può essere facilmente desunto dall’ispezione della tabella di


flusso. Si guarda colonna per colonna, e si vede quanti passi ci
vogliono, al massimo, per arrivare ad uno stato cerchiato. Se la tabella di
flusso è normale, allora i vale 1, in quanto partendo da ogni stato interno
stabile, al variare dell’ingresso, o rimango in tale stato, oppure vado a
finire in un nuovo stato stabile.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14
Titolo: Modelli Strutturali per la Sintesi
Attività n°: 1

REGOLA DI PILOTAGGIO N.2: lo stato di ingresso di una rete


sequenziale asincrona deve variare di un bit alla volta (stati di
ingresso consecutivi devono essere adiacenti).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14
Titolo: Modelli Strutturali per la Sintesi
Attività n°: 1

Esiste una specifica situazione in cui la seconda regola di


progetto può essere derogata

Si analizza la tabella di flusso (che deve essere normale). Se


partendo da uno stato stabile (cerchiato) e variando di un bit lo
stato di ingresso, si finisce in uno stato stabile X, e tale stato
stabile X è lo stesso nel quale si finisce variando altre due volte lo
stesso bit di ingresso, allora di dice che la rete è priva di alee
essenziali. In tal caso si può eliminare il ritardo.

Altrimenti, la rete è affetta da alee essenziali, e non si può


eliminare il ritardo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S1
Titolo: Sintesi di un riconoscitore di sequenza
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Asincrone:
Sintesi di un riconoscitore di sequenza
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S1
Titolo: Sintesi di un riconoscitore di sequenza
Attività n°: 1

Si consideri il riconoscitore di sequenza introdotto nella precedente


lezione e descritto dal seguente grafo di flusso:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S1
Titolo: Sintesi di un riconoscitore di sequenza
Attività n°: 1

Per sintetizzare una rete sequenziale asincrona è necessario


scegliere una codifica degli stati interni.

Per rispettare la prima regola di progetto, la codifica degli stati viene


scelta nel seguente modo:

S0=00, S1=01, S2=11, S3=10.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S1
Titolo: Sintesi di un riconoscitore di sequenza
Attività n°: 1

Si ricorda che si vuole sintetizzare la rete usando il modello con


due reti combinatorie CN1 e CN2 che consentono di ottenere
descrivere le leggi combinatorie A e B.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S1
Titolo: Sintesi di un riconoscitore di sequenza
Attività n°: 1

Considerando la tabella di flusso si ottiene subito la tabella di verità


della rete CN2 e la sua rapida sintesi (ricordarsi che gli stati attuali
sono codificati con le variabili y0 e y1)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S1
Titolo: Sintesi di un riconoscitore di sequenza
Attività n°: 1

Dalla tabella di flusso si può costruire la tabella delle transizioni,


che dà il valore di a1a0 (stato successivo) in funzione di x1x0, y1y0.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S1
Titolo: Sintesi di un riconoscitore di sequenza
Attività n°: 1

Dividendo quest’ultima, si fa la sintesi (ad esempio SP) delle due


reti combinatorie ad 1 uscita che producono, rispettivamente, a1
ed a0.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S2
Titolo: Sintesi di un riconoscitore di sequenza con stato ponte
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Asincrone:
Sintesi di un riconoscitore di sequenza
con stato ponte
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S2
Titolo: Sintesi di un riconoscitore di sequenza con stato ponte
Attività n°: 1

Si consideri il riconoscitore di sequenza 01, 11. Esso e’


descritto dal seguente grafo di flusso con tre stati interni:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S2
Titolo: Sintesi di un riconoscitore di sequenza con stato ponte
Attività n°: 1

Per sintetizzare una rete sequenziale asincrona è necessario


scegliere una codifica degli stati interni.

In questo caso i tre stati S0, S1, S2 devono essere adiacenti,


perché sono raggiungibili l’uno dall’altro. C’è un percorso
ciclico di ordine 3, dispari. Qualunque codifica (su 2 bit) si
scelga per S0, non si riuscirà mai a fare 3 stati adiacenti.

Si scelga, ad esempio, S0=00, S1=01, S2=11. Con questa


scelta si ha una transizione multipla di variabili di stato (corsa
critica) quando si presenta l’ingresso 10 che fa transire la rete
da S2 a S0. Casi di questo genere sono possibili in pratica e si
vedrà come trattarli.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S2
Titolo: Sintesi di un riconoscitore di sequenza con stato ponte
Attività n°: 1

Si ricorda che si vuole sintetizzare la rete usando il modello con


due reti combinatorie CN1 e CN2 che consentono di ottenere
descrivere le leggi combinatorie A e B.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S2
Titolo: Sintesi di un riconoscitore di sequenza con stato ponte
Attività n°: 1

Notare che, con 2 bit, si possono codificare 4 stati. Si può usare la


codifica libera per creare uno stato ponte, cioè un 4° stato “finto” il
cui solo scopo è quello di guidare la transizione multipla (corsa)
delle variabili di stato in modo opportuno.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S2
Titolo: Sintesi di un riconoscitore di sequenza con stato ponte
Attività n°: 1

Tale stato ponte S3:


• Dovrà avere una codifica intermedia tra quelle dei due stati di partenza e
arrivo, quindi 10
• Non dovrà essere uno stato stabile per 10, e quindi non avrà l’orecchio.
• Non essendo S3 uno stato stabile, si dovrà evitare di variare lo stato di
ingresso quando S3 è marcato (regola di pilotaggio n.1), e quindi non ha
senso specificare nel grafo di flusso il comportamento con gli altri ingressi
(metto archi che si perdono)
• SI ha la libertà di assegnare il valore della variabile di uscita nel caso di stato
interno S3. Visto che tale stato interno esiste in via transitoria, l’uscita può
essere o quella dello stato di partenza (1) o quella dello stato di arrivo (0),
indifferentemente.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S2
Titolo: Sintesi di un riconoscitore di sequenza con stato ponte
Attività n°: 1

La nuova tabella di flusso e la corrispondente tabella con gli stati codificati sono
mostrate di seguito:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S2
Titolo: Sintesi di un riconoscitore di sequenza con stato ponte
Attività n°: 1

Sintesi della rete CN1


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S2
Titolo: Sintesi di un riconoscitore di sequenza con stato ponte
Attività n°: 1

Sintesi della rete CN2


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S2
Titolo: Sintesi di un riconoscitore di sequenza con stato ponte
Attività n°: 1

Attenzione: si consideri il grafo di flusso originale della


sequenza 01, 11.

Il comportamento in S1 per ingresso 10 non è specificato, in quanto in S1


arrivo soltanto con ingresso 01. Posso sfruttare questo fatto per usare S1
stesso come stato ponte. Il grafo viene come mostrato di seguito.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S2
Titolo: Sintesi di un riconoscitore di sequenza con stato ponte
Attività n°: 1

Quando è possibile farlo, è bene non introdurre stati aggiuntivi, ma riciclare


quelli che già ci sono: infatti, si ottengono sintesi in genere più semplici (la
tabella delle transizioni conterrà una riga di non specificati).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S2
Titolo: Sintesi di un riconoscitore di sequenza con stato ponte
Attività n°: 1

Un caso classico in cui non è possibile usare uno stato già presente come
stato ponte è questo:

In questo caso, se si usasse S1 come stato ponte si avrebbe un’alea in uscita


(perché nel transito da S2 a S0 l’uscita dovrebbe restare a 0, e invece
passerebbe per un certo tempo a 1).
Quindi in questo caso è obbligatorio usare un altro stato, in cui l’uscita dovrà
essere 0, come ponte tra S2 e S0.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Sintesi di Reti Sequenziali Asincrone:
Domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Esempi di domande di esame:

Descrivere il modello strutturale con ritardo per la sintesi delle reti sequenziali
asincrone (Schema grafico e discussione di ciascun componente)

Regole di progetto e pilotaggio delle reti sequenziali asincrono sintetizzate


tramite il modello strutturale con ritardo.

Quando una tabella di flusso di dice normale?

Quando una rete sequenziale asincrona è priva di alee essenziali?


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Esempi di domande di esame:

Sintesi completa di un riconoscitore di sequenza 01, 11, 10

Sintesi completa di un riconoscitore di sequenza 01, 11

Cosa è quando si deve usare uno stato ponte?


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15
Titolo: Sintesi del flip-flop SR
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Sintesi del flip-flop SR
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15
Titolo: Sintesi del flip-flop SR
Attività n°: 1

Le realizzazioni commerciali del flip flop SR sono fatte in


maniera diversa rispetto a quello è stato introdotto nelle lezioni
precedenti.

In genere i circuiti commerciali mettono a disposizione in uscita le


due versioni di una variabile, includendo anche il suo valore negato.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15
Titolo: Sintesi del flip-flop SR
Attività n°: 1

All’atto pratico, il FF-SR è realizzato in accordo al modello di


sintesi con elementi neutri di ritardo come meccanismo di
marcatura (l’unica scelta possibile, ovviamente) nel modo che
segue:

• la rete CN2 è un corto circuito


• si codificano gli stati interni con 2 bit, pari al valore delle
uscite: S0=01, S1=10
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15
Titolo: Sintesi del flip-flop SR
Attività n°: 1

La codifica su 2 bit degli stati interni (2 in tutto) è ridondante. Non


solo, crea anche problemi di corse tra le variabili di stato.

Perché adottarla, allora? Perché alla fine si arriva ad una sintesi


semplice di rete molto veloce e molto robusta.

Se si hanno due stati consecutivi non adiacenti, occorre guidare


le corse inserendo uno stato ponte.
Si hanno due scelte possibili: SA=11, SB=00. Si supponga di
scegliere SA. Le transizioni di stato S0-S1 ed S1-S0 dovranno tutte
passare per SA.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15
Titolo: Sintesi del flip-flop SR
Attività n°: 1

In figura si mostrano il simbolo del FF-SR commerciale e il modello


strutturale che si vuole realizzare, in cui occorre sintetizzare la rete
combinatoria RCA
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15
Titolo: Sintesi del flip-flop SR
Attività n°: 1

In figura si mostra come si passa dalla tabella di flusso originale


a quella modificata utilizzando lo stato ponte. Con gli acronimi
SIP e SIS si indicano gli stati interni presenti e gli stati interni
successivi, rispettivamente.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15
Titolo: Sintesi del flip-flop SR
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15
Titolo: Sintesi del flip-flop SR
Attività n°: 1

In figura a sinistra si mostra la sintesi a porte NAND del FF-SR. Per produrre
il nuovo stato interno da marcare basta un livello di logica. La rete
dovrebbe essere piuttosto veloce. La sua implementazione è molto semplice.
Si osserva che i ritardi di marcatura possono essere resi nulli. Si vede a
occhio che le variabili di stato rientrano in zone della rete che non sono
interessate da transizioni di ingresso. Infatti, se si cambia s, q rientra
sull’altra porta NAND, che è a regime. Dato che non c’è bisogno di ritardi, la
rete è a maggior ragione veloce
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15
Titolo: Sintesi del flip-flop SR
Attività n°: 1

La tabella di flusso finale mostrata nella figura a destra della precedente slide
si può ottenere partendo dalle due tabelle delle uscite dove i non specificato
vengono considerati 1 se considerati come tali nella ricerca degli implicanti
essenziali e 0 altrimenti.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15
Titolo: Sintesi del flip-flop SR
Attività n°: 1

Se si analizza la tabella finale, si deduce che il FF-SR appena sintetizzato accetta,


senza che si verifichino malfunzionamenti, qualunque stato di ingresso e qualunque
transizione multipla delle variabili di ingresso, esclusa quella dallo stato di ingresso 11
allo stato di ingresso 00.

Applicare lo stato di ingresso 11 (fino a ora considerato proibito ) significa


semplicemente portare il latch SR in una situazione di stabilità in cui lo stato interno
presente è SA e lo stato di uscita è 11.

È invece pericolosa una transizione multipla dallo stato di ingresso 11 allo stato di
ingresso 00 in quanto induce il FF-SR a portarsi in modo casuale (eventualmente dopo
una oscillazione fra gli stati interni SA e SB ) o nella situazione di stabilità in cui lo stato
interno presente è S0 o nella situazione di stabilità in cui lo stato interno presente è S1 .
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15
Titolo: Sintesi del flip-flop SR
Attività n°: 1

Notare che parte della lezione appena discussa è stata estratta


dal capitolo IV, paragrafo 5 del libro di testo consigliato.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S1
Titolo: Esercizio: Sintesi di una RSA con elementi di ritardo
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Esercizio di sintesi di una rete
sequenziale asincrona con modello strutturale ad
elementi di ritardo
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S1
Titolo: Esercizio: Sintesi di una RSA con elementi di ritardo
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S1
Titolo: Esercizio: Sintesi di una RSA con elementi di ritardo
Attività n°: 1

Si osserva che la tabella è normale, e priva di alee essenziali. Ciononostante si


vede facilmente che c’è un percorso ciclico di ordine 3, e quindi saranno necessari
stati ponte
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S1
Titolo: Esercizio: Sintesi di una RSA con elementi di ritardo
Attività n°: 1

Adottando le codifiche S0 = 00, S1 = 01, S2 = 11, si rende necessario l’uso di due


stati ponte, rispettivamente fra gli stati S0 e S2, nel passaggio dello stato d’ingresso
da ‘B00 a ‘B10, e fra gli stati S2 e S0, nel passaggio dello stato d’ingresso da ‘B10
a ‘B00. In entrambi i casi si può utilizzare come stato ponte lo stato S1. La tabella
diventa quindi:

Attenzione: La tabella è ancora normale?


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S1
Titolo: Esercizio: Sintesi di una RSA con elementi di ritardo
Attività n°: 1

La tabella non è più normale, ma non ho più problemi di corse.


Con riferimento al modello strutturale con elementi neutri di ritardo, le mappe di
Karnaugh relative alle uscite della rete CN1 sono:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S1
Titolo: Esercizio: Sintesi di una RSA con elementi di ritardo
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S2
Titolo: Il flip-flop D-latch: descrizione funzionale
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Il flip-flop D-latch: descrizione funzionale
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S2
Titolo: Il flip-flop D-latch: descrizione funzionale
Attività n°: 1

Descrizione funzionale:

• Il flip flop D-latch è dotato di due ingressi (p e q) ed una


uscita q.
• Memorizza il valore dello stato di ingresso d (quindi,
memorizza un bit) quando l’ingresso p vale 1
(trasparenza).
• Quando p vale 0, invece, è in conservazione, cioè
mantiene in uscita (memorizza) l’ultimo valore che d ha
assunto.
• Quindi, il FF D-latch una rete che può trovarsi in due stati,
uno nel quale ha memorizzato il valore 0 ed uno nel quale
ha memorizzato il valore 1.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S2
Titolo: Il flip-flop D-latch: descrizione funzionale
Attività n°: 1

In figura, a sinistra si mostra il simbolo del FF-D latch e a destra si mostra la


tabella di flusso.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S2
Titolo: Il flip-flop D-latch: descrizione funzionale
Attività n°: 1

Per assicurare una corretta memorizzazione dell’ultimo valore di d presente


prima che p passi da 1 a 0, occorre che il valore di d rimanga costante
per qualche tempo prima (Tsetup) e per qualche tempo dopo (Thold ) il verificarsi
di tale evento.

In figura si mostra la temporizzazione che descrive graficamente quanto detto sopra.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S2
Titolo: Il flip-flop D-latch: descrizione funzionale
Attività n°: 1

In figura si mostra un'ulteriore temporizzazione che descrive il comportamento


completo del FF D-latch.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S2
Titolo: Il flip-flop D-latch: descrizione funzionale
Attività n°: 1

Approfondire il FF D-latch leggendo il paragrafo 5.1 del Capitolo 3 del


libro di testo consigliato per il modulo di reti logiche.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Domande di Esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Esempi di domande di Esame:

• Sintetizzare un FF-SR considerando il modello strutturale


ad elementi di ritardo (considerare la presenza dell'uscita
affermata e negata).

• Quanti stati si utilizzano nella sintesi di un modello


commerciale di FF-SR. Esistono problemi di corse?

• Disegnare la sintesi a porte NAND del FF-SR. Si possono


eliminare i ritardi di marcatura? Perché’?

• Si può fornire in ingresso al FF-SR sintetizzato a porte


NAND l’ingresso 11.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Esempi di domande di Esame:

• Cosa e’ un flip-flop D-latch? (descrizione a parole, simbolo


e tabella di flusso)

• Temporizzazione del FF D-latch.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16
Titolo: MODELLI STRUTTURALI DI SINTESI CON FLIP FLOP SR
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Modello strutturale di sintesi con FF-SR
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16
Titolo: MODELLI STRUTTURALI DI SINTESI CON FLIP FLOP SR
Attività n°: 1

Visto che i FF SR servono a memorizzare dei bit, questi circuiti possono essere usati come
elementi di marcatura degli stati nella sintesi di reti sequenziali asincrone. In figura si mostra il
nuovo modello struttura che si ottiene utilizzando il FF-SR.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16
Titolo: MODELLI STRUTTURALI DI SINTESI CON FLIP FLOP SR
Attività n°: 1

In questo caso, la sintesi della rete combinatoria CN1 richiede di


produrre un numero doppio di variabili di uscita. Tali variabili non
codificano più il nuovo stato interno, ma l’ingresso da dare ai FF SR
affinché marchino il nuovo stato interno.

Ci stiamo complicando la vita?


Visto che si sintetizzano le varie uscite in modo separato, adesso si
dovrebbe fare il doppio del lavoro, e comunque usare all’incirca il
doppio delle porte.

In realtà no, perché - con questo modello - le mappe che sintetizzano


ciascuna delle uscite saranno piene di non specificati, e quindi le
sintesi che ne risultano sono spesso addirittura più semplici.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16
Titolo: MODELLI STRUTTURALI DI SINTESI CON FLIP FLOP SR
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16
Titolo: MODELLI STRUTTURALI DI SINTESI CON FLIP FLOP SR
Attività n°: 1

Si consideri la tabella per la variabile di stato y1.


Guardando la tabella di applicazione del FF SR, si può facilmente
dedurre che:

• se y1 valeva 0 e deve continuare a valere 0 (cella 1,1), si deve


pilotare il FF SR con s=0, r=-
• se y1 valeva 0 e deve valere 1 (cella 2,3), si deve settare il FF, cioè
pilotarlo con s=1, r=0
• se y1 valeva 1 e deve continuare a valere 1 (cella 3,3), si deve
pilotare il FF SR con s=-, r=0
• se y1 valeva 1 e deve valere 0 (cella 4,1), si deve resettare il FF,
cioè pilotarlo con s=0, r=1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16
Titolo: MODELLI STRUTTURALI DI SINTESI CON FLIP FLOP SR
Attività n°: 1

Per la variabile y1 si ottiene:


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16
Titolo: MODELLI STRUTTURALI DI SINTESI CON FLIP FLOP SR
Attività n°: 1

La cui sintesi è:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16
Titolo: MODELLI STRUTTURALI DI SINTESI CON FLIP FLOP SR
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16
Titolo: MODELLI STRUTTURALI DI SINTESI CON FLIP FLOP SR
Attività n°: 1

In conclusione, con la nuova sintesi, il costo a porte è pari


a 4, mentre il costo della precedente sintesi era pari a 6.

Analogamente, quello a diodi è 8 contro 12.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16
Titolo: MODELLI STRUTTURALI DI SINTESI CON FLIP FLOP SR
Attività n°: 1

Osservazione 1:
Ai fini del ritardo e della presenza di alee essenziali, si può
osservare che la batteria di FF SR introduce del ritardo.

Tale ritardo potrebbe essere già sufficiente a garantire il buon


funzionamento della rete qualora questa sia affetta da alee
essenziali.

Se non è sufficiente, se ne mette dell’altro in cascata.


Ovviamente, se la rete non ha alee essenziali non interessa
aggiungere ritardo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16
Titolo: MODELLI STRUTTURALI DI SINTESI CON FLIP FLOP SR
Attività n°: 1

Osservazione 2:
Non ci si è preoccupati del fatto che CN1 ha due uscite
che vanno in ingresso ad un singolo FF, e che in pratica
possono cambiare in un ordine qualunque, in modo tale
da violare le regole di pilotaggio del FF SR (che è esso
stesso una RSA).

Ma si sa che il FF SR tollera bene pilotaggi scorretti.


L’unica cosa che non si deve fare è passare da 11 a 00, poi
la rete evolve sempre correttamente. Nel caso della sintesi
di sopra viene mai dato 11 in ingresso ad uno dei FF SR.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S1
Titolo: SINTESI DEL FF D - LATCH
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Sintesi del FF D-latch con modello
strutturale di sintesi con FF-SR
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S1
Titolo: SINTESI DEL FF D - LATCH
Attività n°: 1

Il flip flop D-latch memorizza l’ingresso d (quindi, memorizza un bit)


quando p vale 1. Quando p vale 0, invece, conserva l’informazione
memorizzata. La descrizione è quella mostra nella tabella di flusso in
figura.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S1
Titolo: SINTESI DEL FF D - LATCH
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S1
Titolo: SINTESI DEL FF D - LATCH
Attività n°: 1

Si propone di sintetizzare questa rete usando un FF SR come


meccanismo di marcatura.

Si sceglie la seguente codifica degli stati interni:


S0=0, S1=1.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S1
Titolo: SINTESI DEL FF D - LATCH
Attività n°: 1

Dalla tabella delle transizioni e con la tabella di applicazione del FF SR, si


ricavano la sintesi delle variabili di uscita s e r di CN1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S1
Titolo: SINTESI DEL FF D - LATCH
Attività n°: 1

In figura si mostra la sintesi finale. Si noti che, avendo usato un FF SR come


meccanismo di marcatura, viene gratis che anche il FF D-latch ha la variabile di
uscita diretta e negata.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S1
Titolo: SINTESI DEL FF D - LATCH
Attività n°: 1

Attenzione: quando il FF D-latch è in trasparenza, l’uscita è direttamente


connessa all’ingresso. Pertanto, se q e d sono collegati in retroazione negativa
(come in figura), quando p è ad 1 l’uscita balla, e quando p va a 0 si
stabilizza ad un valore casuale.

Il FF D-Latch è trasparente, cioè l’ingresso d è cortocircuitato con l’uscita


(quando p è ad 1). Il che vuol dire, in pratica, che non si può memorizzare in un
FF D-Latch niente che sia funzione dell’uscita q, altrimenti potrebbe verificarsi
questo problema.

Peraltro, regole corrette di pilotaggio del FF D-latch impongono che d sia


costante a cavallo del fronte di discesa di p, come avete visto.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S2
Titolo: IL FLIP FLOP D-(POSITIVE) EDGE - TRIGGERED
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Il FLIP FLOP D-(positive)-edge-triggered
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S2
Titolo: IL FLIP FLOP D-(POSITIVE) EDGE - TRIGGERED
Attività n°: 1

Il Flip Flop D-positive-edge-triggered (FF-DET) è una variante del D-latch. Mentre


il D-latch è sensibile all’ingresso d per tutto il tempo in cui p è ad 1 (tempo che
può essere arbitrariamente lungo), il DET è sensibile a d soltanto a cavallo del
fronte in salita di p, per un tempo breve (donde l’appellativo positive. Esiste
anche quello negative, volendo).
Si dice che l’ingresso d viene campionato sul fronte di salita di p.
In figura, si mostra il simbolo utilizzato per il FF-DET
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S2
Titolo: IL FLIP FLOP D-(POSITIVE) EDGE - TRIGGERED
Attività n°: 1

Molto Importante:
Per tutto il (breve) tempo in cui il FF DET è sensibile alla variabile di ingresso d, la
variabile di uscita q è disconnessa dall’ingresso.
L’uscita q viene adeguata al valore campionato di d dopo che la rete ha smesso di
essere sensibile al valore di d. Questo si vede bene dal diagramma di
temporizzazione in figura.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S2
Titolo: IL FLIP FLOP D-(POSITIVE) EDGE - TRIGGERED
Attività n°: 1

L’uscita di un FF DET non oscilla mai (a differenza di quella del D-


latch), in quanto viene adeguata in modo secco ad un istante ben
preciso, e non è mai direttamente connessa con l’ingresso d. Ciò
comporta che si possono montare i DET in qualunque modo si
voglia, tanto non succede niente.
Ad esempio, in questo caso non succede assolutamente niente.

Ogni volta che arriva un fronte di salita di p, l’uscita cambia valore


(con il debito ritardo). Si può mettere in ingresso a d qualunque
funzione dell’uscita q, senza che ci siano problemi di sorta.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S2
Titolo: IL FLIP FLOP D-(POSITIVE) EDGE - TRIGGERED
Attività n°: 1

Si passa ora alla sintesi del FF-DET. Si realizza con due sottoreti: la prima è il
campionatore sul fronte in salita di p e la seconda è un FF SR che serve solo ad
inserire il ritardo e garantire che l uscita sia aggiornata solo dopo Tpropagation > Thold.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S2
Titolo: IL FLIP FLOP D-(POSITIVE) EDGE - TRIGGERED
Attività n°: 1

La rete campionatore dovrà nella maggior parte del tempo, conservare il valore
campionato (quale che sia) sul fronte di salita di p, memorizzare 1 o memorizzare
0, e poi conservare.
Essa deve poter pilotare il FF SR ritardatore con comandi di conservazione, set e
reset. La rete campionatore si sintetizza come una rete sequenziale asincrona con
tre stati interni.

• S0: Quando p=0, la rete è in conservazione. L’uscita del campionatore vale 00,
la rete non è sensibile a d. Quando p va ad 1, può succedere di dover resettare
il ritardatore (se d=0) o settarlo (se d=1). Visto che le uscite del campionatore
saranno diverse nei due casi, si deve prevedere due stati distinti, S1 e S2, nei
quali, rispettivamente, si resetta o si setta il ritardatore.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S2
Titolo: IL FLIP FLOP D-(POSITIVE) EDGE - TRIGGERED
Attività n°: 1

• S1: si arriva in questo stato se d=0 quando p va ad 1. Quindi si deve dare ordine al
ritardatore di resettare, e si deve restare in S1. Non si può tornare in S0 subito,
altrimenti potrebbe darsi che l’ingresso al ritardatore non venga mantenuto per
abbastanza tempo. S1 deve essere stabile. Inoltre, in questo stato, non si deve
ascoltare d, perché è già stato dato il comando al ritardatore. L’unica transizione di
stato che può far muovere da S1 è quella per cui p va a zero. In questo caso si
torna in S0, in attesa di un nuovo fronte in salita di p.

• S2: vale esattamente tutto ciò che ho detto per S1, salvo che in questo caso il
ritardatore deve ricevere in ingresso 10.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S2
Titolo: IL FLIP FLOP D-(POSITIVE) EDGE - TRIGGERED
Attività n°: 1

Si passa quindi alla sintesi del campionatore appena descritto.


Si osserva che ci sono tre stati. Però non c’è nessun percorso
ciclico di ordine 3, in quanto S1 e S2 non possono mai essere
consecutivi. Pertanto non si pone il problema di dover utilizzare
stati ponte per recuperare l’adiacenza tra stati consecutivi.

Si possono codificare gli stati interni direttamente con il valore delle


uscite (da dare in ingresso al ritardatore), in modo da ottenere una
rete CN2 di complessità nulla (cortocircuito).
Scelgo come modello strutturale quello con FF SR.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S2
Titolo: IL FLIP FLOP D-(POSITIVE) EDGE - TRIGGERED
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S2
Titolo: IL FLIP FLOP D-(POSITIVE) EDGE - TRIGGERED
Attività n°: 1

La sintesi che si ottiene è quella della figura sottostante, per arrivare alla
quale basta applicare il Teorema di DeMorgan.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S3
Titolo: ESEMPI DI DOMANDE DI ESAME
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Esempi di domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S3
Titolo: ESEMPI DI DOMANDE DI ESAME
Attività n°: 1

Esempi di domande di esame

• Differenza fra modello strutturale per la sintesi di reti sequenziali asincrone con
elementi di ritardo e modello strutturale con FF-SR.

• Sintesi del riconoscitore di sequenza 01 11 10 usando il modello strutturale con


FF-SR.

• Vantaggi sella sintesi per reti sequenziali asincrone con modello strutturale con
FF-SR
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S3
Titolo: ESEMPI DI DOMANDE DI ESAME
Attività n°: 1

Esempi di domande di esame

• Sintesi del FF D-latch usando il modello strutturale con FF-SR.

• Quale è il principale problema legato al fatto che il FF D-latch è trasparente?

• Descrizione funzionale del Flip Flop D-positive-edge-triggered (FF-DET) con


temporizzazione.

• Sintesi del Flip Flop D-positive-edge-triggered (FF-DET) usando il modello


strutturale con FF-SR
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S1
Titolo: Memorie RAM Statiche
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Memorie RAM statiche:
Descrizione funzionale e realizzazione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S1
Titolo: Memorie RAM Statiche
Attività n°: 1

Le RAM statiche (esistono anche quelle dinamiche, ma sono


fatte in modo del tutto differente) sono batterie di FF D-Latch
montati a matrice.
Una riga di D-Latch costituisce una locazione di memoria,
che può essere letta o scritta con un’operazione di lettura o
scrittura. Le operazioni di lettura e scrittura non possono
essere simultanee
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S1
Titolo: Memorie RAM Statiche
Attività n°: 1

In figura si mostra il simbolo utilizzato per una RAM statica formata da 128k
locazioni da 4 bit.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S1
Titolo: Memorie RAM Statiche
Attività n°: 1

Dal punto di vista dell’utente, una memoria è dotata dei


seguenti collegamenti:

• un certo numero di fili di indirizzo, che sono ingressi, in


numero sufficiente ad indirizzare tutte le celle della
memoria. In questo esempio, la memoria contiene 217 celle
di 4 bit, e ci vogliono 17 fili di indirizzo

• un certo numero di fili di dati, che sono fili di


ingresso/uscita (come tali, andranno gestiti con porte 3-
state). In questo esempio sono 4.

…continua
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S1
Titolo: Memorie RAM Statiche
Attività n°: 1

…continua

• Due segnali attivi bassi di memory read e memory write. Non


dovranno mai essere attivi contemporaneamente. Servono a dare il
comando di lettura o scrittura della cella il cui indirizzo è trasportato
sui fili a16_a0.

• Un segnale (attivo basso) di select, che viene attivato quando la


memoria è selezionata. Quando /s vale 1, la memoria è insensibile
a tutti gli ingressi. Quando vale 0, la memoria è selezionata, e
reagisce agli ingressi. Ciò consente di realizzare una memoria
“grande” (in termini di n. di locazioni) mettendo insieme più banchi
di memoria “piccoli”. Basta che se ne selezioni uno alla volta, e
poi si manda in parallelo tutto il resto.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S1
Titolo: Memorie RAM Statiche
Attività n°: 1

Il comportamento della memoria è quindi deciso da /s, /mw, /mr nel seguente
modo:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S1
Titolo: Memorie RAM Statiche
Attività n°: 1

1. Una RAM statica è una matrice di D-latch. Una riga è una


locazione, bit 0 a destra, bit 3 a sinistra.
2. Le uscite dei D-latch dovranno essere selezionate una riga alla
volta, per finire sui fili di dati in uscita. Ci vuole un multiplexer per
ogni bit, in cui
a. gli ingressi sono le uscite dei D-latch
b. le variabili di comando sono i fili di indirizzo
3. Le uscite di ciascuno dei multiplexer vanno bloccate con porte 3-
state. Queste dovranno essere abilitate quando si sta leggendo
dalla memoria. Ci vuole una rete combinatoria che produca
l’enable (chiamiamolo alpha) come funzione di /s, /mw, /mr.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S1
Titolo: Memorie RAM Statiche
Attività n°: 1

4. Per quanto riguarda gli ingressi: si può portare a ciascuna colonna


di D-latch i fili di dati sull’ingresso d. Basta che si faccia in modo
che, quando si vuole scrivere, soltanto una riga di d-latch sia
abilitata, cioè abbia p ad 1. Quindi, ciascuna riga di D-latch avrà
l’ingresso p prodotto da un demultiplexer, comandato dai fili di
indirizzo. Questo demultiplexer commuterà sulla riga giusta il
comando di scrittura, attivando solo una riga di p alla volta. In
questo modo, anche se i fili di dati sono in ingresso
contemporaneamente a tutti i D-latch, solo una riga li sentirà. Il
comando di scrittura (chiamiamolo b) è funzione di /s, /mw, /mr.

Nella slide che segue si mostra lo schema di realizzazione di una


RAM statica con FF D-latch.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S1
Titolo: Memorie RAM Statiche
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S1
Titolo: Memorie RAM Statiche
Attività n°: 1

Temporizzazione del ciclo di lettura

Ad un certo istante, gli indirizzi si stabilizzano al


valore della cella che si vuole leggere ed arriva il
comando di /mr. Per motivi che saranno chiari
successivamente, non è improbabile che il
comando di /s arrivi con un po’ di ritardo, e oscilli
nel frattempo.
Quando sia /s che /mr sono a 0, dopo un pochino
le porte 3-state vanno in conduzione, così come i
multiplexer sulle uscite vanno a regime. Da quel
punto in poi i dati sono stabili, e chi li ha richiesti li
può prelevare.
Quando /mr viene ritirato su (il che verrà fatto
quando chi voleva leggere i dati li ha già
prelevati), i dati tornano in alta impedenza. A
quel punto gli indirizzi e /s possono oscillare a
piacere, tanto non succede niente.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S1
Titolo: Memorie RAM Statiche
Attività n°: 1

Temporizzazione del ciclo di scrittura

Visto che la scrittura è distruttiva (in quanto


quando si scrive i D-latch sono in trasparenza),
si deve attendere che /s e gli indirizzi siano
stabili prima di portare giù /mw.

I dati, invece, possono oscillare a piacimento


(anche quando /mw vale 0), ma devono essere
stavili a cavallo del fronte di salita di /mw.

Tale fronte, infatti, corrisponde (con un minimo di


ritardo dovuto alla rete C ed al demultiplexer), al
fronte di discesa di p sui D-latch. Il tempo per cui
i dati devono essere tenuti stabili dopo il fronte
di salita di /mw è maggiore di Thold in quanto c’e’
altra logica davanti.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S2
Titolo: MONTAGGIO DELLE RAM STATICHE E ACCENNI ALLE ROM
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Memorie RAM statiche:
montaggio in parallelo e in serie.
Accenni alle memorie ROM
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S2
Titolo: MONTAGGIO DELLE RAM STATICHE E ACCENNI ALLE ROM
Attività n°: 1

Come si fa ad ottenere una memoria 128Kx8 usando banchi


128Kx4? È facile. Basta connettere in parallelo tutti quanti i fili e fare
in modo che i dati si ripartiscano fra i due banchi come mostrato in
figura:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S2
Titolo: MONTAGGIO DELLE RAM STATICHE E ACCENNI ALLE ROM
Attività n°: 1

Come si fa ad ottenere una memoria 256Kx8 usando banchi 128Kx8?

È facile, anche se richiede un po’ di logica in più. Tanto per cominciare, per
indirizzare 256K ci vogliono 18 fili di indirizzo, uno in più. Si dividono le locazioni in
questo modo:
• parte “alta” (a17=1) in un blocco
• parte “bassa” (a17=0) nell’altro

Quindi, si genera il segnale di select per i due blocchi usando a) il segnale di select
che viene dal bus, e b) il valore di a17. Tutto il resto viene portato in parallelo ai due
blocchi.

Nella slide successiva si mostra il montaggio in serie per raddoppiare il numero di


locazioni (la loro dimensione resta fissa, 8 bites nell’esempio).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S2
Titolo: MONTAGGIO DELLE RAM STATICHE E ACCENNI ALLE ROM
Attività n°: 1

In figura si mostra anche la


tabella di verità della rete
combinatoria R che
comanda l’attivazione dei
singoli banchi di memoria.

NB: Quanto appena scritto


giustifica il fatto che il filo di
select normalmente si
stabilizza con un certo
ritardo rispetto al filo di
/mr. (vedere
temporizzazioni delle fasi
di lettura e scrittura delle
RAM)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S2
Titolo: MONTAGGIO DELLE RAM STATICHE E ACCENNI ALLE ROM
Attività n°: 1

Circuiti di largo utilizzo sono le cosiddette ROM (Read Only Memory),


PROM (Programmable Read Only Memory), EPROM (Erasable
Programmable ROM), EEPROM (Electrically Erasable Programmable ROM)
che hanno un insieme di variabili di ingresso e di uscita molto simile a quello
delle RAM statiche.

Sebbene siano delle reti logiche combinatorie, in quanto il loro stato di uscita dipende
esclusivamente dallo stato di ingresso presente, le variabili di uscita, sono comunque
supportate da porte 3-state.

Questi tipi di circuiti vengono infatti utilizzati, insieme alle RAM, per implementare lo spazio di
memoria dei calcolatori (sullo stesso bus), venendone a rappresentare la parte non volatile.

Usando una terminologia simile a quella che si usa per la RAM, si dice che le ROM, PROM,
EPROM sono costituite da locazioni indirizzabili, ognuna delle quali contiene un dato indelebile
durante la normale fase operativa e accessibile in sola lettura.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S2
Titolo: MONTAGGIO DELLE RAM STATICHE E ACCENNI ALLE ROM
Attività n°: 1

In figura si mostra uno schema di realizzazione di una ROM (64kx8). I generatori di


costante GdC presentano in uscita un valore non modificabile durante il normale
funzionamento; la tecnologia con cui sono realizzati determina la natura del circuito, cioè
se i bit contenuti nelle locazioni possono essere modificati agendovi con particolari
apparecchiature (PROM, EPROM, EEPROM) o sono stabiliti all’atto della costruzione e
quindi immodificabili per sempre (ROM).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S2
Titolo: MONTAGGIO DELLE RAM STATICHE E ACCENNI ALLE ROM
Attività n°: 1

Per la parte relativa alla memorie RAM statiche si prega di fare riferimento al
paragrafo 6 del capitolo 3 del libro di testo.

La parte relativa alle memorie ROM è stata invece estratta dal paragrafo 7 del
capitolo 3 del libro di testo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Memorie RAM e ROM:
Esempi di domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Esempi di domande di esame:

• Simbolo di una RAM statica e descrizione dei suoi piedini (fili).

• Disegnare lo schema realizzativo di una RAM con D latch.

• Cosa sono le memorie Read Only Memory e quanti tipi ne esistono?

• Schema realizzativo di una ROM.

Caricare le risposte alle precedenti 4 domande sull’ePortfolio.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Esempi di domande di esame:

• Temporizzazione fase di scrittura di una memoria RAM

• Temporizzazione fase di lettura di una memoria RAM

• Montaggio di una RAM in serie. Spiegare anche a cosa serve?

• Montaggio di una RAM in parallelo. Spiegare anche a cosa serve?


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
I Registri
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

In figura (a) si mostra la realizzazione di un registro a W bit, nella figura (b) e (c) si
mostrano le simbologie compatte.

(c)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

Quindi, d’ora in poi, si useranno i registri (basati su FF DET) come elemento


base per la sintesi di reti sequenziali sincronizzate (RSS).

Pur essendo il FF DET una rete sequenziale asincrona, se considero i due


ingressi d e p nella loro generalità, nulla vieta di attribuire all’ingresso p un
valore speciale, appunto quello di segnale di sincronizzazione, e vedere il
tutto come una rete sequenziale sincronizzata.

Visto che p non specifica più, in quest’ottica, un valore di ingresso, si può


smettere di annoverarlo tra gli ingressi.

Si dirà d’ora in avanti, che il registro a w bit ha w ingressi e w uscite,


sottintendendo che ha anche un ulteriore ingresso di clock, dedicato però a
portare il segnale di sincronizzazione. In figura, si mostra un tipico esempio di
segnale di sincronizzazione o clock (sarà approfondito successivamente).

p
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

• Lo stato di uscita del registro (w bit, detti capacità del


registro) ad un certo istante verrà anche chiamato contenuto
del registro stesso.

• L’utilizzo di tale contenuto (ad esempio per fornire ingresso


ad una rete combinatoria verrà detto lettura del registro).

• La memorizzazione dei w bit in ingresso ad un certo istante


di sincronizzazione verrà detta scrittura del registro.

• Le implementazioni commerciali dei FF DET sono dotate dei


piedini (variabili di ingresso attive basse) /preset e preclear
che consentono di impostare il valore iniziale del FF a
uno o zero, rispettivamente.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

Pilotaggio dei registri


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

È fondamentale capire bene che i registri memorizzano uno stato di ingresso


quando arriva il clock.

Il fatto che due stati di ingresso ai registri, presentati su istanti di clock (fronti di
salita) consecutivi, siano identici, adiacenti o non adiacenti non riveste alcuna
importanza.

Quindi:

Tra due fronti di salita del clock, lo stato di ingresso ai registri può cambiare
in qualunque modo (o non cambiare affatto). Al nuovo fronte di salita del
clock, lo stato di ingresso presente verrà memorizzato (come se fosse un nuovo
stato, anche se identico al precedente).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
Introduzione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

In figura (a) si mostra la realizzazione di un registro a W bit, nella figura (b) e (c) si
mostrano le simbologie compatte.

(c)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

Quindi, d’ora in poi, si useranno i registri (basati su FF DET) come elemento


base per la sintesi di reti sequenziali sincronizzate (RSS).

Pur essendo il FF DET una rete sequenziale asincrona, se considero i due


ingressi d e p nella loro generalità, nulla vieta di attribuire all’ingresso p un
valore speciale, appunto quello di segnale di sincronizzazione, e vedere il
tutto come una rete sequenziale sincronizzata.

Visto che p non specifica più, in quest’ottica, un valore di ingresso, si può


smettere di annoverarlo tra gli ingressi.

Si dirà d’ora in avanti, che il registro a w bit ha w ingressi e w uscite,


sottintendendo che ha anche un ulteriore ingresso di clock, dedicato però a
portare il segnale di sincronizzazione. In figura, si mostra un tipico esempio di
segnale di sincronizzazione o clock (sarà approfondito successivamente).

p
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

• Lo stato di uscita del registro (w bit, detti capacità del


registro) ad un certo istante verrà anche chiamato contenuto
del registro stesso.

• L’utilizzo di tale contenuto (ad esempio per fornire ingresso


ad una rete combinatoria verrà detto lettura del registro).

• La memorizzazione dei w bit in ingresso ad un certo istante


di sincronizzazione verrà detta scrittura del registro.

• Le implementazioni commerciali dei FF DET sono dotate dei


piedini (variabili di ingresso attive basse) /preset e preclear
che consentono di impostare il valore iniziale del FF a
uno o zero, rispettivamente.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

Pilotaggio dei registri


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

È fondamentale capire bene che i registri memorizzano uno stato di ingresso


quando arriva il clock.

Il fatto che due stati di ingresso ai registri, presentati su istanti di clock (fronti di
salita) consecutivi, siano identici, adiacenti o non adiacenti non riveste alcuna
importanza.

Quindi:

Tra due fronti di salita del clock, lo stato di ingresso ai registri può cambiare
in qualunque modo (o non cambiare affatto). Al nuovo fronte di salita del
clock, lo stato di ingresso presente verrà memorizzato (come se fosse un nuovo
stato, anche se identico al precedente).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

Una rete sequenziale sincronizzata è, in prima approssimazione,


una collezione di registri e di reti combinatorie, montati in
qualunque modo.

E’ fondamentale che non ci siano anelli di reti combinatorie (che


invece darebbero vita ad una rete sequenziale asincrona), e che i
registri abbiano tutti lo stesso clock.

Ci possono essere senza alcun problema, invece, anelli che


abbiano registri al loro interno, in quanto questo non crea alcun
problema.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

In figura si mostrano degli schemi di reti sequenziali sincronizzate. La figura a


destra mostra un esempio di rete sequenziale sincronizzata in cui ci sono degli
ammissibili in quanto fra le reti combinatorie ci sono sempre dei registri.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

In figura si mostra lo schema generale di una rete sequenziale sincronizzata:

L’unica regola di pilotaggio che si deve garantire (quella dalla quale discende
tutto il resto) è che:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

La regola di pilotaggio ha delle importanti implicazioni.

Non si può fare il clock veloce quanto si vuole. In particolare, se si


vuole che uno stato di ingresso, attraverso le reti combinatorie,
concorra a formare gli ingressi ai registri, bisogna dare il tempo a
chi pilota la rete di:

a) produrre un nuovo stato di ingresso,

b) di farlo arrivare, attraverso le reti combinatorie, fino in ingresso ai


registri.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

Per dimensionare il periodo T di clock in modo da tener conto dei tre vincoli
sopra scritti, noti i ritardi definiti, occorre rispettare le seguenti condizioni:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

Sulla base delle considerazioni precedenti, si puo disegnare la temporizzazione


di una generica rete sequenziale sincronizzata.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

Considerazioni importante
Nelle RSS, lo stato di ingresso (opportunamente modificato dalle reti
combinatorie) viene campionato all’arrivo del clock. Cosa faccia lo stato di
ingresso tra due clock non ha alcuna importanza, purché si stabilizzi in tempo.

Non ha alcuna importanza:


• se cambia di n bit, con n>1
• se non cambia affatto, e rimane identico per due fronti di salita del clock.

Nell’ultimo caso la rete vedrà sempre due stati di ingresso differenti (perché
presentati ad istanti differenti).

Le RSS evolvono sul fronte in salita del clock e non quando cambiano gli
ingressi. Questa caratteristica strutturale consente di fare un sacco di cose in più
rispetto a quello che si può fare con le reti sequenziali sincronizzate, nelle quali si
è vincolati a cambiare gli ingressi uno alla volta, e a far evolvere la rete soltanto
con il cambiamento degli ingressi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1

Attenzione:

Le tematiche trattate in questa lezione (registri e introduzione alla


reti sequenziali sincronizzate) fanno riferimento la capitolo 5,
paragrafo 1 del libro di testo consigliato per la parte di reti logiche.

Si consiglia lo studente di leggere attentamente il capitolo, con


esclusione delle parti in cui ci sono le descrizioni in Verilog.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S2
Titolo: Il segnale di clock
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
Il segnale di clock
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S2
Titolo: Il segnale di clock
Attività n°: 1

Prima delle reti sequenziali sincronizzate, sono state presentate i seguenti


tipi di reti logiche:

1) combinatorie, non dotate di memoria, in cui lo stato di uscita dipende


solamente dallo stato in ingresso alla rete stessa.

1) reti sequenziali asincrone, dotate di elementi di memoria, in cui il loro


stato di uscita non solo dipende dallo stato di ingresso, ma dipende
anche da uno stato interno in cui si trovano nell’instante precedente
alla presentazione di un nuovo ingresso.

Le reti asincrone sono tali in quanto il cambiamento di stato di uscita


avviene, dopo un certo tempo di attraversamento, in seguito al
cambiamento dello stato interno, che a sua volta può cambiare in funzione
dello stato di ingresso.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S2
Titolo: Il segnale di clock
Attività n°: 1

Le reti sequenziali asincrone sono quelle che evolvono soltanto in


corrispondenza di istanti temporali ben precisi, detti appunto
istanti di sincronizzazione.

Tali istanti devono essere opportunamente distanziati (non possono


essere troppo ravvicinati).

Come si realizza fisicamente la sincronizzazione? Portando, alle


reti, un segnale di ingresso particolare, detto clock.

Tale segnale scandisce, con le sue transizioni, la sincronizzazione


della rete.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S2
Titolo: Il segnale di clock
Attività n°: 1

Il segnale di clock

Il clock è, normalmente, un segnale a forma d’onda rettangolare periodica, di


frequenza nota. In figura si mostra un esempio di tale segnale.

Non necessariamente il duty-cycle, ovvero il rapporto fra il tempo in cui resta a


valore alto e il periodo totale, è del 50% (onda quadra).

Il duty-cycle non può essere ne troppo stretto né, ovviamente, troppo largo.

L’evento che sincronizza la rete che riceve questo segnale è, normalmente, il


fronte di salita del clock.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S2
Titolo: Il segnale di clock
Attività n°: 1

La velocità del clock

La velocità o frequenza di clock è il numero di commutazioni tra i due livelli


logici basso e alto del segnale stesso.

La frequenza del segnale di clock è espressa in cicli al secondo, o hertz, e


suoi multipli.

Si vedrà in seguito che una CPU è una rete sequenziale sincronizzata che
per eseguire un'istruzione in genere “prende” più cicli di clock.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S2
Titolo: Il segnale di clock
Attività n°: 1

Note storiche (da Wikipedia)

L'unità di calcolo del calcolatore Z1 (che utilizzava la tecnologia


elettromeccanica, non elettronica) costruito dal tedesco Konrad Zuse nel 1938
andava da 0,3 cicli al secondo fino al massimo di 1 hertz.

La velocità di clock del primo microprocessore moderno, l'Intel 4004 progettato


dall'italiano Federico Faggin nel 1971, era di 740 kHz.

Le attuali CPU dei personal computer raggiungono e superano ormai i 3


Gigahertz.

In queste moderne CPU essendo la velocità di clock così elevata, essa viene
generata da un minuscolo oscillatore al quarzo posto all'interno della stessa
CPU, regolabile tramite il BIOS.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S2
Titolo: Il segnale di clock
Attività n°: 1

Il generatore di clock (da Wikipedia)

Il segnale di clock viene normalmente generato da un


oscillatore al quarzo.

Si tratta di un circuito elettronico che usa la risonanza


meccanica di un cristallo piezoelettrico vibrante per ottenere un
segnale elettrico caratterizzato da una frequenza molto precisa.

Questa frequenza è comunemente usata per mantenere una


sincronia (come negli orologi al quarzo), per ottenere appunto
un segnale di clock stabile per i circuiti integrati digitali, e per
stabilizzare la frequenza dei segnali nei trasmettitori radio.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
Esempi di domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Esempi di domande di esame:

• Dare la definizione di registro

• Realizzazione circuitale di un registro a W bit

• Enunciare le regole di pilotaggio di un registro

• Gli stati di ingresso successivi di un registro devono essere


adiacenti. Vero o falso? Perché?
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Esempi di domande di esame:

 Differenze fra le reti sequenziali asincrone e quelle sincronizzate

 Definizione di rete sequenziale sincronizzata e principali regole di


progetto (cosa si può fare e cosa non si può fare nella
realizzazione di tali reti).

 Disegnare lo schema generale di una rete sequenziale


sincronizzata e discutere le regole di pilotaggio

 Temporizzazione di una generica rete sequenziale sincronizzata


(con spiegazione dei tempi considerati).

 Cosa è il segnale di clock?


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19
Titolo: Contatori, Sommatori, Registri Multi-funzionali
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
I Contatori
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19
Titolo: Contatori, Sommatori, Registri Multi-funzionali
Attività n°: 1

Registro contatore: definizione funzionale

Un contatore è una rete sequenziale sincronizzata il cui stato


di uscita può essere interpretato come un numero che,
all’arrivo di ogni segnale di sincronizzazione viene:
• incrementato (contatore up) o
• decrementato (contatore down) o
• incrementato o decrementato in dipendenza del valore di
un’opportuna variabile di comando (contatore up/down ).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19
Titolo: Contatori, Sommatori, Registri Multi-funzionali
Attività n°: 1

Registro contatore: specifiche di progetto

Le specifiche di un contatore debbono quindi includere la base β in


cui il numero verrà espresso, il numero N delle sue cifre e il suo
tipo (numero naturale o numero intero con o senza virgola ).

In seguito saranno trattati solo contatori up per numeri naturali,


essendo la struttura degli altri tipi di contatore una generalizzazione
di quelli che saranno presentati.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19
Titolo: Contatori, Sommatori, Registri Multi-funzionali
Attività n°: 1

Registro contatore: realizzazione

Si può realizzare un contatore di questo up con un modulo


sommatore ed un registro.

Il sommatore sarà una rete combinatoria che lavora in base β


capace di sommare due numeri a N cifre.

Visto che si deve incrementare sempre di uno, tanto vale che


uno dei due ingressi sia 0, ed il riporto entrante sia uguale ad 1.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19
Titolo: Contatori, Sommatori, Registri Multi-funzionali
Attività n°: 1

In figura si riporta un contatore up per un numero naturale ad N cifre in base β

Riporto entrante

Attenzione: Il numero di W degli elementi del registro è pari a


N*NumeroBitCodificaDiUnaCifra
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19
Titolo: Contatori, Sommatori, Registri Multi-funzionali
Attività n°: 1

Un contatore può essere anche ottenuto connettendo N


elementi di contatore, cioè connettendo N contatori
espandibili ad una cifra in base β, aventi ciascuno la
struttura di mostrata nella figura a destra.

La connessione va effettuata tramite la catena dei riporti.

Il riporto in uscita eu di ogni elemento di contatore si riporta


in ingresso alla variabile ei del successivo elemento (uno
per ogni cifra). Inoltre, si imposta a 1 il valore della
variabile ei dell’elemento di contatore nella posizione meno
significativa.

In alternativa, tale variabile può fungere da abilitazione al


conteggio, nel senso che il conteggio avviene o non
avviene se, all’arrivo di un segnale di sincronizzazione,
essa vale 1 o 0.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19
Titolo: Contatori, Sommatori, Registri Multi-funzionali
Attività n°: 1

La lezione relativa ai contatori fa riferimento al capitolo 5, paragrafo 2 del


libro di testo consigliato per la parte di Reti Logiche.

Si consiglia lo studente di approfondire la tematica sul libro, escludendo le


descrizioni in Verilog.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19/S1
Titolo: SOMMATORI
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Sommatori
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19/S1
Titolo: SOMMATORI
Attività n°: 1

In questa lezione di approfondimento sarà brevemente introdotta la


rete combinatoria che si occupa di effettuare la somma di due
numeri naturali su N cifre rappresentati in base β.

Come visto in precedenza, questa rete, detta sommatore, può


essere utilizzata per realizzare registri contatori, molto utili
all'interno dei calcolatori elettronici.

Si presuppone che lo studente abbia acquisito le competenze di


base relative alla rappresentazione dei numeri naturali su N cifre
rappresentati in base β.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19/S1
Titolo: SOMMATORI
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19/S1
Titolo: SOMMATORI
Attività n°: 1

In figura si mostra il circuito logico combinatorio in grado di sommare due numeri


ad n cifre in base β.
n cifre che in caso di
rappresentazione binaria
corrispondono ad n bit

Cin e Cout sono, rispettivamente, i


riporti in ingresso ed in uscita e sono
sempre un singolo bit
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19/S1
Titolo: SOMMATORI
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19/S1
Titolo: SOMMATORI
Attività n°: 1

Full adder in base 2

Come effettivamente si realizza un full adder dipende dalla base e dalla codifica. Il
full adder in base 2 è un circuito che fa somme di una cifra in base 2, con riporto.
In figura si mostra il simbolo del full adder in base due.

Si tratta di una una rete combinatoria con 3


ingressi e 2 uscite, e quindi dobbiamo
essere in grado di sintetizzare.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19/S1
Titolo: SOMMATORI
Attività n°: 1

• Per quanto riguarda la produzione del riporto uscente, non ci sono problemi: si può fare
in forma SP con 3 porte AND a 2 ingressi ed una porta OR a tre ingressi.
• Per quanto riguarda la produzione della somma si, si osserva che essa è ad uno se e
solo se il numero di 1 in ingresso è dispari.
Per quest’ultimo, esiste una semplice realizzazione, fatta tramite porte XOR. Mettere più
porte XOR in cascata (eventualmente ad albero) consente di fare circuiti che riconoscono
un numero dispari di 1, che cioè danno 1 quando lo stato di ingresso ha un numero dispari
di 1.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19/S1
Titolo: SOMMATORI
Attività n°: 1

In figura, si mostra la sintesi del full adder in base 2. Esso è una rete a 2 livelli di
logica con tempo di attraversamento pari a 2 τ, dove τ è il tempo di attraversamento di
un livello di logica.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19/S2
Titolo: REGISTRI MULTI-FUNZIONALI
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
Registri multifunzionali
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19/S2
Titolo: REGISTRI MULTI-FUNZIONALI
Attività n°: 1

Registri multifunzionali: definizione funzionale

• Un registro multifunzionale è una rete che, all’arrivo del


clock, memorizza nel registro stesso una fra K funzioni
combinatorie possibili, scelte impostando un certo
numero di variabili di comando (log2 K).

• Tali funzioni combinatorie potranno essere fatte in un modo


qualunque, ad esempio potranno avere in ingresso l’uscita
del registro stesso (ed altre variabili logiche).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19/S2
Titolo: REGISTRI MULTI-FUNZIONALI
Attività n°: 1

Registri multifunzionali: realizzazione


In figura si mostra lo schema base di un
registro multifunzionale.

Si realizza con un multiplexer a K


ingressi, alcune reti combinatorie ed un
registro.

In realtà si hanno M multiplexer a K


ingressi in parallelo.

Si nota quindi un leggero abuso di


notazione che sara mantenuto anche di
seguito per rendere piu leggere le
descrizioni delle reti.

Al registro viene associato il nome OUTR


(output register).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19/S2
Titolo: REGISTRI MULTI-FUNZIONALI
Attività n°: 1

Registri multifunzionali: un esempio

Sii consideri come esempio un registro da quattro bit e due


funzioni, definite come segue:

1) caricamento parallelo: all’arrivo del segnale di


sincronizzazione nel registro viene memorizzato lo stato della
variabile di ingresso.

2) traslazione sinistra: all’arrivo del segnale di sincronizzazione


nel registro viene memorizzato il vecchio contenuto, traslato
verso sinistra di una posizione e con inserzione del bit 0 nella
posizione meno significativa.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19/S2
Titolo: REGISTRI MULTI-FUNZIONALI
Attività n°: 1

Registri multifunzionali: un esempio


• La funzione di caricamento
parallelo viene espletata se,
all’arrivo del segnale di
sincronizzazione, la variabile di
comando b0 vale 0;

• La funzione di traslazione sinistra


viene espletata se, all’arrivo del
segnale di sincronizzazione, la
variabile di comando b0 vale 1.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19/S2
Titolo: REGISTRI MULTI-FUNZIONALI
Attività n°: 1

L'approfondimento relativo ai registri multifunzionali è stato estratto dal


capitolo 5, paragrafo 3 del libro di testo consigliato per la parte di Reti
Logiche.

Si consiglia lo studente di approfondire la tematica sul libro, escludendo le


descrizioni in Verilog.
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 19/s2
Titolo: Contatori, sommatori, registri multi-funzionali
Attività n°: 2

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche

Reti Sequenziali Sincronizzate


Esempi domande di esame
Prof. Pietro Ducange
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 19/s2
Titolo: Contatori, sommatori, registri multi-funzionali
Attività n°: 2

Esempi domande di esame

• Cosa è un registro contatore?

• Quali sono i parametri da fissare (specifiche di progetto) quando si vuole


realizzare un registro contatore?

• Disegnare un registro contatore

• Cosa si intende per connessione tramite la catena dei riporti

• Sintesi del full adder in base 2


Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 19/s2
Titolo: Contatori, sommatori, registri multi-funzionali
Attività n°: 2

Esempi domande di esame

• Cosa è un registro multifunzionale?

• Disegnare lo schema base di un registro multifunzionale

• Fare un esempio pratico di registro multifunzionale


Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 19/s3
Titolo: Contatori, sommatori, registri multi-funzionali
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Webinar
Basi di reti logiche
Prof. Pietro Ducange
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 19/s3
Titolo: Contatori, sommatori, registri multi-funzionali
Attività n°: 1

Webinar

• Si invitano gli studenti a seguire il webinar come in oggetto alla


presente lezione.

• Tutti i webinar vengono ripetuti ciclicamente durante l’anno


accademico secondo un calendario a disposizione degli studenti.

• Per maggiori informazioni sui calendari contattare i TOL o il docente.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20
Titolo: IL MODELLO DI MOORE
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
Il modello di Moore
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20
Titolo: IL MODELLO DI MOORE
Attività n°: 1

Modello di Moore per le reti sequenziali sincronizzate


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20
Titolo: IL MODELLO DI MOORE
Attività n°: 1

Legge di temporizzazione per il modello di Moore

Dato S, stato interno marcato ad un certo istante, e dato X ingresso ad un


certo istante immediatamente precedente l’arrivo di un segnale di
sincronizzazione, si deve

1. individuare il nuovo stato interno da marcare S’=A(S,X)

1. attendere l’arrivo del segnale di sincronizzazione

1. promuovere S’ al rango di stato interno marcato, quando il registro


non è più sensibile all’ingresso

1. individuare continuamente Z=B(S’) e presentarlo in uscita


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20
Titolo: IL MODELLO DI MOORE
Attività n°: 1

Una rete di Moore può sempre essere sintetizzata secondo il modello di figura.
STAR è lo status register, cioè il registro che memorizza lo stato interno
presente (marcato).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20
Titolo: IL MODELLO DI MOORE
Attività n°: 1

Si noti che:

• Lo status register è, ovviamente, una batteria di FF DET, che sono non


trasparenti. Pertanto, il nuovo stato interno verrà presentato alla rete RCz
dopo dal fronte del clock.

• A questo punto, la rete non sarà più sensibile all’ingresso, e quindi non
ci sono problemi di nessun tipo.

• Il nuovo stato interno delle RSS è lo stato di uscita della rete RCA, che ha
in ingresso sia gli ingressi della RSS che le variabili di stato.

• Tutto questo sottende una codifica degli stati interni in termini di


variabili logiche.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20
Titolo: IL MODELLO DI MOORE
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20
Titolo: IL MODELLO DI MOORE
Attività n°: 1

L’unica cosa alla quale bisogna stare attenti è la temporizzazione (cioè il


pilotaggio). Una temporizzazione che garantisce il rispetto delle regole già viste
per una rete di Moore è la seguente:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20
Titolo: IL MODELLO DI MOORE
Attività n°: 1

La temporizzazione deriva da quella generale relativa alle reti sequenziali


sincronizzate mostrata nelle lezioni precedenti. TA e TZ rappresentano,
rispettivamente, il tempo di attraversamento delle reti RCA ed RCZ. Si suppone
che TA sia circa uguale a Treg_to_reg_max e a Tin_to_reg_max.

Le condizioni che devono quindi essere soddisfatte sono:


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20
Titolo: IL MODELLO DI MOORE
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20
Titolo: IL MODELLO DI MOORE
Attività n°: 1

La lezione relativa al modello di Moore è stato estratto dal capitolo 5,


paragrafo 4 del libro di testo consigliato per la parte di Reti Logiche.

Si consiglia lo studente di approfondire la tematica sul libro, escludendo le


descrizioni in Verilog.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S1
Titolo: IL MODELLO DI MEALY E MEALY RITARDATO
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
Il modello di Mealy e di Mealy Ritardato
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S1
Titolo: IL MODELLO DI MEALY E MEALY RITARDATO
Attività n°: 1

Modello di Mealy per le reti sequenziali sincronizzate

Tale modello di differenzia da quello di Moore in quanto la


legge che regola gli stati di uscita associa ad ogni coppia
(stato interno, stato di ingresso) uno stato di uscita.

Questo significa che lo stato di ingresso presente all’istante ti


influenza immediatamente l’uscita allo stesso istante.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S1
Titolo: IL MODELLO DI MEALY E MEALY RITARDATO
Attività n°: 1

In figura si mostra un modello strutturale per le reti di Mealy:

La rete combinatoria implementa le leggi per l'aggiornamento dello stato e per


l'aggiornamento dell’uscita. Essa può essere vista come composta da due reti
distinte con gli stessi ingressi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S1
Titolo: IL MODELLO DI MEALY E MEALY RITARDATO
Attività n°: 1

In figura si mostra la temporizzazione che garantisce un corretto pilotaggio per le


reti di Mealy:

Si introduce il ritardo TRC, che rappresenta il tempo di attraversamento della rete


combinatoria RC.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S1
Titolo: IL MODELLO DI MEALY E MEALY RITARDATO
Attività n°: 1

Anche in questo caso la temporizzazione si ottiene da quella generale per le reti


sequenziali sincronizzate.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S1
Titolo: IL MODELLO DI MEALY E MEALY RITARDATO
Attività n°: 1

Il vantaggio di questo modello, rispetto al precedente modello di Moore, è che al variare


dell’ingresso posso produrre un nuovo stato di uscita senza dover aspettare il successivo
fronte del clock.

Nelle reti di Moore l’uscita varia quando varia il clock (perché dipende solo dallo stato
interno), nelle reti di Mealy varia anche quando varia lo stato di ingresso.

Si dice che nelle reti di Moore, l’uscita è un clock indietro rispetto all’ingresso che l’ha
generata. Dipende, infatti, soltanto dal penultimo stato di ingresso.
nelle reti di Mealy, l’uscita dipende anche dall’ultimo ingresso che l’ha generata.

Essendo la legge B più flessibile che nel caso precedente, in genere si riescono a risolvere
gli stessi problemi con un numero minore di stati interni
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S1
Titolo: IL MODELLO DI MEALY E MEALY RITARDATO
Attività n°: 1

Modello di Mealy Ritardato


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S1
Titolo: IL MODELLO DI MEALY E MEALY RITARDATO
Attività n°: 1

In figura si mostra un modello strutturale per le reti di Mealy ritardato:


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S1
Titolo: IL MODELLO DI MEALY E MEALY RITARDATO
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S1
Titolo: IL MODELLO DI MEALY E MEALY RITARDATO
Attività n°: 1

Legge di temporizzazione del modello di Mealy ritardato

Dato S, stato interno marcato ad un certo istante, e dato X ingresso ad un certo


istante precedente l’arrivo di un segnale di sincronizzazione, la rete deve:
1. individuare SIA il nuovo stato interno da marcare S’=A(S,X), SIA il nuovo stato di
uscita Z=B(S,X)
2. attendere l’arrivo del segnale di sincronizzazione
3. promuovere S’ al rango di stato interno marcato, e promuovere Z al rango di
nuovo stato di uscita.

Importantissimo:
Lo stato di uscita cambia dopo il clock, ed il suo valore dipende dallo stato interno
e di ingresso precedenti all’arrivo del clock.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S1
Titolo: IL MODELLO DI MEALY E MEALY RITARDATO
Attività n°: 1

In figura si mostra la temporizzazione che garantisce un corretto pilotaggio per le


reti di Mealy ritardato:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S1
Titolo: IL MODELLO DI MEALY E MEALY RITARDATO
Attività n°: 1

Anche in questo caso la temporizzazione si ottiene da quella generale per le reti


sequenziali sincronizzate.

Il tempo T fra due segnali di sincronizzazione deve soddisfare le seguenti


condizioni:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S1
Titolo: IL MODELLO DI MEALY E MEALY RITARDATO
Attività n°: 1

Osservazioni finali

• Si possono certamente montare reti di Mealy ritardato in qualunque


configurazione.

• Non sono trasparenti, come le reti di Mealy (in cui ho una connessione
diretta ingresso-uscita).

• Inoltre, il fatto che le uscite siano costanti per un intero periodo di


clock fa sì che si possano mettere catene di reti di Mealy ritardato
arbitrariamente lunghe, essendo sicuri che, se si pilotano gli ingressi di
una rete a valle con le uscite di una rete a monte si avrà mai problemi
di temporizzazione, in quanto le uscite sono certamente stabili a
cavallo dei fronti di clock, e cambiano soltanto dopo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S1
Titolo: IL MODELLO DI MEALY E MEALY RITARDATO
Attività n°: 1

La lezione relativa ai modelli di Mealy e Mealy ritardato sono state estratte


dal capitolo 5, paragrafi 7 ed 8 del libro di testo consigliato per la parte di Reti
Logiche.

Si consiglia lo studente di approfondire la tematica sul libro, escludendo le


descrizioni in Verilog.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S2
Titolo: IL FLIP FLOP JK: DESCRIZIONE E SINTESI
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
Il flip flop JK: descrizione e sintesi
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S2
Titolo: IL FLIP FLOP JK: DESCRIZIONE E SINTESI
Attività n°: 1

Il flip flop JK: descrizione funzionale:

Il FF JK è una rete sequenziale sincronizzata con due


ingressi ed un’uscita che, all’arrivo del clock, valuta i
suoi due ingressi j e k, e si comporta come segue:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S2
Titolo: IL FLIP FLOP JK: DESCRIZIONE E SINTESI
Attività n°: 1

In figura si mostrano, rispettivamente, il simbolo di un FF-JK (a), la sua tabella di


flusso (b) e la sua tabella di applicazione (c ).
Nel caso di reti sequenziali sincronizzate tutti gli stati sono stabili per un periodo di
clock, se la rete è pilotata correttamente. Ad ogni clock si ha una nuova
transizione, che in alcuni casi può concretizzarsi nella marcatura dello stesso
stato che si aveva in precedenza.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S2
Titolo: IL FLIP FLOP JK: DESCRIZIONE E SINTESI
Attività n°: 1

Il FF JK può essere sintetizzato secondo il modello strutturale di Moore


mostrato in figura. Il registro STAR ha un solo bit di stato e la rete RCZ è
un corto circuito.

La sintesi si effettua in maniera analogo a quella delle reti sequenziali


asincrone, con il vantaggio che non bisogna adottare alcun accorgimento
per la codifica degli stati interni e per la sintesi della rete RCA.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S2
Titolo: IL FLIP FLOP JK: DESCRIZIONE E SINTESI
Attività n°: 1

Sintesi finale
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S2
Titolo: IL FLIP FLOP JK: DESCRIZIONE E SINTESI
Attività n°: 1

L’ approfondimento relativo al FF JK è stato estratto dal capitolo 5, paragrafo


5 del libro di testo consigliato per la parte di Reti Logiche.

Si consiglia lo studente di approfondire la tematica sul libro, escludendo le


descrizioni in Verilog.
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 20/s2
Titolo: Modelli di sintesi di moore e mealy
Attività n°: 2

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche

Reti Sequenziali Sincronizzate


Esempi domande di esame
Prof. Pietro Ducange
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 20/s2
Titolo: Modelli di sintesi di moore e mealy
Attività n°: 2

Esempi domande di esame

• Descrizione funzionale del modello di Moore per reti sequenziali sincronizzate


e sua legge di temporizzazione.

• Disegnare e discutere il modello strutturale di Moore per reti sequenziali


sincronizzate

• Disegnare la temporizzazione che garantisce il corretto pilotaggio dei una rete


di Moore

• La rete di Moore evolve in modo deterministico? Se si mostrare come.


Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 20/s2
Titolo: Modelli di sintesi di moore e mealy
Attività n°: 2

Esempi domande di esame

• Disegnare e discutere il modello strutturale di Mealy per reti sequenziali sincronizzate

• Disegnare la temporizzazione che garantisce il corretto pilotaggio dei una rete di Mealy

• Vantaggi del modello di Mealy rispetto al modello di Moore

• Disegnare e discutere il modello strutturale di Mealy ritardato per reti sequenziali sincronizzate

• Disegnare la temporizzazione che garantisce il corretto pilotaggio dei una rete di Mealy ritardato

• Differenze fra le reti di Mealy e Mealy ritardato

• Descrizione e sintesi di un FF JK
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 20/s3
Titolo: Modelli di sintesi di moore e mealy
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche

Didattica Interattiva: Mappe Concettuali


Prof. Pietro Ducange
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 20/s3
Titolo: Modelli di sintesi di moore e mealy
Attività n°: 1

Mappe Concettuali
Si invita lo studente a realizzare una mappa concettuale che sintetizzi la
tematica relativa alle reti logiche sequenziali, sia asincrone sia
sincronizzate

Lo studente troverà all’interno della piattaforma di studio eCampus una


specifica esercitazione relativa a questa attività didattica interattiva.

Per maggiori informazioni su come realizzare mappe concettuali e su


come utilizzare gli appositi strumenti messi a disposizione dalla
piattaforma di studio di invita lo studente a consultare la guida dello
studente e/o contattare il proprio TOL.
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 20/s3
Titolo: Modelli di sintesi di moore e mealy
Attività n°: 1

Mappe Concettuali

Si invita lo studente a caricare sul proprio ePortfolio, in formato PDF, la


versione finale della mappa concettuale realizzata.

Lo studente è libero di utilizzare qualsiasi strumento per la


realizzazione della mappa, l’importante è effettuare un caricamento
della medesima in PDF sull’ePorfolio.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21
Titolo: DESCRIZIONE DELLE RSA COMPLESSE
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate Complesse:
Descrizione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21
Titolo: DESCRIZIONE DELLE RSA COMPLESSE
Attività n°: 1

Il problema dei tre modelli di reti sequenziali sincronizzate visti finora è che si
possono applicare soltanto a reti molto semplici.

Se si devono sintetizzare reti complesse, la stessa “pulizia concettuale” dei modelli


diventa un limite.

Si prende come punto di partenza il modello di Mealy ritardato, che abbiamo visto
avere diverse caratteristiche interessanti:
• sono non trasparenti
• hanno uscite stabili, che cambiano in tempi certi
• non sono rallentate da percorsi combinatori troppo lunghi
• possono essere montate in reazione senza problemi
• hanno una legge B flessibile, che porta in genere a risolvere problemi usando un
numero minore di stati interni (vedremo successivamente esempi di sintesi
di reti secondo il modello di Moore e Mealy ritardato).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21
Titolo: DESCRIZIONE DELLE RSA COMPLESSE
Attività n°: 1

Esempio di rete sequenziale sincronizzata complessa

Si supponga di voler descrivere, usando il modello di Mealy Ritardato, una rete che
conta, modulo 16, il numero di sequenze corrette 00, 11, 01 ricevute in
ingresso. In pratica, ogni volta che vede una sequenza corretta, incrementa di 1 il
valore in uscita, rappresentato su 4 bit.

Tale rete ha due ingressi, quattro uscite, e quanti stati interni?

Facendo un conto rapido, se ci vogliono 3 stati interni per riconoscere una


sequenza di tre passi corretti (visto che si usa una rete di Mealy ritardato, perché
se fosse stata di Moore ce ne sarebbero voluti 4), allora i 4 bit di uscita dovrebbero
cambiare di uno ogni tre stati interni, e ci vogliono (a occhio) 3*16=48 stati interni.
Ci vuole un registro STAR a 6 bit, la descrizione e la sintesi della rete diventano
ingestibili.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21
Titolo: DESCRIZIONE DELLE RSA COMPLESSE
Attività n°: 1

Esempio di rete sequenziale sincronizzata complessa

In realtà questa rete si potrebbe sintetizzare in maniere molto più semplice.


Si potrebbe:

• Sintetizzare un riconoscitore di una sequenza come rete di Mealy ritardato, con un


bit di uscita
• Sintetizzare un registro contatore a 4 bit in base 2, che prende in ingresso ei
(riporto entrante) l’uscita della rete riconoscitore, e produce l’uscita su 4 bit.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21
Titolo: DESCRIZIONE DELLE RSA COMPLESSE
Attività n°: 1

Esempio di rete sequenziale sincronizzata complessa: sintesi finale


Il contatore, se non si considera il riporto uscente (del quale infatti nulla ci
interessa, ai fini della risoluzione del problema) è una rete di Moore. Si vedrà
in seguito la sintesi del riconoscitore di sequenza come esercizio.

Si ricava immediatamente la struttura a destra, che non è una struttura di


Mealy ritardato, in quanto non si distinguono più due registri, uno dei quali ha
variabili che rientrano (STAR) e l’altro no (OUTR).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21
Titolo: DESCRIZIONE DELLE RSA COMPLESSE
Attività n°: 1

Modello generale di una rete sequenziale sincronizzata complessa

In figura si mostra uno schema generale del modello per RSS complessa:

1) Si ha un registro di stato STAR;

2) Gli altri registri assumono le funzioni di registri


operativi RQ-1 , ... , R1, R0, dimensionati ciascuno
per contenere una combinazione di bit avente un
significato unitario per il progettista; ciò equivale a
differenziare il registro OUTR previsto nelle reti di
Mealy Ritardato in tanti registri e soprattutto a
rendere disponibile il contenuto di tali registri come
stato di ingresso delle varie reti combinatorie;

3) le variabili di uscita della rete sono supportate


direttamente da una parte (o da tutti) i registri
operativi, in modo da avere stati di uscita stabili per
un tempo pari a T.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21
Titolo: DESCRIZIONE DELLE RSA COMPLESSE
Attività n°: 1

Modello generale di una rete sequenziale sincronizzata complessa


La temporizzazione del modello di rete mostrato in precedenza è riportato in figura
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21
Titolo: DESCRIZIONE DELLE RSA COMPLESSE
Attività n°: 1

La descrizione di reti sequenziali sincronizzate secondo il modello


mostrato viene effettuato a livello di linguaggio di trasferimento tra
registri.

Un tipico linguaggio di trasferimento fra registri gestisce:


- Micro-istruzioni o micro-operazioni, cioè assegnamenti a registri
operativi
- Micro-salti, cioè assegnamenti al registro di stato

Micro-istruzioni e micro-salti agiscono sempre sul fronte in salita del


clock. In particolare, considerando che la rete si trovi in un certo stato
specificato dal registro STAR, all'arrivo del fronte in salita del clock ogni
registro (operativo e di stato) viene aggiornato in funzione del valore degli
ingressi e dei valori dei registri operativi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21
Titolo: DESCRIZIONE DELLE RSA COMPLESSE
Attività n°: 1

Tutte le reti prevedono la presenza di un ingresso, detto


piedino di reset (attivo basso), che all’avvio della rete viene
messo a zero. In questo caso, il registro STAR, sul fronte in
discese di reset, assume lo stato iniziale, secondo quanto
previsto da chi ha progettato la rete. Se è previsto, anche i
registri operativi assumono un certo valore iniziale.

Attenzione: nella descrizione tramite linguaggio di


trasferimento tra registri, non si possono mai omettere i micro-
salti. Si possono omettere micro-istruzioni che non portano ad
effettivi cambiamenti di stato dei registri operativi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21
Titolo: DESCRIZIONE DELLE RSA COMPLESSE
Attività n°: 1

Descrizione generale con pseudo-linguaggio di trasferimento fra registri


Si supponga di voler gestire una rete con Q registri operativi (R0,…, RQ-1) e K stati
che può assumere il registro STAR. Il numero di bit dei registri operativi lo sceglie il
progettista, mentre quello del registro STAR è pari a log2 K.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21
Titolo: DESCRIZIONE DELLE RSA COMPLESSE
Attività n°: 1

Nella slide precedente è stato mostrato con un pseudo-codice inventato un


esempio di descrizione di rete sequenziale sincronizzata complessa.

Esistono vari linguaggi e strumenti per effettuare tale descrizione, come per
esempio il Verilog utilizzato nel libro di testo consigliato ma non oggetto di questo
corso.

Gli studenti sono tenuti a sapere che tali linguaggi esistono e ad aver capito cosa
significa descrizione tramite linguaggio di trasferimento fra registri (la descrizione
con pseudo-linguaggio va capita e saputa).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21
Titolo: DESCRIZIONE DELLE RSA COMPLESSE
Attività n°: 1

La lezione relativa alla descrizione delle reti sequenziali sincronizzate


complesse è stata estratta dal capitolo 5, paragrafo 9 del libro di testo
consigliato per la parte di Reti Logiche.

Si consiglia lo studente di approfondire la tematica sul libro, escludendo le


descrizioni in Verilog e gli esempi di reti specifiche.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S1
Titolo: SCOMPOSIZIONE IN PARTE OPERATIVA E PARTE CONTROLLO
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche

Reti Sequenziali Sincronizzate Complesse:


Scomposizione in Parte Operativa e Parte
Controllo
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S1
Titolo: SCOMPOSIZIONE IN PARTE OPERATIVA E PARTE CONTROLLO
Attività n°: 1

Le reti sequenziali sincronizzate descritte tramite linguaggio di trasferimento fra


registri possono essere implementate seguendo un modello strutturale specifico.

Tale modello, prevede di dividere la rete in una parte operativa ed una parte di
controllo come mostrato in figura.

ingressi Parte uscite


Operativa

Variabili di comando Variabili di


condizionamento

Parte
Controllo
clock
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S1
Titolo: SCOMPOSIZIONE IN PARTE OPERATIVA E PARTE CONTROLLO
Attività n°: 1

Parte Operativa

Essa è in genere costituita dai registri operativi e da due reti combinatorie:


la rete combinatoria operativa e la rete combinatoria di condizionamento.

La rete combinatoria operativa è a sua volta formata da tante reti


combinatorie quante sono le le micro-operazioni indipendenti che
interessano i registri operativi.

La rete combinatoria operativa ha in ingresso le variabili di ingresso della


rete, lo stato interno marcato dai registri operativi e le variabili di comando.
Essa produce in uscita gli stati di ingresso dei registri operativi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S1
Titolo: SCOMPOSIZIONE IN PARTE OPERATIVA E PARTE CONTROLLO
Attività n°: 1

Parte Operativa

In pratica, si ha che la parte relativa ai registri operativi viene gestita come


dei registri multifunzionali comandati da le variabili di comando che
provengono dalla parte controllo.

La rete combinatoria di condizionamento prende in ingresso le variabili di


ingresso e lo stato dei registri operativi. Fornisce in uscita delle condizioni
che saranno utilizzate dalla parte di controllo per la gestione dei micro-salti.

Per l'implementazione della parte operativa, bisogna isolare tutte le micro-


operazioni indipendenti relative ai registri operativi.

Si parte analizzando micro-operazioni nei vari casi dello “switch" del


linguaggio di trasferimento fra registri.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S1
Titolo: SCOMPOSIZIONE IN PARTE OPERATIVA E PARTE CONTROLLO
Attività n°: 1

Parte Controllo

Questa rete è in genere implementata come una rete sequenziale


sincronizzata di Moore. Si parte dalle leggi di aggiornamento del
registro STAR nei vari casi dello “switch" del linguaggio di
trasferimento fra registri.

Essa gestisce l’evoluzione del registro STAR: prende in ingresso le


variabili di condizionamento e fornisce in uscite la variabili di
comando, che verranno utilizzate dalla parte operativa.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S1
Titolo: SCOMPOSIZIONE IN PARTE OPERATIVA E PARTE CONTROLLO
Attività n°: 1

Parte Controllo

Le variabili di condizionamento sono tante quante le condizioni


indipendenti che portano a micro-salti.

Infatti, nella parte controllo si implementano i micro-salti ed essa


non ha nessun contatto con il mondo esterno (inteso come
ingressi e uscite della rete).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S1
Titolo: SCOMPOSIZIONE IN PARTE OPERATIVA E PARTE CONTROLLO
Attività n°: 1

In figura si mostra uno schema generale del modello a Parte Operativa e Parte Controllo

Si hanno due RSS interconnesse, però non si ha mai una catena chiusa di
reti combinatorie, perché una delle due (la parte controllo) è di Moore.
La parte operativa si implementa in maniera euristica, utilizzando il piu possibile
delle reti standard ed eliminando ridondanze sia nelle variabili di comando sia
nelle variabili di condizionamento.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S1
Titolo: SCOMPOSIZIONE IN PARTE OPERATIVA E PARTE CONTROLLO
Attività n°: 1

La lezione relativa alla descrizione delle reti sequenziali sincronizzate


complesse è stata estratta dal capitolo 5, paragrafo 10 del libro di testo
consigliato per la parte di Reti Logiche.

Visto il livello di dettaglio affrontato in tale paragrafo, si ritiene sufficiente che


lo studente abbia capito il concetto di base di implementazione delle reti
sequenziali sincronizzate in parte operativa e parte di controllo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S2
Titolo: ACCENNI ALLA STRUTTURA DEL CALCOLATORE
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate Complesse
Accenni alla struttura del calcolatore
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S2
Titolo: ACCENNI ALLA STRUTTURA DEL CALCOLATORE
Attività n°: 1

I calcolatori sono macchine complesse che compiono elaborazioni su dati e la


cui struttura fisica (hardware) è costituita da diversi moduli, ognuno dei quali è in
grado di eseguire un insieme specifico di funzioni. In figura si mostra lo schema a
blocchi di un tipico calcolatore:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S2
Titolo: ACCENNI ALLA STRUTTURA DEL CALCOLATORE
Attività n°: 1

Processione: visione funzionale

Il processore provvede a prelevare dalla memoria principale le istruzioni costituenti il


programma e ad eseguirle, cioè a compiere le operazioni da esse specificate.

La legge di evoluzione nel tempo di un processore è in linea di principio, piuttosto semplice:


«prelevare ed eseguire le istruzioni nell’ordine in cui sono memorizzate nella memoria
principale, fino a quando non viene incontrata un’istruzione che stabilisce esplicitamente un
numero d’ordine diverso da quello sequenziale per la prossima istruzione da eseguire; a
partire da tale istruzione proseguire con le stesse modalità e così via all’infinito».

Le istruzioni si dividono in istruzioni operative (operazioni di lettura, scrittura, aritmetica, che


specificano sia il tipo di operazione sia gli operandi) ed istruzioni di controllo (sono in grado
di alterare il flusso sequenziale di esecuzione).

Le istruzioni saranno approfondite nella parte relativa al linguaggio Assembly del modulo di
Calcolatori Elettronici.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S2
Titolo: ACCENNI ALLA STRUTTURA DEL CALCOLATORE
Attività n°: 1

In figura si mostra un modello funzionale di un semplice calcolatore, estratto dal


capitolo 6, paragrafo 2 del libro di testo di reti logiche. Si consiglia un
approfondimento delle tematica trattate sia nel paragrafo 1 sia nel paragrafo 2
del capitolo 6.
Si nota come il processore sia dotato di registri (gli stessi visti nella descrizione
delle reti sequenziali sincronizzate). Il significato e l'utilizzo di tali registri sarà
approfondito nelle prossime lezioni.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S2
Titolo: ACCENNI ALLA STRUTTURA DEL CALCOLATORE
Attività n°: 1

In figura si mostra uno schema di un calcolatore, estratto dal capitolo 6,


paragrafo 5 del libro di testo di reti logiche. Si invitano gli studenti ad
approfondire il contenuto del paragrafo 5 (solo parte iniziale in cui viene
descritto lo schema del calcolatore).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S2
Titolo: ACCENNI ALLA STRUTTURA DEL CALCOLATORE
Attività n°: 1

In figura si mostra la rete sequenziale


sincronizzata complessa, estratto dal capitolo 6,
paragrafo 6.2 del libro di testo di reti logiche, che
implementa un semplice processore.

Si tratta in genere di una rete implementata con


un linguaggio di trasferimento fra registri,
dividendo la parte operativa dalla parte controllo.

Come si può notare tutte le uscite sono


supportate da registri, c'è una porta tri-state che
gestisce i piedini dei dati (lettura/scrittura
comandata dal registro DIR).
Ci sono il registro STAR per lo stato della rete e
un registro chiamato MJR che serve per gestire
micro-salti con più di due alternative.
Gli altri registri saranno discussi nelle lezioni
successive nel modulo di architetture dei
calcolatori.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S2
Titolo: ACCENNI ALLA STRUTTURA DEL CALCOLATORE
Attività n°: 1

La descrizione e la sintesi della rete della slide precedente consistono nella


implementazione al livello di linguaggio di trasferimento tra registri di tutta l'evoluzione del
processore.

In pratica, devono essere sintetizzate tutte le sotto reti che consentono l’estrazione e
l'esecuzione delle istruzioni, incluso l’accesso alla memoria e allo spazio di I/O.

In questo corso questa fase non sarà trattata. Nel libro di testo consigliato lo studente potrà
vedere come invece tale argomento è trattato in maniera dettagliata.

Allo studente basta aver capito che a partire dalle semplici porte logiche AND, OR e NOT si
arriva, seguendo tutto il percorso fatto fino ad ora, alla descrizione e sintesi di un processore
funzionante.

Nel modulo di architettura dei calcolatori, si studierà ad un livello leggermente più alto (ma
non troppo) come sono organizzati a livello hardware e software i calcolatori elettronici.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
Esempi di domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Esempi di domande di esame

• Disegnare e discutere la struttura di una rete sequenziale sincronizzata


complessa

• Temporizzazione di una rete sequenziale sincronizzata complessa

• Cosa sono i micro-salti e le micro-istruzioni?

• Descrizione generale con pseudo-linguaggio di trasferimento fra registri di una


rete sequenziale sincronizzata complessa

Caricare le risposte alle precedenti 4 domande sull’ePortfolio.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S3
Titolo: Esempi di domande di esame
Attività n°: 1

Esempi di domande di esame

• Come si può scomporre una rete sequenziale sincronizzata complessa

• Descrizione della Parte Operativa

• Descrizione della Parte Controllo

• Disegnare lo schema generale del modello a Parte Operativa e Parte Controllo

• Che tipo di rete logica è il processore? Come si implementa?

• Come si possono classificare le istruzioni di un processore?


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22
Titolo: INTRODUZIONE AL LINGUAGGIO ASSEMBLY
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Organizzazione Funzionale del Calcolatore I:
Introduzione al linguaggio Assembly
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22
Titolo: INTRODUZIONE AL LINGUAGGIO ASSEMBLY
Attività n°: 1

Nelle seguenti lezioni sarà introdotto il linguaggio di programmazione


Assembly con riferimento ai processori della famiglia Intel x86-32.

Un processore, in generale, non fa altro che prelevare una istruzione dalla


memoria ed eseguirla. Tale processo viene ripetuto ciclicamente.

Il linguaggio Assembly, spesso chiamato (erroneamente ma il termine è


accettato) Assembler, è tra i linguaggi di programmazione quello più vicino
al linguaggio macchina.

Il linguaggio macchina è la rappresentazione in codice binario (codice


operativo) delle istruzioni che compongono un programma all’interno della
memoria.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22
Titolo: INTRODUZIONE AL LINGUAGGIO ASSEMBLY
Attività n°: 1

Come detto il precedenza, il linguaggio macchina non è altro che una


incompressibile sequenza di zeri ed uni che codificano le istruzioni.

Sarebbe praticamente impossibile scrivere un programma facendo


riferimento solo a tale linguaggio.

Per questo motivo, esistono linguaggi di programmazione a più alto livello,


maggiormente comprensibili da programmatore.

Fra questi, ad un livello leggermente superiore rispetto al linguaggio


macchina, c’è l’Assembly.

Nel linguaggio Assembly, le stringhe binarie del codice operativo vengono


convertite in maniera biunivoca in semplici nomi da ricordare.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22
Titolo: INTRODUZIONE AL LINGUAGGIO ASSEMBLY
Attività n°: 1

Quello che è importante osservare è che in Assembly si scrivono


direttamente le istruzioni eseguite dal processore.

Si programma, quindi, a basso livello.

Il C++, al contrario, è un linguaggio ad alto livello, i cui programmi devono


quindi essere compilati, cioè tradotti in sequenze di istruzioni comprensibili
dalla macchina.

Mentre una riga di C++ corrisponde a svariate istruzioni macchina (a volte


centinaia), una riga di Assembly corrisponde ad una istruzione.

Visto che viene scritta in termini simbolici (invece che in stringhe binarie,
dovrà poi essere necessariamente tradotta (da un programma che si chiama
assemblatore), ma la traduzione è 1:1 e totalmente meccanica.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22
Titolo: INTRODUZIONE AL LINGUAGGIO ASSEMBLY
Attività n°: 1

Da un lato, lavorare a basso livello rende l’Assembly estremamente


potente: si può scrivere codice altamente efficiente, si vede direttamente
l’hardware (i registri del processore e le interfacce).

Dall’altro, i costrutti sintattici che si possono usare sono estremamente


semplificati. Ad esempio, i costrutti di controllo di flusso del C++ (for,
while, do…while, if…then…else, case, etc.) non esistono.

In Assembly si hanno solo meccanismi di controllo di flusso molto


primitivi.

Lo sforzo di tradurre un costrutto come un ciclo for o un if…then…else in


una sequenza di istruzioni macchina (sforzo che, quando si programma in
C++, fa il compilatore) è lasciato interamente al programmatore, il quale
deve pensare “a basso livello”, cioè come una macchina, invece che “ad
alto livello”, cioè come un essere umano.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22
Titolo: INTRODUZIONE AL LINGUAGGIO ASSEMBLY
Attività n°: 1

Inoltre, in Assembly non esiste il concetto di tipo di variabile (né


controlli associati alla tipizzazione).

Si maneggiano stringhe di bit, e non c’è modo di codificare


l’interpretazione di queste stringhe (cioè di associare un tipo alla
variabile) nel programma.

L’interpretazione delle stringhe di bit (ad esempio come numero


naturale, o come codifica di carattere ASCII) è a carico del
programmatore.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22
Titolo: INTRODUZIONE AL LINGUAGGIO ASSEMBLY
Attività n°: 1

Il fatto di stare così vicino alla macchina si paga in termini di


compatibilità.

Il linguaggio Assembly è specifico del processore: quello per il


processore x86 compatibile del PC non è lo stesso del processore di un
telefonino.

I programmi che scritti in Assembly non sono portabili in alcun modo da


un tipo di processore ad un altro.

Una cosa positiva è che da un linguaggio Assembly all’altro non sono


molte le cose che cambiano, per cui conoscere un linguaggio Assembly e
saper programmare in quello fa sì che ci si riconverta velocemente ad
impararne qualunque altro.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22
Titolo: INTRODUZIONE AL LINGUAGGIO ASSEMBLY
Attività n°: 1

All’atto pratico, l’Assembly ha i seguenti utilizzi fondamentali:

• I programmi che si scrivono sono di norma più veloci ed


efficienti che quelli scritti in linguaggi di alto livello.

• Pratico: La programmazione di alcuni dispositivi (ad esempio,


schede per sistemi dedicati o sistemi embedded) viene
spesso fatta in Assembly. Anche quando si programma un
calcolatore, se si vuole essere certi dell’andamento di una certa
porzione di codice (ad esempio, se si vuole essere certi del
fatto che un dato si trovi in un particolare registro in un dato
istante) l’unica possibilità è togliere di mezzo la compilazione e
lavorare a basso livello.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22
Titolo: INTRODUZIONE AL LINGUAGGIO ASSEMBLY
Attività n°: 1

• Prestazionale: alcuni blocchi di software che devono rispettare


particolari vincoli (eseguire molto velocemente, o occupare
poco spazio) raggiungono meglio questi obiettivi se scritti in
Assembly. Ad esempio, risulta che i codec audio e video siano
spesso scritti in Assembly.

• Culturale: è impossibile che un ingegnere informatico non


conosca l’ Assembly. Non conoscerlo implica non capire come
funziona un processore (anzi, tutto un calcolatore), come
funziona un compilatore, come fare a rendere più efficiente un
programma.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22/S1
Titolo: MODELLO FUNZIONALE A BLOCCHI DI UN CALCOLATORE
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Organizzazione Funzionale del Calcolatore I:
Modello funzionale a blocchi di un calcolatore
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22/S1
Titolo: MODELLO FUNZIONALE A BLOCCHI DI UN CALCOLATORE
Attività n°: 1

Quale che sia la realizzazione fisica, di seguito sarà discusso il modello


funzionale di un calcolatore completo.

Funzionale non vuol dire, infatti, che tutti i calcolatori siano fatti come
mostrato di seguito. Vuol dire che si possono identificare in tutti i calcolatori
dei gruppi di circuiti che svolgono le funzioni descritte.

Nella visione funzionale, si vedrà quindi come funzionano a livello generale


i calcolatori.

Nelle lezioni dei prossimi nuclei tematici, si farà invece riferimento alla
architettura fisica di una specifica famiglia di processori e di calcolatori
basati su tali processori.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22/S1
Titolo: MODELLO FUNZIONALE A BLOCCHI DI UN CALCOLATORE
Attività n°: 1

In figura si mostra lo schema a blocchi di un calcolatore completo.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22/S1
Titolo: MODELLO FUNZIONALE A BLOCCHI DI UN CALCOLATORE
Attività n°: 1

Il sottosistema di ingresso riceve le informazioni provenienti dal


mondo esterno sotto forma di movimenti di organi meccanici, di
variazioni di tensioni, di suoni, di immagini, ecc. e le trasforma
(codifica) in sequenze di simboli binari o bit (BInary digiT).

Sono da considerarsi informazioni di ingresso sia le liste di


istruzioni (o programmi) che codificano gli algoritmi di elaborazione,
sia i dati da elaborare.

Il sottosistema di uscita restituisce al mondo esterno le


informazioni elaborate operando trasformazioni di sequenze di bit
in movimenti di organi meccanici, in variazioni di tensione, in suoni,
in immagini, etc.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22/S1
Titolo: MODELLO FUNZIONALE A BLOCCHI DI UN CALCOLATORE
Attività n°: 1

All’interno del sottosistema di ingresso/uscita, le interfacce hanno


lo scopo di gestire i vari dispositivi (in genere elettromeccanici), in
modo da farli apparire al processore come entità più semplici e
più standard.

Le più comuni interfacce gestiscono i monitor che, unitamente alle


tastiere e ai mouse, sono i più diffusi dispositivi di ingresso/uscita.

Altre tipiche interfacce gestiscono le memorie di massa, che


hanno lo scopo di immagazzinare dati e programmi attualmente
non interessati all’esecuzione.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22/S1
Titolo: MODELLO FUNZIONALE A BLOCCHI DI UN CALCOLATORE
Attività n°: 1

La memoria principale contiene, durante un’elaborazione, sia


una copia del programma sia una parte dei dati da elaborare (altri
dati possono risiedere nel sottosistema interfacce-dispositivi).

Il processore provvede a prelevare dalla memoria le istruzioni


(una alla volta) (prelievo: fetch) e ad eseguirle (cioè a compiere
le operazioni da esse specificate).

Il processore di un calcolatore ha due blocchi in grado di eseguire


istruzioni: l’unità aritmetico-logica (ALU) e l’unità in virgola mobile
(FPU).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22/S1
Titolo: MODELLO FUNZIONALE A BLOCCHI DI UN CALCOLATORE
Attività n°: 1

La ALU è in grado di eseguire operazioni logiche (AND, OR, NOT, etc.)


ed operazioni aritmetiche, interpretando le stringhe di bit che maneggia
come numeri naturali in base 2, o come numeri interi rappresentati in
complemento a 2.

La FPU esegue operazioni sui numeri reali (o, per essere precisi, su un
sottoinsieme di numeri razionali, visto che su un calcolatore si possono
rappresentare soltanto numeri con un numero finito di cifre, che sono
appunto razionali).

Per il programmatore non ci sono problemi: questi scrive un sequenza


unica di istruzioni, mescolando in modo arbitrario quelle per l’una e
l’altra unità, e poi queste verranno eseguite dall’unità giusta (le istruzioni
sono codificate in modo tale che il processore capisce a quale unità
smistarle).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22/S1
Titolo: MODELLO FUNZIONALE A BLOCCHI DI UN CALCOLATORE
Attività n°: 1

Dapprima si analizzeranno le istruzioni Assembly relative


alla ALU.

Successivamente saranno presentate anche alcune


istruzioni relative alla FPU.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22/S2
Titolo: RAPPRESENTAZIONE DEI NUMERI NATURALE ED INTERI
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Organizzazione Funzionale del Calcolatore I:
Rappresentazione dei numeri naturale ed interi
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22/S2
Titolo: RAPPRESENTAZIONE DEI NUMERI NATURALE ED INTERI
Attività n°: 1

Per poter comprendere il funzionamento della ALU, delle operazioni che essa
può svolgere e delle istruzioni Assembly associate è necessario sapere come al
suo interno i numeri naturali ed i numeri reali sono rappresentati.

Gli studenti dovrebbero già avere padronanza con la rappresentazione dei


numeri dal corso di Fondamenti di Informatica.

In ogni modo, si consiglia di scaricare e studiare attentamente il file


rappresentazioneNaturaliInteri.pdf.
Rappresentazione di numeri naturali ed interi
Prof. Giovanni Stea, Università di Pisa
La ALU è in grado di eseguire operazioni logiche (AND, OR, NOT, etc.) su stringhe di bit ed
operazioni aritmetiche, interpretando le stringhe di bit che maneggia come numeri naturali in
base 2, o come numeri interi rappresentati in complemento a 2. La rappresentazione dei numeri
naturali ed interi in complemento a 2 è già stata affrontata durante il corso di Fondamenti di
Informatica, e quindi viene richiamata brevemente.

1.1.1 Numeri naturali:

Su N bit sono rappresentabili i 2N numeri naturali nell’intervallo ⎡⎣0;2N −1⎤⎦ . Ciascuna

configurazione di N bit bN −1 , bN −2 ,..., b1 , b0 può essere vista come un numero naturale rappresentato
N −1
in base 2, il numero X = ∑ bi ⋅ 2i . Per tale motivo, in una stringa di N bit il bit b0 è detto Bit Meno
i =0

Significativo (LSB), mentre il bit bN −1 è detto Bit Più Significativo (MSB).

Dualmente, il numero naturale X può essere codificato su una stringa di bit se si trovano le cifre
della sua rappresentazione in base 2. Tali cifre si trovano dividendo per due successivamente il
numero X, e considerando tutti i resti (fare l’esempio con 53).

1.1.2 Numeri interi:

Su N bit sono rappresentabili tutti i 2N numeri interi x compresi nell’intervallo


⎡⎣−2N −1;2N −1 −1⎤⎦

Quindi un numero intero x è rappresentabile su N bit o meno a seconda che entri o meno in questo
intervallo. Su 8 e 16 bit l’intervallo è [-128, 127], [-32768, 32767], etc.
Il numero x viene rappresentato in C2 dalla stringa di bit che corrisponde al numero naturale X così
calcolato:
⎧ x x≥0
X = ⎨ N
⎩2 + x x < 0
Purché x sia un numero intero rappresentabile in C2 su N bit, cosa che deve essere verificata. In
modo equivalente, si ha:
X = x 2N
X
2N −1 (111...111)

MSB = 1
Quando si parla di numeri in C2,
rappresentazione tenere sempre a mente questo disegno,
che aiuta a ricordare come vanno le
2 N −1 (100...000 ) cose
N −1
2 −1 ( 011...111)

MSB = 0
x
N −1
−2 2 N −1 − 1
Numero intero
Come si vede dalla figura, tutte le stringhe di bit il cui bit più significativo è “0” rappresentano
numeri interi positivi, mentre tutte quelle che cominciano per “1” rappresentano numeri interi
negativi. Quindi, data una stringa di bit X che rappresenta un numero intero, il numero intero x che
le corrisponde è il seguente:
⎧⎪ X X N −1 = 0
x = ⎨
⎪⎩− ( X + 1) X N −1 = 1
Il complemento è l’operazione che cambia gli “0” in “1” e viceversa.
Fare un paio di esempi.
Visto che nel seguito capiterà spesso di dover menzionare sequenze di bit lunghe 8, 16, 32 bit, tali
cioè da essere incomprensibili se scritte a suon di zeri e uni, si farà spesso uso della notazione
esadecimale, in forza della quale una sequenza di quattro bit viene fatta corrispondere a uno di
questi sedici simboli (o cifre in base 16):

Quadr. Simb. Quadr. Simb. Quadr. Simb. Quadr. Simb.


0000 0 0100 4 1000 8 1100 C
0001 1 0101 5 1001 9 1101 D
0010 2 0110 6 1010 A 1110 E
0011 3 0111 7 1011 B 1111 F

Si scriverà quindi 0xC1 per indicare il byte 1100|0001 (il prefisso 0x individua numeri in
notazione esadecimale), etc.

Per completezza, si accenna al fatto che nei processori Intel x86 questo non è l’unico modo di
rappresentare naturali ed interi. Esiste anche la rappresentazione Binary Coded Decimal, in
accordo alla quale i numeri sono rappresentati come gruppi di cifre in base 10, ciascuna delle quali
occupa 4 bit. Per esempio, il numero naturale 32 in BCD sarebbe rappresentato come 0011 0010
.Il processore ha delle istruzioni per lavorare con i numeri naturali/interi in C2, che vedremo, e delle
istruzioni per lavorare con naturali BCD, che non vedremo per motivi di tempo (e di scarsa
significatività). Ad ogni buon conto, i programmi che lavorano in base 2 sono estremamente più
veloci.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22/S3
Titolo: ESEMPI DI DOMANDE DI ESAME
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Organizzazione Funzionale del Calcolatore I:
Esempi di domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22/S3
Titolo: ESEMPI DI DOMANDE DI ESAME
Attività n°: 1

Esempi di domande di esame

• Perché il linguaggio Assembly si definisce di basso livello?

• Vantaggi e svantaggi del linguaggio Assembly.

• Discutere i principali utilizzi del linguaggio Assembly.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22/S3
Titolo: ESEMPI DI DOMANDE DI ESAME
Attività n°: 1

Esempi di domande di esame

• Disegnare lo schema a blocchi di un calcolatore completo.

• Discutere il sottosistema di ingresso e uscita di un calcolatore. Specificare a


cosa servono le interfacce.

• Differenze fra ALU ed FPU.

• Come si possono rappresentano i numeri interi all’interno della ALU?


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23
Titolo: INTRODUZIONE E VISIONE DELLA MATERIA
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Organizzazione funzionale del calcolatore II:
introduzione e visione della memoria
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23
Titolo: INTRODUZIONE E VISIONE DELLA MATERIA
Attività n°: 1

Nella seguente lezione verrà introdotta la struttura software del


processore e delle altre componenti che compongono un calcolatore
elettronico.

In particolare, si farà riferimento al cosiddetto Processore PC


(processore completo), che rappresenta una schematizzazione dei
moderni processori basati su architettura Intel x86-32.

Si tratta di un processore a 32 bit di cui vedremo subito la


descrizione funzionale, assieme a quella della memoria e delle
interfacce.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23
Titolo: INTRODUZIONE E VISIONE DELLA MATERIA
Attività n°: 1

In figura si mostra il modello


funzionale di un semplice
calcolatore, cosi come viene visto
dal programmatore.

Di seguito saranno specificate le


strutture dello spazio di memoria,
dello spazio di I/O e del
processore.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23
Titolo: INTRODUZIONE E VISIONE DELLA MATERIA
Attività n°: 1

Spazio di memoria

Nello schema architetturale seguito in questo corso, lo spazio di


memoria è composto da una sequenza lineare e contigua di
locazioni: ogni locazione ha una capacità pari ad un byte ed
è individuabile mediante un numero naturale a 32 bit detto
indirizzo.

Il processore PC mostrato nella precedente slide è in grado di


accedere ad una singola locazione, a due locazioni
consecutive (doppia locazione) o a quattro locazioni
consecutive (quadrupla locazione).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23
Titolo: INTRODUZIONE E VISIONE DELLA MATERIA
Attività n°: 1

Indirizzamento dello spazio di memoria

Se il processore accede ad una singola locazione, esso utilizza come indirizzo


quello della locazione stessa.

Se invece il processore accede ad una locazione doppia o quadrupla, allora esso


utilizzerà come indirizzo quello della prima delle locazioni interessate (l’indirizzo
più piccolo).

Se una doppia o quadrupla locazione contiene un numero, la locazione di indirizzo


più piccolo contiene gli 8 bit meno significativi del numero e così via fino alla
locazione di indirizzo più grande che contiene gli 8 bit più significativi.

All’interno di una locazione il bit più significativo fra gli 8 che essa contiene è
quello che si trova all’estremità sinistra (bit numero 7), mentre il bit meno
significativo è quello che si trova all’estremità destra (bit numero 0).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23
Titolo: INTRODUZIONE E VISIONE DELLA MATERIA
Attività n°: 1

Nella figura a sinistra si mostra una porzione di memoria formata da quattro


locazioni. Per ciascuna locazione si specifica l’indirizzo e il suo contenuto.

Facendo riferimento al discorso sull’indirizzamento, nella parte destra della figura


si mostra cosa accade, sia in termini di indirizzo da utilizzare sia in termini di
contenuto del dato, quando vengono effettuati accessi (letture in questo caso) a
singola (byte), doppia (word) e quadrupla locazione (double word).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23
Titolo: INTRODUZIONE E VISIONE DELLA MATERIA
Attività n°: 1

Il processore accede allo spazio di memoria durante la fase di prelievo delle istruzioni e
durante la fase di esecuzione di molte delle istruzioni operative (per procurarsi i dati o
per memorizzare risultati).

Tutte le istruzioni che riferiscono un dato in memoria, devono quindi specificare


(esplicitamente o implicitamente) un indirizzo completo a 32 bit.

Lo spazio di memoria è implementato in (gran) parte con memorie RAM ed in (piccola)


parte con circuiti integrati di tipo ROM.

Il motivo sarà più chiaro tra qualche lezione, ma è evidente che, dato che la memoria
RAM è volatile (cioè non mantiene informazione in assenza di tensione), è necessario
che ci sia una parte di memoria con un programma precaricato fatta in tecnologia
differente (ROM; appunto).

Altrimenti il processore non sa quali istruzioni eseguire quando si accende un


calcolatore (al reset). Peraltro, la parte di memoria implementata in tecnologia RAM ha,
all’accensione del calcolatore, un contenuto casuale.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23
Titolo: INTRODUZIONE E VISIONE DELLA MATERIA
Attività n°: 1

E’ stato detto che l’indirizzo di una locazione di memoria si specifica utilizzando un


numero su 32 bit. Questo significa che il programmatore ha a disposizione 4Gb
(232 byte) di memoria da riferire ed utilizzare quando scrive un programma in
Assembly.

In realtà, non è detto che il calcolatore abbia a disposizione 4GB di memoria fisica.
Come vedremo in seguito, parte della memoria che il programmatore può
indirizzare potrà essere mappata sulla memoria fisica e parte sulla memoria di
massa.

La mappatura della memoria indirizzata dal programmatore (detta anche memoria


logica) viene fatta dall’assemblatore in fase di traduzione in linguaggio macchina e
da apposite circuiterie che vedremo nelle lezioni dei prossimi nuclei tematici.

In questo nucleo tematico, discuteremo come programmare un calcolatore facendo


riferimento alla sua struttura logica e funzionale, indipendentemente dalla sua
realizzazione fisica.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23
Titolo: INTRODUZIONE E VISIONE DELLA MATERIA
Attività n°: 1

Attenzione

La mappatura della memoria a livello fisico è irrilevante ai fini della


programmazione in Assembly, in quanto – come vedremo più avanti – non si
devono specificare gli indirizzi numerici.

Più in generale, quando si programma (in un qualunque linguaggio) si


programma un calcolatore, non un processore.

Anche se è il processore che esegue le istruzioni, in un programma esistono


dati, che generalmente stanno in memoria o nelle interfacce, esistono
istruzioni di ingresso/uscita, che coinvolgono interfacce e, attraverso queste, i
dispositivi.

L’ambiente di programmazione che useremo offre al programmatore una


visione della memoria e delle interfacce semplificata, quella appunto viene
descritta in questo nucleo tematico.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23
Titolo: INTRODUZIONE E VISIONE DELLA MATERIA
Attività n°: 1

Lo spazio di I/O

Lo spazio di I/O (Input/Output) è costituito da 64 k locazioni o porte.

Ogni porta ha una capacità pari ad un byte ed è indirizzabile attraverso


un indirizzo a 16 bit.

Il processore accede allo spazio di I/O durante l’esecuzione delle


istruzioni di ingresso (per leggere il contenuto delle porte) e di uscita (per
scrivere un nuovo contenuto nelle porte).

Anche in questo caso il processore è in grado di accedere a coppie o a


quadruple di porte contigue.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23
Titolo: INTRODUZIONE E VISIONE DELLA MATERIA
Attività n°: 1

Lo spazio di I/O

Lo spazio di I/O è implementato con interfacce connesse a dei dispositivi esterni.

Nella maggior parte dei casi, su una determinata porta di I/O si può soltanto leggere
o scrivere (e non tutte e due le cose insieme).

L’esecuzione di un’istruzione di ingresso consente quindi al processore di prelevare


uno o più byte che potranno essere, a seconda dei casi, un nuovo dato fornito dal
dispositivo o un’informazione sullo stato dell’interfaccia o del dispositivo.

L’esecuzione di un’istruzione di uscita consente invece al processore di emettere uno


o più byte che potranno essere, a seconda dei casi, un dato per il dispositivo o
un’informazione di comando per l’interfaccia o per il dispositivo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23
Titolo: INTRODUZIONE E VISIONE DELLA MATERIA
Attività n°: 1

Attenzione:

Mentre le locazioni di memoria sono strutturalmente identiche


l’una all’altra, cioè posso scegliere se mettere un dato in una
qualunque cella di memoria, le porte di I/O non lo sono.

Ad un certo indirizzo risponde un’interfaccia, e la porta che sto


indirizzando ha una funzione ben precisa.

Per poter scrivere del codice che lavora con le interfacce è


indispensabile conoscere gli indirizzi, cioè sapere cosa è
mappato in una specifica porta.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S1
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Organizzazione funzionale del calcolatore II:
introduzione e visione della memoria
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S1
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Nella seguente lezione verrà introdotta la struttura software del


processore e delle altre componenti che compongono un calcolatore
elettronico.

In particolare, si farà riferimento al cosiddetto Processore PC


(processore completo), che rappresenta una schematizzazione dei
moderni processori basati su architettura Intel x86-32.

Si tratta di un processore a 32 bit di cui vedremo subito la


descrizione funzionale, assieme a quella della memoria e delle
interfacce.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S1
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

In figura si mostra il modello


funzionale di un semplice
calcolatore, cosi come viene visto
dal programmatore.

Di seguito saranno specificate le


strutture dello spazio di memoria,
dello spazio di I/O e del
processore.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S1
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Spazio di memoria

Nello schema architetturale seguito in questo corso, lo spazio di


memoria è composto da una sequenza lineare e contigua di
locazioni: ogni locazione ha una capacità pari ad un byte ed
è individuabile mediante un numero naturale a 32 bit detto
indirizzo.

Il processore PC mostrato nella precedente slide è in grado di


accedere ad una singola locazione, a due locazioni
consecutive (doppia locazione) o a quattro locazioni
consecutive (quadrupla locazione).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S1
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Indirizzamento dello spazio di memoria

Se il processore accede ad una singola locazione, esso utilizza come indirizzo


quello della locazione stessa.

Se invece il processore accede ad una locazione doppia o quadrupla, allora esso


utilizzerà come indirizzo quello della prima delle locazioni interessate (l’indirizzo
più piccolo).

Se una doppia o quadrupla locazione contiene un numero, la locazione di indirizzo


più piccolo contiene gli 8 bit meno significativi del numero e così via fino alla
locazione di indirizzo più grande che contiene gli 8 bit più significativi.

All’interno di una locazione il bit più significativo fra gli 8 che essa contiene è
quello che si trova all’estremità sinistra (bit numero 7), mentre il bit meno
significativo è quello che si trova all’estremità destra (bit numero 0).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S1
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Nella figura a sinistra si mostra una porzione di memoria formata da quattro


locazioni. Per ciascuna locazione si specifica l’indirizzo e il suo contenuto.

Facendo riferimento al discorso sull’indirizzamento, nella parte destra della figura


si mostra cosa accade, sia in termini di indirizzo da utilizzare sia in termini di
contenuto del dato, quando vengono effettuati accessi (letture in questo caso) a
singola (byte), doppia (word) e quadrupla locazione (double word).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S1
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Il processore accede allo spazio di memoria durante la fase di prelievo delle istruzioni e
durante la fase di esecuzione di molte delle istruzioni operative (per procurarsi i dati o
per memorizzare risultati).

Tutte le istruzioni che riferiscono un dato in memoria, devono quindi specificare


(esplicitamente o implicitamente) un indirizzo completo a 32 bit.

Lo spazio di memoria è implementato in (gran) parte con memorie RAM ed in (piccola)


parte con circuiti integrati di tipo ROM.

Il motivo sarà più chiaro tra qualche lezione, ma è evidente che, dato che la memoria
RAM è volatile (cioè non mantiene informazione in assenza di tensione), è necessario
che ci sia una parte di memoria con un programma precaricato fatta in tecnologia
differente (ROM; appunto).

Altrimenti il processore non sa quali istruzioni eseguire quando si accende un


calcolatore (al reset). Peraltro, la parte di memoria implementata in tecnologia RAM ha,
all’accensione del calcolatore, un contenuto casuale.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S1
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

E’ stato detto che l’indirizzo di una locazione di memoria si specifica utilizzando un


numero su 32 bit. Questo significa che il programmatore ha a disposizione 4Gb
(232 byte) di memoria da riferire ed utilizzare quando scrive un programma in
Assembly.

In realtà, non è detto che il calcolatore abbia a disposizione 4GB di memoria fisica.
Come vedremo in seguito, parte della memoria che il programmatore può
indirizzare potrà essere mappata sulla memoria fisica e parte sulla memoria di
massa.

La mappatura della memoria indirizzata dal programmatore (detta anche memoria


logica) viene fatta dall’assemblatore in fase di traduzione in linguaggio macchina e
da apposite circuiterie che vedremo nelle lezioni dei prossimi nuclei tematici.

In questo nucleo tematico, discuteremo come programmare un calcolatore facendo


riferimento alla sua struttura logica e funzionale, indipendentemente dalla sua
realizzazione fisica.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S1
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Attenzione

La mappatura della memoria a livello fisico è irrilevante ai fini della


programmazione in Assembly, in quanto – come vedremo più avanti – non si
devono specificare gli indirizzi numerici.

Più in generale, quando si programma (in un qualunque linguaggio) si programma


un calcolatore, non un processore.

Anche se è il processore che esegue le istruzioni, in un programma esistono dati,


che generalmente stanno in memoria o nelle interfacce, esistono istruzioni di
ingresso/uscita, che coinvolgono interfacce e, attraverso queste, i dispositivi.

L’ambiente di programmazione che useremo offre al programmatore una visione


della memoria e delle interfacce semplificata, quella appunto viene descritta in
questo nucleo tematico.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S1
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Lo spazio di I/O

Lo spazio di I/O (Input/Output) è costituito da 64 k locazioni o


porte.

Ogni porta ha una capacità pari ad un byte ed è indirizzabile


attraverso un indirizzo a 16 bit.

Il processore accede allo spazio di I/O durante l’esecuzione delle


istruzioni di ingresso (per leggere il contenuto delle porte) e di
uscita (per scrivere un nuovo contenuto nelle porte).

Anche in questo caso il processore è in grado di accedere a coppie


o a quadruple di porte contigue.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S1
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Lo spazio di I/O

Lo spazio di I/O è implementato con interfacce connesse a dei dispositivi


esterni.

Nella maggior parte dei casi, su una determinata porta di I/O si può soltanto
leggere o scrivere (e non tutte e due le cose insieme).

L’esecuzione di un’istruzione di ingresso consente quindi al processore di


prelevare uno o più byte che potranno essere, a seconda dei casi, un nuovo
dato fornito dal dispositivo o un’informazione sullo stato dell’interfaccia o del
dispositivo.

L’esecuzione di un’istruzione di uscita consente invece al processore di


emettere uno o più byte che potranno essere, a seconda dei casi, un dato per
il dispositivo o un’informazione di comando per l’interfaccia o per il dispositivo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S1
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Attenzione:

Mentre le locazioni di memoria sono strutturalmente identiche


l’una all’altra, cioè posso scegliere se mettere un dato in una
qualunque cella di memoria, le porte di I/O non lo sono.

Ad un certo indirizzo risponde un’interfaccia, e la porta che sto


indirizzando ha una funzione ben precisa.

Per poter scrivere del codice che lavora con le interfacce è


indispensabile conoscere gli indirizzi, cioè sapere cosa è
mappato in una specifica porta.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S2
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Organizzazione funzionale del calcolatore II:
Registri Generali e di Stato
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S2
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

In figura viene ripresa la struttura


logica di un calcolatore.

Per quanto riguarda il Processore


(come detto precedentemente si tratta
di una versione semplificata di un Intel
x86-32), esso possiede un numero
limitato di registri, cioè degli elementi
di memoria in grado di tenere fino a
32 bit (si dice, pertanto, che è un
processore a 32 bit), che possono
essere scritti o letti.

I registri si dividono in due insiemi: i


registri generali ed i registri di stato.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S2
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Registri Generali del processore PC

I registri generali sono utilizzati per memorizzare dati oppure per


contenere numeri naturali che opportunamente combinati producono
indirizzi di dati.

I registri generali sono 8, vengono denominati EAX, EBX, ECX,


EDX, EBP, ESI, EDI e ESP ed hanno una capacità di 32 bit.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S2
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Registri Generali del processore PC

Le 8 parti basse di ciascun registro generale possono essere viste come 8


registri a 16 bit denominati, rispettivamente, AX, BX, CX, DX, BP, SI, DI e SP.

I 4 registri AX, BX, CX e DX possono essere a loro volta divisi, ciascuno, in


una parte alta (H) e in una parte bassa (L) e possono quindi essere utilizzati
come 8 registri da 8 bit, denominati rispettivamente AH, AL, BH, BL, CH, CL,
DH e DL.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S2
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Utilizzo dei registri generali

I registri generali vengono utilizzati da alcune istruzioni per particolari


funzioni. Più precisamente:

• Il registro EAX (oppure AX, AH od AL) è utilizzato da alcune


istruzioni aritmetiche per contenere operandi e risultati. A volte
viene chiamato accumulatore

• I registri ESI, EDI, EBX ed EBP sono a volte utilizzati come registri
puntatore

• I registri ESI e EDI come registri indice


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S2
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Utilizzo dei registri generali

• I registri EBX e EBP come registri base

• Il registro ESP è utilizzato per indirizzare la pila o stack. Il


processore è in grado di manipolare una parte di memoria con
disciplina LIFO, e questo serve essenzialmente per poter
strutturare il codice in sottoprogrammi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S2
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Il motivo per cui i registri generali sono organizzati in questo modo


è storico.

Inizialmente (nell’8086) i registri erano a 16 bit.

Sono stati successivamente estesi (dall’80386 in su) a 32 bit.

Per compatibilità verso il basso (e anche perché fa comodo) è


stata mantenuta la possibilità di indirizzare le loro parti basse a 16
bit.

Nelle prime architetture x86, i registri erano pochi, a 16 bit e


specializzati per compiti particolari. Nelle architetture moderne, i
registri generali possono essere utilizzati quasi sempre in modo
arbitrario. Quando non sarà così, sarà segnalato
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S2
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

In figura viene ripresa la struttura


logica di un calcolatore.

I registri di stato sono il registro


EIP e il registro EF.

Essi non vengono di norma


utilizzati all’interno delle istruzioni
ed hanno dei compiti particolari.

Si seguito, saranno dettagliati gli


utilizzi di tali registri.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S2
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Il registro EIP

Il registro EIP (Instruction Pointer register, a volte anche chiamato


program counter) contiene l’indirizzo della locazione a partire
dalla quale sarà prelevata la prossima istruzione da eseguire.

Il contenuto del registro EIP, che è fissato al reset iniziale, viene


automaticamente ed opportunamente incrementato durante
l’esecuzione di ogni istruzione in modo che sia assicurato il flusso
sequenziale di esecuzione.

Esso può anche essere dinamicamente cambiato durante


l’esecuzione di alcune istruzioni di controllo, con conseguente
trasferimento del flusso di esecuzione da una porzione ad un’altra
del programma.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S2
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

A questo punto siamo in grado di dare una descrizione più precisa di cosa
fa il processore.

Ciclicamente il processore:
• Preleva dalla memoria, all’indirizzo specificato in EIP, una nuova
istruzione.
• Incrementa EIP di tante unità quanti sono il numero di di byte su
cui è codificata l’istruzione che ha prelevato
• Esegue l’istruzione prelevata

Ciò significa che il processore esegue le istruzioni una dopo l’altra,


nell’ordine in cui sono scritte in memoria.

Alcune istruzioni, però, possono modificare il valore di EIP. Quando ciò


avviene il prelievo delle istruzioni avviene dal nuovo punto, come se
fossimo “saltati” da un’altra parte.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S2
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Il registro EF

Il registro EF (Extended Flag register) ha 32 elementi detti flag.


Per adesso, si considerano solo i quattro flag significativi mostrati
in figura.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S2
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Le funzioni di ciascuno dei 4 Flag sono:

• OF (Overflow Flag): quando contiene 1 indica che durante l’esecuzione


dell’ultima istruzione si è avuto un traboccamento: se l’istruzione operava su
numeri interi, questa situazione indica che il risultato dell’operazione
aritmetica realizzata dall’istruzione non è rappresentabile.

• SF (Sign Flag): quando contiene 1 indica che l’ultima istruzione eseguita


ha generato un risultato con il bit più significativo uguale ad 1: se l’istruzione
operava su numeri interi, questa situazione indica che il risultato è un numero
negativo.

• ZF (Zero Flag): quando contiene 1 indica che l’ultima istruzione eseguita


ha generato un risultato con tutti i bit a 0.

• CF (Carry Flag): quando contiene 1 indica che durante l’esecuzione


dell’ultima istruzione si è generato un riporto o si è richiesto un prestito: se
l’istruzione operava su numeri naturali, questa situazione indica che il risultato
dell’operazione aritmetica realizzata dall’istruzione non è rappresentabile.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S2
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Alcune note:

Quando si manipolano numeri interi, i flag da tenere sotto controllo sono OF,
SF, ZF (CF non è significativo, e guardarlo dà informazioni irrilevanti).

Quando si lavora con i numeri naturali vanno controllati ZF e CF, e non OF e


SF (che non dicono niente di significativo).

Nota sul processore: nella ALU ci sono molti altri registri che non saranno
descritti, in quanto se ne può tranquillamente fare a meno per scrivere un
buon numero di programmi. Qualora dovessero servire, altri registri
potrebbero essere introdotti in seguito
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S2
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1

Condizioni al reset

Al reset (quando viene accesso il calcolatore o viene premuto il pulsante


di reset) il processore inizializza automaticamente il contenuto registro
EIP al valore 0xFFFF0000.

L’istruzione che viene eseguita per prima è quindi quella memorizzata a


partire dalla locazione di indirizzo 0xFFFF0000.

Questa locazione e le successive sono fra quelle che debbono contenere


indelebilmente il programma di bootstrap.

Pertanto la memoria non può essere costruita con sola tecnologia


RAM. Una parte di essa, quella a partire dall’indirizzo sopra citato, deve
essere implementata con tecnologia non volatile (ad esempio, EPROM).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S3
Titolo: ESEMPI DI DOMANDE DI ESAME
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Organizzazione funzionale del calcolatore II:
Esempi di domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S3
Titolo: ESEMPI DI DOMANDE DI ESAME
Attività n°: 1

Esempi di domande di esame

• Disegnare lo schema funzionale di un semplice ma completo


calcolatore basato su architettura x86-32.

• Cosa significa accedere alla memoria con modalità a singola, doppia


e quadrupla locazione? Fornire un esempio.

• Cosa si intende per memoria logica? Quale è la dimensione dello


spazio di memoria in un calcolatore basato su processore x86-32?

• Discutere l’organizzazione logica dello spazio di I/O vista dal


programmatore Assembly.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S3
Titolo: ESEMPI DI DOMANDE DI ESAME
Attività n°: 1

Esempi di domande di esame

Differenza fra registri generali e registri di stato.

Discutere se i registri generali del processore PC possono essere


utilizzati in maniera generica oppure se hanno delle funzioni specifiche.

A cosa serve il registro EIP? Discutere come viene utilizzato nella fase
di prelievo ed esecuzione di una istruzione.

Quali sono e a cosa servono i FLAG significativi del registro EF?

Discutere la condizione di reset del calcolatore.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24
Titolo: INTRODUZIONE
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Linguaggio macchina, mnemonico e Assembly:
Introduzione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24
Titolo: INTRODUZIONE
Attività n°: 1

Linguaggio macchina

Come detto già in precedenza, a livello di linguaggio macchina le istruzioni del


processore sono un insieme di uno o più byte, ciascuno dei quali ha un
significato specifico.

Per quanto riguarda il processore PC (ricordiamo della famiglia x86-32), una


istruzione in linguaggio macchina è una stringa di bit lunga da 1 a 15 byte, con
sette campi che si mostrano in figura:

I campi sono sette, e possono non essere presenti tutti


contemporaneamente.

All’interno dei campi, i singoli bit hanno un significato ben preciso.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24
Titolo: INTRODUZIONE
Attività n°: 1

Linguaggio mnemonico

Programmare in linguaggio macchina significherebbe descrivere


come, per ogni istruzione del processore, i campi delle istruzioni
del linguaggio macchina devono essere riempiti.

Ciò sarebbe oltremodo noioso, ed utile soltanto a chi dovesse


implementare un programma assemblatore.

Per questo motivo, è stato introdotto il linguaggio mnemonico:


un modo simbolico di scrivere quelle serie di zeri e di uni delle
istruzioni del linguaggio macchina, che rende comprensibile al
programmatore quello che sta implementando.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24
Titolo: INTRODUZIONE
Attività n°: 1

Linguaggio mnemonico: un esempio

MOV %EAX, 0x01F4E39A

è una istruzione in linguaggio mnemonico che specifica al processore che


deve spostare il contenuto del registro EAX nella quadrupla locazione di
memoria il cui indirizzo più basso è 0x01F4E39A (0x significa che
l’indirizzo è espresso in esadecimale).

Ci sarà un uno specifico programma (assemblatore)che si occuperà di


tradurre in maniera biunivoca l’istruzione del linguaggio mnemonico in
linguaggio macchina.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24
Titolo: INTRODUZIONE
Attività n°: 1

Linguaggio Assembly

Si tratta di un linguaggio mnemonico completato da una serie di


sovrastrutture sintattiche che lo rendono più semplice da usare per
un programmatore.

Per esempio si possono riferire le locazioni di memoria con nomi


simbolici, sostituendoli ai noiosi indirizzi esadecimali, nelle istruzioni.
Anche in questo caso, ci penserà il programma assemblatore a
tradurre i nomi simbolici in indirizzi di memoria.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24
Titolo: INTRODUZIONE
Attività n°: 1

Linguaggio Assembly: un esempio

MOV %EAX, pippo

Questa istruzione sposta il contenuto del registro EAX in una


locazione di memoria a cui è stato assegnato il nome pippo.

L’assemblatore si incaricherà di sostituire lo stesso indirizzo tutte


le volte che trova scritto pippo.

Tutti i passaggi di sostituzione sono trasparenti al programmatore.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24
Titolo: INTRODUZIONE
Attività n°: 1

Linguaggio macchina, mnemonico e Assembly

Un programmatore programma in Assembler, non in mnemonico.

Ad ogni buon conto, tutto quello che si può dire del linguaggio
mnemonico vale anche per l’Assembler.

La corrispondenza tra queste tre modalità espressive(linguaggio


macchina, mnemonico e Assembly) è biunivoca.

Esistono diversi linguaggi Assembler per lo stesso processore, visto


che l’Assembler è una sintassi inventata per scrivere in modo facile da
ricordare le istruzioni della macchina.

Tra questi, le differenze sintattiche possono essere anche importanti


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24
Titolo: INTRODUZIONE
Attività n°: 1

Formato delle istruzioni in linguaggio mnemonico

Un’istruzione in linguaggio mnemonico è specificata da tre campi:


• codice operativo: stabilisce quale è l’operazione che deve
essere eseguita (e.g., somma)
• suffisso di lunghezza: stabilisce quanto sono lunghi gli
operandi dell’istruzione (e.g., byte), quando un’istruzione
ammette operandi di varia lunghezza.
• operandi dell’istruzione (e.g., gli addendi).

OPCODEsuffix source, dest


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24
Titolo: INTRODUZIONE
Attività n°: 1

Formato delle istruzioni in linguaggio mnemonico

Una istruzione occupa 1 o più byte, che si trovano in locazioni


consecutive di memoria.

Quanto sia lunga un’istruzione dipende dall’istruzione e dagli


operandi.

Gli operandi possono essere contenuti in:


• registri
• locazioni di memoria
• porte di I/O
• specificati direttamente nel codice come costanti.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24
Titolo: INTRODUZIONE
Attività n°: 1

Formato delle istruzioni in linguaggio mnemonico

Le istruzioni ammettono zero, uno o due operandi. In quest’ultimo caso, essi


hanno il ruolo di sorgente e destinatario.

Quando ne hanno uno solo, questo può essere sorgente o destinatario, a seconda
dell’istruzione (l’uno esclude l’altro).

Se ce ne sono due, il sorgente viene prima del destinatario.

Quando ci sono due operandi sono della stessa lunghezza (non è vero sempre, è
vero nelle istruzioni che consideriamo).

Così come in C++ ci sono diversi modi di riferire una variabile (per nome, per
puntatore, per riferimento, etc.), gli operandi che stanno in memoria si possono
riferire in tanti modi diversi, che vedremo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24/S1
Titolo: PRIMO ESEMPIO DI PROGRAMMA IN LINGUAGGIO MNEMONICO
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Linguaggio macchina, mnemonico e Assembly:
Primo esempio di programma in linguaggio
mnemonico
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24/S1
Titolo: PRIMO ESEMPIO DI PROGRAMMA IN LINGUAGGIO MNEMONICO
Attività n°: 1

In questo approfondimento sarà mostrato un semplice esempio di


programma scritto utilizzando un linguaggio mnemonico. Saranno
utilizzati dei costrutti che man mano saranno spiegati. Nelle prossime
lezioni, si analizzeranno in maniera più approfondita i costrutti del
linguaggio Assembly direttamente associato al linguaggio mnemonico
che utilizzato in questa sessione di studio.

Il programma da implementare deve fare quanto segue:

• preleva dalla memoria un operando a 32 bit, che si trova all’indirizzo


0x00000100
• conta il numero di bit a 1 che ci sono in quell’operando
• scrive il risultato nella locazione di memoria di indirizzo 0x00000104
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24/S1
Titolo: PRIMO ESEMPIO DI PROGRAMMA IN LINGUAGGIO MNEMONICO
Attività n°: 1

Operativamente, quello che deve essere fatto a livello di programmazione


a basso livello è :

• si porta il contenuto della memoria in EAX (i conti si fanno meglio sui


registri)

• si azzera un registro, ad esempio CL. Lo incrementeremo ogni volta


che troviamo un 1 in EAX.

• Si entra in un ciclo, nel quale si fa scorrere verso (ad esempio) destra


i bit di EAX, ed ogni volta che se si trova un 1 si incrementa CL. Il ciclo
termina quando EAX vale zero.

• Si ricopia il contenuto di CL nella cella di memoria richiesta.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24/S1
Titolo: PRIMO ESEMPIO DI PROGRAMMA IN LINGUAGGIO MNEMONICO
Attività n°: 1

Si scrive prima il codice del programma che successivamente verrà commentato. Per
scriverlo, si immagina contenuto in qualche locazione di memoria, ad esempio a
partire dall’indirizzo 0x00000200.
Indirizzo Contenuto
0x00000100
0x00000101
0x00000102
0x00000103
0x00000104

0x00000200 MOVB $0x00, %CL
0x00000202 MOVL 0x00000100, %EAX
0x00000207 CMPL $0x0000000, %EAX
0x0000020A JE %EIP+$0x07
0x0000020C SHRL %EAX
0x0000020E ADCB $0x00, %CL
0x00000211 JMP %EIP-$0x0C
0x00000213 MOVB %CL, 0x00000104
0x00000218 …
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24/S1
Titolo: PRIMO ESEMPIO DI PROGRAMMA IN LINGUAGGIO MNEMONICO
Attività n°: 1

Note sintattiche (valide anche per l’Assembly):

• Quando le costanti figurano come operandi in qualche istruzione (e solo


in questo caso) esse vengono scritte premettendo il simbolo $. I numeri
che non hanno il $ davanti sono interpretati come indirizzi. Esempio:
La seconda istruzione riferisce la cella di memoria di indirizzo
0x00000100, la terza il valore costante $0x00000000.

• I numeri sono interpretati in base 10, a meno che non siano preceduti
dal prefisso 0x, nel qual caso sono esadecimali.

• I nomi dei registri devono essere preceduti dal simbolo di %.

• In alcune istruzioni, i letterali L e B sono i suffissi di lunghezza. La stessa


istruzione (MOV) può lavorare con operandi a 8 (B), 16 (W), 32 (L) bit
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24/S1
Titolo: PRIMO ESEMPIO DI PROGRAMMA IN LINGUAGGIO MNEMONICO
Attività n°: 1

Descrizione formale del funzionamento del programma

0x00000200 MOVB $0x00, %CL


MOV: “sposta”. Istruzione equivalente all’assegnamento nei linguaggi ad alto livello. Assegna
il byte 0x00 al registro CL. In quest’istruzione entrambi gli operandi sono ad 8 bit, donde il
suffisso “B“. Quest’istruzione occupa 2 byte (infatti, la successiva comincia a 0x00000202).
Ne prendiamo atto, preannunciando che non sarà necessario ricordarlo.

0x00000202 MOVL 0x00000100, %EAX


Lo stesso che prima. Adesso, però, l’istruzione lavora su operandi a 32 bit (suffisso “L“). In
questo caso, mette nel registro EAX il contenuto della (quadrupla) locazione di memoria di
indirizzo 0x00000100. Quest’istruzione occupa 5 byte.

0x00000207 CMPL $0x0000000, %EAX


CMP: “confronta”. Confronta la costante 0 ed EAX. Nel farlo, scriverà qualcosa nel registro dei
flag.

Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24/S1
Titolo: PRIMO ESEMPIO DI PROGRAMMA IN LINGUAGGIO MNEMONICO
Attività n°: 1

Descrizione formale del funzionamento del programma


0x0000020A JE EIP+$0x0B
JE: “Jump if equal” Se da un’analisi del registro dei flag (che è stato settato dal precedente
confronto) è emerso che i due operandi erano uguali (cioè che il contenuto di EAX era zero), si
prosegue ad eseguire il programma dalla cella di memoria che sta 0x0B indirizzi più avanti. Se
si fa il conto (che è noiosissimo), viene fuori l’ultima istruzione. Infatti, mentre si sta
eseguendo quest’istruzione, EIP ha già il valore della prossima locazione di memoria (in
quanto viene incrementato subito dopo che il processore ha prelevato un’istruzione), cioè
0x0000020C. Se a questo valore si somma 0x0B, si ottinene 0x00000217. Quest’istruzione e
la precedente sono ciò che consente di uscire dal ciclo.

0x0000020C SHRL %EAX


SHRL: “Shift right”. Quest’istruzione trasla a destra il contenuto di EAX. Da sinistra (bit più
significativo) viene inserito uno 0, ed il bit meno significativo finisce nel flag CF. A questo punto,
si hanno due alternative: se il bit che è finito in CF è pari a zero, non devo sommare

Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24/S1
Titolo: PRIMO ESEMPIO DI PROGRAMMA IN LINGUAGGIO MNEMONICO
Attività n°: 1

Descrizione formale del funzionamento del programma


0x0000020E ADCB $0x00, %CL
ADC: “Add with Carry”. Quest’istruzione somma all’operando destinatario (CL) l’operando
sorgente ed il contenuto del flag CF. (come se si scrivesse: CL += 0x00 + CF). In questo
caso, l’operando sorgente è zero, quindi somma il contenuto del flag solamente. Quindi, se il
precedente shift ha messo in CF un bit pari ad uno, il registro CL viene incrementato, altrimenti
no.

0x00000211 JMP EIP-$0x0C


JMP: “Jump”. Si deve continuare il ciclo e quindi saltare nuovamente alla prima istruzione del
ciclo, quella cioè nella quale confronto EAX con zero. Fatti i debiti conti, e tenuto conto del
fatto che EIP vale l’indirizzo della successiva istruzione, si ottiene che si deve tornare indietro
di 12 locazioni.

0x00000213 MOVB %CL, 0x00000104


Si può arrivare qui soltanto se si è usciti dal ciclo. Quindi, a questo punto, CL contiene il
numero di bit a 1 che erano originariamente nel registro EAX. Come da specifica, si copia
questo numero nella cella di indirizzo 0x00000104.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24/S1
Titolo: PRIMO ESEMPIO DI PROGRAMMA IN LINGUAGGIO MNEMONICO
Attività n°: 1

Notare che:
Nel programma ci sono due tipi di istruzioni:

• operative: quelle che svolgono qualche compito (ADC, SHR, MOV)

• di controllo: quelle che alterano il flusso (sequenziale) del programma


(JMP, JE).

Per come è fatto un processore, le istruzioni vengono eseguite dalla prima


all’ultima, tranne quando si incontra una istruzione di controllo.
Mentre di istruzioni operative ce ne sono tante, le istruzioni di controllo sono
state quasi tutte mostrate. Si tratta infatti di salti incondizionati e salti
condizionati, in cui la condizione è scritta nel registro dei flag. Occorre
abituarsi a pensare agli algoritmi in termini di queste strutture di controllo
semplici.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24/S2
Titolo: APPROFONDIMENTO SUL LINGUAGGIO ASSEMBLY
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Linguaggio macchina, mnemonico e Assembly:
Approfondimento sul linguaggio Assemby
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24/S2
Titolo: APPROFONDIMENTO SUL LINGUAGGIO ASSEMBLY
Attività n°: 1

Si consiglia agli studenti di leggere attentamente il contenuto della


pagina Wikipedia relativa al linguaggio Assembly.

http://it.wikipedia.org/wiki/Assembly

Molte delle informazioni contenute in tale pagina, aiutano a


chiarire i concetti esposti nelle precedenti slide e a capire meglio
quelli che saranno presentati nelle lezioni successive.
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 24/s3
Titolo: Linguaggio macchina, mnemonico e assembly
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici

• Linguaggio macchina, mnemonico e Assembly:


• Esempi di domande di esame
• Prof. Pietro Ducange
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 24/s3
Titolo: Linguaggio macchina, mnemonico e assembly
Attività n°: 1

Esempi di domande di esame

• Come sono fatte le istruzioni del processore in linguaggio


macchina?

• Cosa si intende per linguaggio mnemonico?

• Come sono relazionati linguaggio macchina, linguaggio


mnemonico e assembly?

• Discutere il formato delle istruzioni in linguaggio mnemonico.

Si invita lo studente a caricare le risposte alle quattro


domande di cui sopra nell’ePortfolio.
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 24/s3
Titolo: Linguaggio macchina, mnemonico e assembly
Attività n°: 1

Esempi di domande di esame

• Dove possono essere contenuti gli operandi di una istruzione in


linguaggio mnemonico?

• Le istruzioni del linguaggio mnemonico hanno sempre la stessa


lunghezza. Vero o falso? Discutere la risposta fornita.

• Differenza fra set di istruzioni RISC e CISC.

• Esiste un linguaggio Assembly per ogni processore. Vero o falso?


Discutere la risposta fornita.

Lo studente dovrebbe essere in grado di discutere il programma in


linguaggio mnemonico mostrato in questa lezione.
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 25
#lezione#
Titolo: INDIRIZZAMENTO DI REGISTRO IMMEDIATO
#titolo#
Attività n°: 1
#attività#

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Indirizzamento delle istruzioni operative:
Indirizzamento di registro e immediato
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25
Titolo: INDIRIZZAMENTO DI REGISTRO IMMEDIATO
Attività n°: 1

Le più comuni istruzioni operative compiono azioni su due dati


(che, da ora in poi, saranno chiamati operandi) e la loro
esecuzione comporta la sostituzione di uno di tali operandi con il
risultato dell’azione effettuata.

L’operando che alla fine viene sostituito (nella maggior parte dei
casi) è detto operando destinatario, l’altro operando (che rimane
inalterato) è detto operando sorgente.

Di seguito si descriverà come si indirizzano gli operandi nelle


istruzioni operative.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25
Titolo: INDIRIZZAMENTO DI REGISTRO IMMEDIATO
Attività n°: 1

A livello di linguaggio mnemonico, un’istruzione a due operandi ha un


formato a quattro campi del tipo:

OPCODEsize source, destination

Il campo OPCODE, detto “codice operativo” dell’istruzione, specifica il tipo


di azione che essa effettua. Esempi di OPCODE sono quelli visti
nell’esempio precedente: MOV, CMP, etc.

Il campo size può essere omesso nella maggior parte dei casi, con
regole che saranno mostrate successivamente.

I campi source e destination specificano le modalità di


indirizzamento in accordo alle quali vengono individuati, rispettivamente,
l’operando sorgente e l’operando destinatario.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25
Titolo: INDIRIZZAMENTO DI REGISTRO IMMEDIATO
Attività n°: 1

Altre istruzioni compiono azioni su un solo operando.

In tal caso, tale operando può essere sia sorgente che destinatario, a
seconda del codice operativo dell’istruzione.

A livello di linguaggio mnemonico, un’istruzione ad un operando ha un


formato a tre campi del tipo:

OPCODEsize operando

Esistono anche istruzioni senza operandi, il cui formato consta del solo
codice operativo.

Di seguito vengono illustrate le varie modalità di indirizzamento permesse


dal processore. Implicitamente (ed informalmente) viene anche introdotto il
linguaggio mnemonico.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25
Titolo: INDIRIZZAMENTO DI REGISTRO IMMEDIATO
Attività n°: 1

Indirizzamento di registro

Questa modalità di indirizzamento prevede che un campo dell’istruzione


specifichi l’indirizzo di uno degli 8 registri generali a 32 bit (EAX, EBX, ECX,
EDX, EBP, ESI, EDI e ESP), o di uno degli 8 registri generali a 16 bit (AX, BX,
CX, DX, SI, DI, SP, BP) o di uno degli 8 registri generali ad 8 bit (AH, BH, CH,
DH, AL, BL, CL, DL).

Nelle istruzioni a due operandi è possibile che sia previsto, per entrambi gli
operandi, l’indirizzamento di registro.

Visto che i registri hanno una dimensione nota, quando c’è di mezzo un
indirizzamento di registro non è mai necessario specificare con un suffisso la
lunghezza degli operandi.

L’indirizzamento di registro si applica ad uno degli operandi o ad entrambi.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25
Titolo: INDIRIZZAMENTO DI REGISTRO IMMEDIATO
Attività n°: 1

Indirizzamento di registro: esempi

OPCODE %DI
l’operando è a 16 bit ed è contenuto nel registro DI. Se è sorgente o
destinatario dipende dall’istruzione (non si è in grado di deciderlo finché non
viene specificato il codice operativo).

OPCODE %EAX,%EBX
gli operandi sono a 32 bit; l’operando sorgente è contenuto nel registro
EAX e l’operando destinatario nel registro EBX.

OPCODE %AH,%CL
gli operandi sono ad 8 bit; l’operando sorgente è contenuto nel registro
AH e l’operando destinatario nel registro CL.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25
Titolo: INDIRIZZAMENTO DI REGISTRO IMMEDIATO
Attività n°: 1

Indirizzamento immediato

Per l’operando sorgente (e solo per quello) è possibile la modalità


di indirizzamento immediato, comunemente usata quando
l’operando sorgente è una costante: essa prevede che l’operando
coincida con il campo source dell’istruzione.

La specifica dell’operando deve essere preceduta dal simbolo $.

Gli esempi che saranno mostrati di seguito chiariscono come questa


modalità di indirizzamento viene indicata a livello di linguaggio
mnemonico (e, in seguito, di linguaggio Assembly)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25
Titolo: INDIRIZZAMENTO DI REGISTRO IMMEDIATO
Attività n°: 1

Indirizzamento immediato: esempi

OPCODE $0x20,%AL
gli operandi sono ad 8 bit; l’operando sorgente (individuato mediante
l’indirizzamento immediato) coincide con il campo source e vale 0x20 ; l’operando
destinatario (individuato mediante l’indirizzamento di registro) è contenuto in AL.

OPCODE $0x5683A20B,%ECX
gli operandi sono a 32 bit; l’operando sorgente (individuato mediante
l’indirizzamento immediato) coincide con il campo source e vale 0x5683A20B;
l’operando destinatario (individuato mediante l’indirizzamento di registro) è
contenuto in ECX.

Attenzione: ricordarsi che ogni cifra in esadecimale codifica un numero su 4 bit in


binario. Per questo motivo, le due costanti mostrate sono rappresentate in memoria,
rispettivamente, su 8 e 32 bit.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S1
Titolo: INDIRIZZAMENTO DI MEMORIA E DELLE PORTE DI I/O
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Indirizzamento delle istruzioni operative:
Indirizzamento di memoria e delle porte di I/O
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S1
Titolo: INDIRIZZAMENTO DI MEMORIA E DELLE PORTE DI I/O
Attività n°: 1

Indirizzamento di memoria

Uno degli operandi, sia esso sorgente o destinatario, ma mai entrambi,


può trovarsi in memoria. In tal caso, per riferirlo bisogna specificarne
l’indirizzo a 32 bit.

Nel caso più generale l’indirizzo di un operando in memoria può essere


ottenuto combinando, in accordo alla relazione che segue, quattro
numeri naturali a 32 bit, detti rispettivamente base, indice, scala e
displacement.

L’indirizzo viene calcolato come segue:

indirizzo =|base + indice*scala ± displacement|modulo232


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S1
Titolo: INDIRIZZAMENTO DI MEMORIA E DELLE PORTE DI I/O
Attività n°: 1

Di seguito si descrivono i 4 numeri utilizzati per ottenere


l’indirizzamento di memoria

• base, indice: sono contenuti in due qualunque registri generali a


32 bit. Per motivi storici, è abbastanza probabile che come registro
base si usi uno dei registri EBX o EBP (registri base); e come registro
indice ESI o EDI (registri indice). In ogni caso, i registri base e indice
possono essere tutti i registri generali, con la sola limitazione che il
registro ESP non può essere usato come indice.

• scala: un numero che vale 1, 2, 4 o 8, e moltiplica il registro indice (e


soltanto quello). Se omesso vale 1 per default.

• displacement: costante specificata nell’istruzione stessa.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S1
Titolo: INDIRIZZAMENTO DI MEMORIA E DELLE PORTE DI I/O
Attività n°: 1

La sintassi nel linguaggio mnemonico è:

OPCODEsfx ±disp(base,indice,scala)

L’estrema flessibilità di specificare l’indirizzo presenta notevoli


vantaggi nell’indirizzare in memoria operandi organizzati in strutture
dati complesse (ad esempio, vettoriali).

Ovviamente, in un’istruzione, le quattro componenti predette


possono essere utilizzate tutte o in parte, con conseguente
possibilità di avere i seguenti tipi di indirizzamento che saranno
mostrate nelle prossime slide.

Attenzione: sfx specifica la dimensione dell’operando


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S1
Titolo: INDIRIZZAMENTO DI MEMORIA E DELLE PORTE DI I/O
Attività n°: 1

a) Indirizzamento diretto: è utilizzato unicamente il displacement,


che viene a coincidere con l’indirizzo.

OPCODEW 0x00002001

l’operando è a 16 bit e si trova nella doppia locazione di indirizzo


0x00002001 (indirizzamento diretto).

In questo caso è necessario specificare la lunghezza dell’operando


con un suffisso, altrimenti non c’è modo di discriminare se
l’operando è a 8, 16, o 32 bit.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S1
Titolo: INDIRIZZAMENTO DI MEMORIA E DELLE PORTE DI I/O
Attività n°: 1

b) Indirizzamento indiretto (o con registro puntatore) è utilizzato


unicamente il contenuto di un registro, che viene a coincidere con
l’indirizzo.

OPCODEL (%EBX)
l’operando è a 32 bit e si trova nella quadrupla locazione il cui indirizzo è
contenuto nel registro EBX (indirizzamento indiretto con registro puntatore).

Se si vuole che l’indirizzo sia calcolato con il registro indice moltiplicato per
la scala, devo aggiungere la scala ed una virgola in più:

OPCODEL (,%ESI,4)
l’operando è a 32 bit e si trova nella quadrupla locazione il cui indirizzo è
dato dal contenuto del registro indice ESI moltiplicato per 4.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S1
Titolo: INDIRIZZAMENTO DI MEMORIA E DELLE PORTE DI I/O
Attività n°: 1

c) Indirizzamento con displacement e registro di modifica: sono utilizzati il


displacement ed il contenuto di un registro base o indice.

OPCODEW 0x002A3A2B(%EDI)
l’operando è a 16 bit e si trova nella doppia locazione il cui indirizzo si ottiene
sommando, modulo 232, il displacement 0x002A3A2B con l’indice contenuto in EDI
(indirizzamento con displacement e registro indice di modifica).

d) Indirizzamento bimodificato senza displacement: sono utilizzati il contenuto di


un registro indice e quello di un registro base.

OPCODEB (%EBX,%EDI)
l’operando è ad 8 bit e si trova nella locazione il cui indirizzo si ottiene sommando,
modulo 232, la base contenuta in EBX con l’indice contenuto in EDI (indirizzamento
bimodificato senza displacement). Volendo, si può aggiungere un fattore di scala in
fondo, che coinvolge soltanto il registro indice.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S1
Titolo: INDIRIZZAMENTO DI MEMORIA E DELLE PORTE DI I/O
Attività n°: 1

e) Indirizzamento bimodificato con displacement: sono utilizzate tutte e tre le


componenti e cioè il contenuto di un registro indice, il contenuto di un registro
base ed il displacement, più eventualmente il fattore di scala.

I seguenti esempi chiariscono come queste modalità di indirizzamento vengano


indicate a livello di linguaggio mnemonico:

OPCODEB 0x002F9000(%EBX,%EDI)
l’operando è ad 8 bit e si trova nella locazione il cui indirizzo vale:
|base in EBX + indice in EDI + 0x002F9000|modulo232

OPCODEB -0x9000(%EBX,%EDI)
l’operando è ad 8 bit e si trova nella locazione il cui indirizzo vale:
|base in EBX + indice in EDI – 0x00009000|modulo232 =
|base in EBX + indice in EDI + 0xFFFF70000| modulo232
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S1
Titolo: INDIRIZZAMENTO DI MEMORIA E DELLE PORTE DI I/O
Attività n°: 1

Indirizzamento delle porte di I/O

Uno dei due operandi (mai entrambi) può trovarsi nello spazio di I/O. In tal caso,
per riferirlo occorre indicare l’indirizzo a 16 bit della porta (o della coppia/quadrupla
di porte) che lo contiene.

Come per la memoria, l’indirizzamento diretto e quello indiretto tramite registro


puntatore possono essere utilizzati anche per specificare operandi contenuti nelle
porte dello spazio di I/O.

Tuttavia,
- l’indirizzamento diretto è possibile solo se la porta da riferire ha indirizzo
inferiore a 256,
- l’indirizzamento indiretto è possibile solo utilizzando DX come registro
puntatore.

Il motivo per cui le cose stanno così è che a livello di codice macchina le istruzioni
possono soltanto essere scritte in questo modo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S1
Titolo: INDIRIZZAMENTO DI MEMORIA E DELLE PORTE DI I/O
Attività n°: 1

Indirizzamento delle porte di I/O: esempi


IN ed OUT sono i codici operativi delle istruzioni per accedere alle porte, per operazioni,
rispettivamente, di lettura e di scrittura

IN 0x001A,%AL
gli operandi sono ad 8 bit; l’operando destinatario è contenuto in AL; l’operando sorgente si
trova nello spazio di I/O nella porta di indirizzo 0x001A.

IN (%DX),%AX,
gli operandi sono a 16 bit; l’operando destinatario è contenuto in AX; l’operando sorgente si
trova nello spazio di I/O nella doppia porta il cui indirizzo è contenuto in DX.

OUT %AL,0x003A
gli operandi sono a 8 bit; l’operando destinatario si trova nello spazio di I/O nella porta di
indirizzo 0x003A; l’operando sorgente è contenuto in AL

OUT %AL,(%DX)
gli operandi sono ad 8 bit; l’operando destinatario si trova nello spazio di I/O nella porta il cui
indirizzo è contenuto in DX; l’operando sorgente è contenuto in AL.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S1
Titolo: INDIRIZZAMENTO DI MEMORIA E DELLE PORTE DI I/O
Attività n°: 1

Notare che:

Per motivi incomprensibili, la sintassi ufficiale


dell’assemblatore prevede che l’indirizzo di una porta di I/O sia
preceduto dal simbolo $. Ad esempio, la prima delle precedenti
istruzioni andrebbe scritta come

IN $0x1A,%AL

Non è un gran problema, visto che raramente durante questo


corso si utilizzeranno questo tipo di indirizzamenti e le istruzioni
di I/O in generale.
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 25/S2
#lezione#
Titolo: NOTE SULLA SINTASSI DEL LINGUAGGIO MNEMONICO
#titolo#
Attività n°: 1
#attività#

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Indirizzamento delle istruzioni operative:
Note sulla sintassi del linguaggio mnemonico
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S2
Titolo: NOTE SULLA SINTASSI DEL LINGUAGGIO MNEMONICO
Attività n°: 1

È bene tenere a mente quanto segue, perché è normalmente


fonte di errori difficili da tracciare:

- gli operandi immediati (le costanti) vanno preceduti dal


dollaro $

- i registri vanno preceduti dal simbolo di percentuale %

- in un’istruzione, un numero non preceduto dal dollaro è un


indirizzo di memoria (indirizzamento diretto), non una
costante.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S2
Titolo: NOTE SULLA SINTASSI DEL LINGUAGGIO MNEMONICO
Attività n°: 1

Ad esempio:

MOV 0x00002000,%EDX
MOV $0x00002000,%EDX

Fanno due cose diverse, entrambe corrette e come tali


accettate dall’assemblatore.

La prima trasferisce il contenuto di una (quadrupla) locazione di


memoria in EDX.

La seconda mette un numero (una costante su 32 bit) in EDX.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S2
Titolo: NOTE SULLA SINTASSI DEL LINGUAGGIO MNEMONICO
Attività n°: 1

Note sulla lunghezza degli operandi e suffissi

Come visto in precedenza, nel formato delle istruzioni è presente


(in maniera opzionale) un suffisso di lunghezza che specifica la
lunghezza degli operandi (8,16,32).

Tale suffisso è:
• B per byte (8 bit)
• W per word (16 bit)
• L per double word (32 bit)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S2
Titolo: NOTE SULLA SINTASSI DEL LINGUAGGIO MNEMONICO
Attività n°: 1

Note sulla lunghezza degli operandi e suffissi

Se il suffisso di lunghezza viene messo, non accade nulla di


grave.

Spesso può anche essere omesso, ma ci sono dei casi in cui è


obbligatorio, perché l’indirizzamento degli operandi non
consente di capire di quale lunghezza si stia parlando.

In particolare, quando nessuno degli operandi è


indirizzato con un indirizzamento di registro è
indispensabile mettere il suffisso (l’assemblatore segnala
errore altrimenti).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S2
Titolo: NOTE SULLA SINTASSI DEL LINGUAGGIO MNEMONICO
Attività n°: 1

Esempio:

MOV $0x2000,(%EDI)
MOV $0x10,0x2000

In questo caso, visto che il destinatario è un indirizzo di memoria ed il sorgente è


immediato, non si è in grado di definire in maniera univoca se si tratta di 8, 16, 32, byte.

Il modo in cui viene espresso l’operando immediato non determina univocamente la


lunghezza in bit, in quanto si potrebbero anche usare costanti in base 10. Nei casi come
nell’esempio il suffisso ci vuole.

Non contate sull’assemblatore per assistervi in casi del genere. Ogni tanto segnala
l’errore, altre volte no, e il programma non funziona.

L’unico modo per accorgersene è guardare il codice disassemblato (attivando il debugger)


e rendersi conto di cosa ha messo l’assemblatore, ma ci vuole una pazienza da certosino.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S2
Titolo: NOTE SULLA SINTASSI DEL LINGUAGGIO MNEMONICO
Attività n°: 1

Attenzione a sbagliare suffisso.

Ad esempio:

MOVB $0x2050, %AX

Viene tradotta dall’assemblatore dando priorità al suffisso. Molto


probabilmente, verrà tradotta come se fosse stato scritto:
MOVB $0x50, %AL

L’assemblatore dà comunque un warning in questi casi.

In linea generale, un compilatore C++ sta molto più attento a quel che
viene fatto di un assemblatore. Non si può far conto sullo stesso livello di
supporto quando si programma in Assembly.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E Controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S3
Titolo: Indirizzamento delle istruzioni operative
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici

Indirizzamento delle istruzioni


operative:
Esempi di domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E Controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S3
Titolo: Indirizzamento delle istruzioni operative
Attività n°: 1

Esempi di domande di esame:

• Quali sono i campi di una tipica istruzione in linguaggio mnemonico?

• Discutere come avviene l’indirizzamento di registro e fornire un esempio.

• Spiegare il significato della seguente espressione:


OPCODE $0x5683A20B,%ECX

• Discutere come avviene l’indirizzamento di memoria e come viene calcolato


l’indirizzo.

Si invita lo studente a caricare le risposte alle quattro domande di cui sopra


nell’ePortfolio
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E Controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S3
Titolo: Indirizzamento delle istruzioni operative
Attività n°: 1

Esempi di domande di esame:

• Come avviene l’indirizzamento con registro puntatore?

• Discutere come avviene l’indirizzamento delle porte di I/O.


Quanto si può effettuare l’indirizzamento diretto e come avviene
quello indiretto?

• Fornire un esempio di indirizzamento delle porte di I/O.

• In questa istruzione c'è un errore: MOVB $0x2050, %AX.


Discutere l’errore e spiegare come potrebbe essere
effettivamente tradotta l’espressione dall’assemblatore.
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 26
#lezione#
Titolo: INTRODUZIONE E ISTRUZIONI D TRASFERMIMENTO
#titolo#
Attività n°: 1
#attività#

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Principali Istruzioni ALU I:
Introduzione e istruzioni di trasferimento
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26
Titolo: INTRODUZIONE E ISTRUZIONI D TRASFERMIMENTO
Attività n°: 1

Nelle prossime slide e nelle prossime istruzioni sarà presentato un


primo set di istruzioni della ALU, che sono sufficienti a scrivere un
buon numero di programmi (che fanno cose utili).

Ulteriori istruzioni della ALU verranno affrontate in seguito, dopo


che lo studente avrà fatto un poco di esperienza nella scrittura di
codice in Assembly.

Ovviamente, la descrizione non esaurisce tutto il set di


istruzioni del processore della famiglia x86-32.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26
Titolo: INTRODUZIONE E ISTRUZIONI D TRASFERMIMENTO
Attività n°: 1

Una classificazione più fine delle istruzioni del linguaggio


Assembly che sarà presentato è la seguente:

• istruzioni operative:
 istruzioni di trasferimento
 istruzioni aritmetiche
 istruzioni di traslazione/rotazione
 istruzioni logiche

• istruzioni di controllo.
 Istruzioni di salto
 Istruzioni per la gestione di sottoprogrammi
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26
Titolo: INTRODUZIONE E ISTRUZIONI D TRASFERMIMENTO
Attività n°: 1

Nelle prossime attività e nelle prossime lezioni saranno fornite allo studente una serie di
dispense che descrivono le istruzioni del linguaggio Assembly.

Accanto a ciascuna istruzione si possono trovare le informazioni che servono quando


vengono usate, in particolare:
• il formato
• cosa fa
• se aggiorna i flag, quali e come
• quali sono le modalità di indirizzamento ammesse per gli operandi.

Non necessariamente ci sono tutte le modalità di indirizzamento (possono essere molte,


e complesse).

Si consiglia allo studente di leggere attentamente le dispense per farsi una idea di quello
che ha a disposizione per realizzare dei programmi in Assembly.

Ulteriori chiarimenti relativi alle dispense si trovano nell’ultima attività di questa lezione.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26
Titolo: INTRODUZIONE E ISTRUZIONI D TRASFERMIMENTO
Attività n°: 1

Le dispense fornite sono tratte dal materiale didattico prodotto dal prof. Giovanni
Stea dell’Università di Pisa e dalla dispensa “Il calcolatore C86/32: struttura e
manuale d’uso ” scritta dal prof. Paolo Corsini dell’Università di Pisa.

Si ricorda agli studenti di contattare solo il Prof. Pietro Ducange per eventuali
chiarimenti relativi alle dispense.

La prima dispensa si trova allegata alla presente attività. Scarica il documento

IstruzioniDiTrasferimento.pdf
1 Istruzioni di trasferimento
Prof. Giovanni Stea, Università di Pisa
Prof. Pietro Ducange
Sono quelle che consentono di muovere le informazioni da una parte all’altra. Nessuna di queste
tocca i flag.

1.1 MOVE
FORMATO: MOV source, destination
AZIONE: Sostituisce l’operando destinatario con una copia dell’operando sorgente
FLAG di cui viene modificato il contenuto: Nessuno.
Operandi Esempi
Memoria, Registro Generale MOV 0x00002000,%EDX
Registro Generale, Memoria MOV %CL,0x12AB1024
Registro Generale, Registro Generale MOV %AX,%DX
Immediato, Memoria MOVB $0x5B,(%EDI)
Immediato, Registro Generale MOV $0x54A3,%AX

Ricordarsi che:
Non è possibile trasferire dati da una locazione di memoria in un’altra con una sola istruzione
MOV.

Il motivo è da ricercarsi nell’architettura del bus che sarà descritta successivamente.

1.2 LOAD EFFECTIVE ADDRESS


FORMATO: LEA source, destination

AZIONE: Sostituisce l’operando destinatario con l’espressione indirizzo contenuta nell’ope-


rando sorgente.
FLAG di cui viene modificato il contenuto: Nessuno.
Operandi Esempi
LEA 0x00002000,%EDX
Memoria, Registro Generale a 32 bit
LEA 0x00213AB1(%EAX,%EBX,4),%ECX

Quest’istruzione carica un indirizzo di memoria (espresso in uno qualunque dei modi visti
precedentemente in un registro a 32 bit.
MOV 0x00213AB1(%EAX,%EBX,4),%ECX
LEA 0x00213AB1(%EAX,%EBX,4),%ECX
Ad esempio, la prima mette il contenuto della cella di memoria indirizzata in quel modo in %ECX.
La seconda mette l’indirizzo in %ECX.

1.3 EXCHANGE
FORMATO: XCHG source, destination
AZIONE: Sostituisce all’operando destinatario una copia dell’operando sorgente e viceversa.
FLAG di cui viene modificato il contenuto: Nessuno.
Operandi Esempi
Memoria, Registro Generale XCHG 0x00002000,%DX
Registro Generale, Memoria XCHG %AL,0x000A2003
Registro Generale, Registro Generale XCHG %EAX,%EDX

NB: la XCHG modifica il sorgente. Per ora è l’unica istruzione che lo fa.

1.4 INPUT
FORMATO: IN indirizzo, %AL
IN indirizzo, %AX
IN indirizzo, %EAX
IN (%DX),%AL
IN (%DX),%AX
IN (%DX),%EAX
AZIONE: Sostituisce il contenuto del registro destinatario (AL, AX, EAX) con il contenuto di
un adeguato numero di porte consecutive. L’indirizzo della prima (ed eventualmente unica porta) è
specificato direttamente nell’istruzione (primi tre formati) o è contenuto nel registro DX (ultimi tre
formati); i primi tre formati possono essere utilizzati solo per individuare porte con indirizzo
inferiore a 256.
FLAG di cui viene modificato il contenuto: Nessuno.

1.5 OUTPUT
FORMATO: OUT %AL, indirizzo
OUT %AX, indirizzo
OUT %EAX, indirizzo
OUT %AL,(%DX)
OUT %AX,(%DX)
OUT %EAX,(%DX)
AZIONE: Copia il contenuto del registro sorgente (AL, AX, EAX) in un adeguato numero di
porte consecutive. L’indirizzo della prima (ed eventualmente unica porta) è specificato direttamente
nell’istruzione (primi tre formati) o è contenuto nel registro DX (ultimi tre formati); i primi tre
formati possono essere utilizzati solo per individuare porte con indirizzo inferiore a 256.
FLAG di cui viene modificato il contenuto: Nessuno.
NB: si noti che nelle istruzioni di input ed output è possibile utilizzare soltanto i registri AL, AX,
EAX.
Per poter usare le istruzioni IN e OUT occorre conoscere i numeri di indirizzo delle porte delle varie
interfacce. Ad esempio, se si sa che la porta parallela (quella cui attacco, ad esempio, la stampante)
è l’interfaccia di indirizzo XXXX, e quando di vuol buttare fuori un byte sulla parallela scrivo
quell’indirizzo nella OUT.
Queste sono le uniche due istruzioni che indirizzano operandi nello spazio di I/O. L’unica cosa
che si può fare con questi operandi è trasferirli dentro il processore, o dal processore allo spazio di
I/O. In generale, i conti si fanno con gli operandi dentro il processore.
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 26/S1
#lezione#
Titolo: LA PILA
#titolo#
Attività n°: 1
#attività#

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Principali Istruzioni ALU I:
La pila
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26/S1
Titolo: LA PILA
Attività n°: 1

Durante gli esami del primo anno vi è stata mostrata una struttura
dati detta pila e molto probabilmente anche una sua
implementazione in C/C++.

Si ricorda che la pila è una una porzione di memoria in cui immettere


e prelevare informazioni in accordo alla disciplina LIFO (Last In First
Out): l’informazione che viene immessa per ultima è quella che viene
prelevata per prima.

Con linguaggi di programmazione ad alto livello, la pila si può


implementare utilizzando vettori e liste.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26/S1
Titolo: LA PILA
Attività n°: 1

E’ importante sapere che la pila è una struttura dati essenziale al


funzionamento del calcolatore, tanto essenziale che nei processori
c’è un registro apposta per puntare il top di una pila.

Il codice di un programma (in qualunque linguaggio, Assembly


compreso) è organizzato in sottoprogrammi, cioè in parti autonome
che possono essere richiamate, e – soprattutto – annidate un
numero di volte qualsiasi.

Quando si chiama un sottoprogramma (o una funzione C/C++), si


deve poter eseguire altro codice (rispetto a quello che è in
esecuzione quando viene effettuata la chiamata), e si deve assicurare
la possibilità di ritornare ad eseguire l’istruzione successiva a
quella che si stava eseguendo (sempre nel chiamante).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26/S1
Titolo: LA PILA
Attività n°: 1

Per consentire quindi la chiamata di sotto programmi e il ritorno


al programma principale si utilizza la pila.

In particolare, si salvano gli indirizzi di ritorno (all’istruzione


successiva da eseguire) al programma chiamante in una
pila.

L’organizzazione in una pila è utile perchè, se ci sono più


chiamate annidate, l’ultimo indirizzo salvato è il primo al quale
bisogna ritornare, e via discorrendo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26/S1
Titolo: LA PILA
Attività n°: 1

Come mostrato in figura, la pila (Stack in


Inglese) viene realizzata utilizzando più
locazioni contigue di una porzione di
memoria, che vengono riempite a partire da
quella di indirizzo maggiore (locazione di
fondo).

La pila supporta due operazioni: PUSH e


POP.

Il registro ESP (Stack Pointer register) del


processore contiene ad ogni istante
l’indirizzo del top della pila, cioè l’indirizzo
della locazione riempita per ultima.

EBP è il registro che in genere contiene


l’indirizzo di base della pila
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26/S1
Titolo: LA PILA
Attività n°: 1

Il registro ESP (Stack Pointer register) del processore contiene ad ogni istante
l’indirizzo del top della pila, cioè l’indirizzo della locazione riempita per ultima.
Più precisamente:

1) il registro ESP va inizializzato con l’indirizzo della locazione


immediatamente successiva a quella di fondo;

2) l’immissione di un’informazione nella pila (operazione push) va effettuata


decrementando prima l’indirizzo contenuto nel registro ESP ed utilizzando
poi tale indirizzo come indirizzo per un’operazione di scrittura in memoria;

3) il prelievo di un’informazione della pila (operazione pop) va effettuato


utilizzando prima il contenuto del registro ESP come indirizzo per
un’operazione di lettura dalla memoria e poi incrementando tale indirizzo.
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 26/S2
#lezione#
Titolo: ISTRUZIONI PER LA GESTIONE DELLA PILA
#titolo#
Attività n°: 1
#attività#

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Principali Istruzioni ALU I:
Istruzioni per la gestione della pila
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26/S2
Titolo: ISTRUZIONI PER LA GESTIONE DELLA PILA
Attività n°: 1

Il processore prevede opportune istruzioni per le operazioni di


push e di pop.

La loro esecuzione permette di trasferisce nella/dalla pila una word


o un long (mai un byte), cosicché il decremento o l’incremento
dell’indirizzo contenuto in ESP è di 2 o di 4.

La descrizione completa delle istruzioni per la gestione della pila si


trova nel documento IstruzioniPila.pdf allegato alla presente
attività.
Istruzioni relative alle operazioni sulla pila
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange

1.1 PUSH
FORMATO: PUSH source
AZIONE: Salva nella pila corrente una copia dell’operando sorgente (che deve essere a 16 o a
32 bit). Più in dettaglio, compie le seguenti azioni: i) decrementa l’indirizzo contenuto nel registro
ESP di due o di quattro; ii) memorizza una copia dell’operando sorgente nella doppia o quadrupla
locazione il cui indirizzo è contenuto in ESP.
FLAG di cui viene modificato il contenuto: Nessuno.
Operandi Esempi
Memoria PUSHW 0x3214200A
Immediato PUSHL $0x4871A000
Registro Generale PUSH %BX

1.2 POP
FORMATO: POP destination
AZIONE: Rimuove dalla pila corrente una word o un long e la sostituisce all’operando
destinatario. Più in dettaglio, compie le seguenti azioni: i) sostituisce all’operando destinatario una
copia del contenuto della doppia o della quadrupla locazione il cui indirizzo è contenuto in ESP, ii)
incrementa di due o di quattro l’indirizzo contenuto in ESP, rimuovendo in tal modo dalla pila la
word o il long copiato.
FLAG di cui viene modificato il contenuto: Nessuno.
Operandi Esempi
Memoria POPW 0x02AB2000
Registro Generale POP %BX

Oltre che a gestire i sottoprogrammi, la pila serve a parcheggiare i dati quando devo utilizzare i
registri per qualche altro scopo. Supponiamo di scrivere un pezzo di programma, e ad un certo
punto dentro %EAX abbiamo dei dati che stiamo elaborando. Se mi serve un dato da un’interfaccia,
devo utilizzare una IN, e posso mettere il risultato solo dentro (un pezzo di) %EAX, e quindi
sporcherei il registro che sto usando.
Per evitare il problema, parcheggio %EAX nella pila e lo riprendo a conti fatti:
#uso %EAX
PUSH %EAX
IN 0x001A, %AL

POP %EAX # riprendo I conti che stavo facendo

1.3 PUSHF
FORMATO: PUSHF
AZIONE: Salva nella pila corrente due word di cui una è costituita da una copia del contenuto
del registro dei flag EF.
FLAG di cui viene modificato il contenuto: Nessuno.
Perché esiste questa istruzione? Per due buoni motivi:
a) Perché il registro dei flag non è indirizzabile come operando di un’istruzione. Quindi, se
voglio leggerne il contenuto, l’unica cosa che posso fare è salvarlo in pila e recuperarlo da lì
PUSHF
POP %EAX # surroga MOV %EF, EAX (che non esiste)

b) Perché ci sono situazioni in cui il funzionamento di un programma deve essere interrotto e


ripreso come se non fosse successo niente (ad esempio, quando va in esecuzione un driver,
oppure quando il processore smette di eseguire un programma e passa ad un altro). Questa
cosa deve avvenire in modo trasparente all’utente. In questo caso è necessario salvare i flag,
perché non possiamo sapere in che punto abbiamo interrotto il programma. Per lo stesso
motivo sono presenti le due seguenti istruzioni (che con ogni probabilità non userete):

1.4 POPF
FORMATO: POPF
AZIONE: Rimuove dalla pila corrente una doppia word e con i bit n. 11, 7, 6 e 0 di essa,
rinnova il contenuto dei corrispondenti flag del registro EF
FLAG di cui viene modificato il contenuto: Tutti.

1.5 PUSHA
FORMATO: PUSHA
AZIONE: Salva nella pila corrente una copia del contenuto degli 8 registri generali a 16 bit,
rispettando il seguente ordine: AX, CX, DX, BX, SP, BP, SI, DI.
FLAG di cui viene modificato il contenuto: Nessuno.
1.6 PUSHAD
FORMATO: PUSHAD
AZIONE: Salva nella pila corrente una copia del contenuto degli 8 registri generali a 32 bit,
rispettando il seguente ordine: EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI.
FLAG di cui viene modificato il contenuto: Nessuno.

1.7 POPA
FORMATO: POPA
AZIONE: Rimuove dalla pila 8 word e con esse rinnova il contenuto degli 8 registri generali a
16 bit, rispettando il seguente ordine: DI, SI, BP, SP, BX, DX, CX, AX.
FLAG di cui viene modificato il contenuto: Nessuno.

1.8 POPAD
FORMATO: POPAD
AZIONE: Rimuove dalla pila 8 long e con essi rinnova il contenuto degli 8 registri generali a
32 bit, rispettando il seguente ordine: EDI, ESI, EBP, ESP, EBX, EDX, ECX, EAX.
FLAG di cui viene modificato il contenuto: Nessuno.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26/S3
Titolo: ESEMPI DI DOMANDE DI ESAME E CHIARIMENTO SULL’ USO DELLE DISPENSE DELL’ ASSEMBLY
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici

Principali Istruzioni ALU I:


Esempi di domande di esame e chiarimento
sull’uso delle dispense dell’Assembly
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26/S3
Titolo: ESEMPI DI DOMANDE DI ESAME E CHIARIMENTO SULL’ USO DELLE DISPENSE DELL’ ASSEMBLY
Attività n°: 1

Esempi di domande di Esame

• Cosa è una pila?

• Perché la pila è importante per il corretto funzionamento del


processore e del calcolatore in generale?

• Discutere come viene gestite la pila a livello del processore, in


particolare come si realizza, quali sono le istruzioni principali e
come si implementano.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26/S3
Titolo: ESEMPI DI DOMANDE DI ESAME E CHIARIMENTO SULL’ USO DELLE DISPENSE DELL’ ASSEMBLY
Attività n°: 1

Attenzione:

Le dispense fornite relative al linguaggio Assembly contengono un


sacco di informazioni relative all’indirizzamento e a tutte le funzioni
associate con le istruzioni presentate.

Lo studente è tenuto a leggere attentamente le lezioni per capire a


grandi linee cosa fanno le istruzioni e per avere idea di cosa ha a
disposizione per realizzare programmi in Assembly.

Allo studente sarà concesso di utilizzare una copia (fornita dal


docente e posta sulla cattedra) in sede di esame per svolgere gli
esercizi relativi alla programmazione Assembly (ce ne sarà quasi
sempre almeno uno).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 27
Titolo: Principali istruzioni ALU II
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Principali Istruzioni ALU II:
Istruzioni Aritmetiche I
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 27
Titolo: Principali istruzioni ALU II
Attività n°: 1

Le istruzioni aritmetiche hanno alcune caratteristiche comuni:

• alcune di esse (ma non tutte) considerano gli operandi indifferentemente come
naturali che come numeri interi, in quanto l’algoritmo che devono eseguire per
modificare il destinatario è identico nei due casi (è una proprietà della
rappresentazione in C2: la somma delle rappresentazioni è pari alla
rappresentazione della somma, lo stesso vale per la differenza). L’istruzione di
somma per esempio, esegue quindi l’algoritmo giusto quale che sia l’interpretazione
delle stringhe di bit che le vengono passate come operandi.

• Tali istruzioni modificano i flag. Nel modificare i flag, considerano due algoritmi: uno
che va bene se gli operandi sono numeri naturali¸ ed uno che va bene se sono
interi.

• Il programmatore è l’unico che sa cosa sta scrivendo, ed è quindi l’unico a


conoscere l’interpretazione da dare ad una certa stringa di bit. Pertanto, il
programmatore farà seguire una di queste istruzioni da qualche altra istruzione che
va a guardare i flag giusti.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 27
Titolo: Principali istruzioni ALU II
Attività n°: 1

La prima parte delle istruzioni aritmetiche è descritta nel file aritmetiche1.pdf


Istruzioni aritmetiche I
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange

ADD
FORMATO: ADD source, destination
AZIONE: Modifica l’operando destinatario sommandovi l’operando sorgente (il risultato
dell’operazione è consistente sia se gli operandi sono interpretati come numeri naturali sia se gli
operandi sono interpretati come numeri interi); mette ad 1 il contenuto del flag CF se, interpretando
gli operandi come numeri naturali, si è verificato un riporto; mette ad 1 il contenuto del flag OF se,
interpretando gli operandi come numeri interi, si è verificato un traboccamento.
FLAG di cui viene modificato il contenuto: Tutti.
Operandi Esempi
Memoria, Registro Generale ADD 0x00002000,%EDX
Registro Generale, Memoria ADD %CL,0x12AB1024
Registro Generale, Registro Generale ADD %AX,%DX
Immediato, Memoria ADDB $0x5B,(%EDI)
Immediato, Registro Generale ADD $0x54A3,%AX

Per quanto riguarda il calcolo del risultato, è come se scrivessi dest += src in C++. Vediamo in
dettaglio come si fa la somma.
In base 2 funziona come in base 10, secondo l’algoritmo imparato alle elementari
β = 10 . L’algoritmo consiste in:
1 0 1
- sommare le cifre di pari posizione singolarmente, partendo
7 2 4 + dalle meno significative
- se la somma di due cifre non è rappresentabile con una sola
8 3 9
cifra, usare il riporto per la coppia di cifre successive
15 6 13 - Il riporto vale sempre 0 o 1. Per la prima coppia di cifre
(quelle meno significative), possiamo assumerlo nullo.
1 5 6 3

Si osservi che, visto che l’ultima somma ha generato un riporto, il risultato non è rappresentabile
sul numero di cifre (3) degli operandi. In Inglese, riporto si dice carry.
Questo algoritmo non dipende dalla base di rappresentazione, e funziona pari pari in base due.
1 1 1
In questo caso sommo le due stringhe di bit 101 (5, se
1 0 1 + rappresentato come naturale) e 011 (3, se rappresentato come
naturale) su tre bit, ed il risultato sta su 4 bit. Questo è
0 1 1
testimoniato dalla presenza di un carry.
10 10 10

1 0 0 0

Quando faccio la somma su 8, 16, 32 bit, l’ultimo riporto finisce in CF. Se (nella mia testa) i
numeri sommati erano naturali, il fatto che CF=1 significa che il risultato che ho nel destinatario
non è corretto, in quanto il risultato non può essere rappresentato sul numero di bit degli operandi.

Supponiamo adesso che le stringhe di tre bit che ho scritto siano la rappresentazione di numeri
interi in C2. In questo caso,

- ( )
il primo è la rappresentazione di − 101 + 1 = − ( 010 + 1) = −011 , cioè di -3

- il secondo è la rappresentazione di +3
La somma dei due numeri fa zero. La somma delle due rappresentazioni su 3 bit fa anch’essa
zero, come deve essere. Il fatto che ci sia un riporto non nullo è irrilevante ai fini della correttezza
del risultato. Il risultato, rappresentato su 3 bit, è perfettamente corretto.
Infatti, CF va guardato soltanto se i numeri vanno interpretati come naturali, e non come interi.
Per i numeri interi, invece, il criterio per stabilire la rappresentabilità del risultato è un altro, ed è
sostanzialmente basato sui segni degli operandi.
Sappiamo che
- in C2 il bit più significativo dà il segno: 0 se il numero è positivo, 1 se negativo.
- Un numero è rappresentabile in C2 su N bit se è nell’intervallo ⎡⎣−2N −1;2N −1 −1⎤⎦ .
X
2N −1 (111...111)

2 N −1 (100...000 )
N −1
2 −1 ( 011...111)

x
N −1
−2 2 N −1 − 1

Quindi:
- se i segni degli operandi sono discordi (cioè uno positivo e uno negativo) e gli operandi stanno
in quell’intervallo, la loro somma è sempre rappresentabile, in quanto starà per forza all’interno
dell’intervallo.
- se i segni degli operandi sono concordi, la loro somma può non essere rappresentabile. In
particolare, la somma sarà rappresentabile se e solo se la rappresentazione della somma è
concorde con gli operandi. Se sommo le rappresentazioni di due numeri positivi, posso ottenere
la rappresentazione di un numero negativo. In questo caso il risultato non può essere corretto.
Lo stesso, se sommo le rappresentazioni di due numeri negativi su N bit, posso ottenere la
rappresentazione di un numero positivo
Nei due casi precedenti, il flag di overflow OF viene messo a zero. Altrimenti viene messo ad 1, ad
indicare che il risultato (interpretato come intero) non è corretto.
Esempio (su 3 bit). In entrambi i casi, la rappresentazione del risultato ha un segno diverso da
quello degli operandi. In entrambi i casi c’è overflow, ed il bit OF è settato.

1 0 1
0 1 1

0 1 1 + 1 0 1 +
0 1 1 1 0 1

10 01 10
01 11 10

1 1 0 0 1 0
Esercizio per casa: dimostrare che le due seguenti condizioni sono equivalenti per interi
rappresentati in C2:
condizione 1: gli ultimi due riporti di una somma sono identici
condizione 2: gli operandi sono discordi, oppure sono concordi ma il bit più significativo della
somma è uguale a quello di entrambi gli operandi.

Inoltre, la ADD setta anche gli altri flag:


- ZF viene settato se tutti i bit del destinatario valgono zero. Nell’esempio di sopra verrebbe
settato. L’algoritmo per settarlo è ovvio, ed è l’OR di tutti i bit del destinatario.
- SF prende il valore bit più significativo del destinatario. Se tale bit vale uno (al contrario del

caso presente), vuol dire che interpretando il contenuto del destinatario come numero
intero, tale numero è negativo. Ricordo che il bit più significativo dei numeri interi negativi
vale sempre 1.

ADD WITH CARRY


FORMATO: ADC source, destination
AZIONE: Modifica l’operando destinatario sommandovi sia l’operando sorgente sia il
contenuto del flag CF (il risultato dell’operzione è consistente sia se gli operandi sono interpretati
come numeri naturali sia se gli operandi sono interpretati come numeri interi); mette ad 1 il
contenuto del flag CF se, interpretando gli operandi come numeri naturali, si è verificato un riporto;
mette ad 1 il contenuto del flag OF se, interpretando gli operandi come numeri interi, si è verificato
un traboccamento. Poiché l’istruzione ADC prevede la gestione del riporto che può essere stato
generato durante l’esecuzione di una precedente istruzione ADD o ADC, essa può essere usata per
predisporre pacchetti di istruzioni per la somma di operandi multi_word.
Ad esempio, la somma di due operandi a 64 bit (16 cifre esadecimali) può essere effettuata
utilizzando una istruzione ADD per elaborare i 32 bit meno significativi ed una istruzione ADC per
elaborare i 32 bit più significativi.
ADC ADD
56A9C2D4 67A43B5F +
44B9A5A4 A6B4C55A =
9B636879 0E5900B9

FLAG di cui viene modificato il contenuto: Tutti.

Operandi Esempi
Memoria, Registro Generale ADC 0x00002000,%EDX
Registro Generale, Memoria ADC %CL,0x12AB1024
Registro Generale, Registro Generale ADC %AX,%DX
Immediato, Memoria ADCB $0x5B,(%EDI)
Immediato, Registro Generale ADC $0x54A3,%AX

La ADC somma due operandi ed il carry flag. L’algoritmo di somma che usiamo (che vale in
qualunque base, sia 2 che 10) è modulare. Le due cose che devo saper fare sono:
- la somma di 2 cifre
- calcolare un riporto (0 o 1) per la coppia di cifre successive.
Se devo sommare due numeri a 1024 bit, non lo posso fare (perché ho al massimo operandi a 32
bit)? Certo che posso. Sommo i primi 32 bit (quelli meno significativi), poi vado avanti a
considerando gruppi di 32 biy scorrendo le cifre verso sinistra. L’unica cosa che mi devo ricordare è
che ogni somma può generare un riporto, che viene messo nel flag CF. Tale riporto va
considerato in tutte le somme successive alla prima. Questa istruzione serve appunto a fare questo.

INCREMENT
FORMATO: INC destination

AZIONE: Equivale all’istruzione ADD $1,destination con la sola differenza che il


contenuto del flag CF non viene modificato.
FLAG di cui viene modificato il contenuto: OF, SF e ZF.

Operandi Esempi
Memoria INCB (%ESI)
Registro Generale INC %CX

Che bisogno c’è di questa istruzione? (si può infatti usare sempre ADD al suo posto). Un tempo era
più veloce adesso anche la ADD si fa in un batter d’occhio. In genere, quest’istruzione (e la DEC più
avanti) viene tenuta per tenere il conto delle iterazioni dentro un ciclo (simile alla variabile di
conteggio nel for). Per motivi di tradizione stilistica, in genere si usa %ECX (o %CX, o %CL) come
registro di conteggio all’interno di un ciclo.
Soffermiamoci un attimo sul fatto che non viene aggiornato CF. Non è un limite. Infatti,
l’incremento che produrrebbe un carry è quello che si fa a partire da un operando pari a 111…111.
In questo caso, dopo l’incremento l’operando vale zero. Quindi, posso testare direttamente ZF.

SUBTRACT
FORMATO: SUB source, destination
AZIONE: Modifica l’operando destinatario sottraendovi l’operando sorgente (il risultato
dell’operazione è consistente sia se gli operandi sono interpretati come numeri naturali sia se gli
operandi sono interpretati come numeri interi); mette ad 1 il contenuto del flag CF se, interpretando
gli operandi come numeri naturali, si è verificato un prestito; mette ad 1 il contenuto del flag OF se,
interpretando gli operandi come numeri interi, si è verificato un traboccamento.
FLAG di cui viene modificato il contenuto: Tutti.
Operandi Esempi
Memoria, Registro Generale SUB 0x00002000,%EDX
Registro Generale, Memoria SUB %CL,0x12AB1024
Registro Generale, Registro Generale SUB %AX,%DX
Immediato, Memoria SUBB $0x5B,(%EDI)
Immediato, Registro Generale SUB $0x54A3,%AX

La SUB fa dest -= src.


Per le sottrazioni tra numeri naturali si parla di prestito (borrow), invece che di riporto.
L’algoritmo è identico sia in base 10 che in base 2:

0 0 1

8 4 4 -
6 3 9

2 0 -5

2 0 5

1 1 0

1 0 1 -
1 1 0

-1 -1 1

1 1 1
Ancora una volta, se le stringhe di bit contenute negli operandi rappresentano numeri naturali, per
vedere se il risultato è corretto o meno bisogna andare a vedere il carry flag (0: il risultato è ancora
un numero naturale, 1: il risultato non è un naturale). Se invece rappresentano numeri interi, il carry
è irrilevante, e bisogna andare a vedere l’overflow flag. Nell’esempio appena fatto, se le due
stringhe di bit rappresentano naturali il risultato non è corretto (c’è un prestito uscente, che va nel
flag CF) . Se, invece, rappresentano interi, il risultato è perfettamente corretto (e pari a -1).
Per quanto riguarda i numeri interi:
- la sottrazione di numeri concordi è sempre rappresentabile (non c’è mai overflow)
- la sottrazione di numeri discordi è rappresentabile soltanto se il risultato su N bit ha lo stesso
segno del minuendo, altrimenti c’è overflow.

SUBTRACT WITH BORROW


FORMATO: SBB source, destination
AZIONE: Modifica l’operando destinatario sottraendovi sia l’operando sorgente sia il
contenuto del flag CF (il risultato dell’operazione è consistente sia se gli operandi sono interpretati
come numeri naturali sia se gli operandi sono interpretati come numeri interi); mette ad 1 il
contenuto del flag CF se, interpretando gli operandi come numeri naturali, è stato richiesto un
prestito; mette ad 1 il contenuto del flag OF se, interpretando gli operandi come numeri interi, si è
verificato un traboccamento. Poiché l’istruzione SBB prevede la gestione del prestito che può
essere stato richiesto durante l’esecuzione di una precedente istruzione SUB o SBB, essa può essere
usata per predisporre pacchetti di istruzioni per la sottrazione di operandi multi_word.
Ad esempio, la somma di due operandi a 64 bit (16 cifre esadecimali) può essere effettuata
utilizzando una SUB per elaborare i 32 bit meno significativi ed una SBB per elaborare i 32 bit più
significativi.
SBB SUB
9B636879 0E5900B9 -
56A9C2D4 67A43B5F =
44B9A5A4 A6B4C55A

FLAG di cui viene modificato il contenuto: Tutti.

Operandi Esempi
Memoria, Registro Generale SBB 0x00002000,%EDX
Registro Generale, Memoria SBB %CL,0x12AB1024
Registro Generale, Registro Generale SBB %AX,%DX
Immediato, Memoria SBBW $0x255B,(%EDI)
Immediato, Registro Generale SBB $0x54A3,%AX
DECREMENT
FORMATO: DEC destination
AZIONE: Equivale all’istruzione SUB $1,destination con la sola differenza che il
contenuto del flag CF non viene modificato.
FLAG di cui viene modificato il contenuto: OF, SF e ZF.
Operandi Esempi
Memoria DECB (%EDI)
Registro Generale DEC %CX

Soffermiamoci un attimo sul fatto che non viene aggiornato CF. Non è un limite. Infatti, il
decremento che produrrebbe un borrow (registrato nel flag CF) è quello che si fa a partire da un
operando pari a 00…000. In questo caso, prima del decremento l’operando vale zero. Quindi,
posso testare direttamente ZF.

NEGATE
FORMATO: NEG destination
AZIONE: Interpreta l’operando destinatario come un numero intero e lo sostituisce con il suo
opposto. Qualora l’operazione non sia possibile, mette ad 1 il contenuto del flag OF. Mette ad 1 il
contenuto del flag CF eccetto quando l’operando è zero: in tal caso lo mette a 0.
FLAG di cui viene modificato il contenuto: Tutti.

Operandi Esempi
Memoria NEGB (%EDI)
Registro Generale NEG %CX

La NEG fa quanto segue:


a) complementa bit a bit il destinatario
b) aggiunge uno
Se ciò che il destinatario contiene è da interpretare come intero (altrimenti quest’operazione non ha
senso), allora questo equivale al calcolo dell’opposto. È necessario tener presente una cosa: in C2,
l’intervallo di rappresentabilità ⎡⎣−2N −1;2N −1 −1⎤⎦ non è simmetrico. C’è un numero negativo in più,

che non ha un opposto. Se nel destinatario c’è quel numero, il risultato sarà quindi errato, e me ne
accorgo testando il flag OF.
COMPARE
FORMATO: CMP source, destination
AZIONE: Verifica se l’operando destinatario è maggiore, uguale o minore dell’operando
sorgente, sia interpretando gli operandi come numeri naturali che come numeri interi. Aggiorna poi
il contenuto dei flag tenendo conto del risultato della verifica (i due operandi rimangono inalterati).
L’esatto algoritmo di aggiornamento del contenuto dei flag è noioso da descriversi:
l’aggiornamento è comunque consistente con l’interpretazione che del contenuto dei flag sarà data
dall’istruzione di salto condizionato, che in un programma sensato segue sempre l’istruzione CMP.
FLAG di cui viene modificato il contenuto: Tutti.
Operandi Esempi
Memoria, Registro Generale CMP 0x00002000,%EDX
Registro Generale, Memoria CMP %CL,0x12AB1024
Registro Generale, Registro Generale CMP %AX,%DX
Immediato, Memoria CMPB $0x5B,(%EDI)
Immediato, Registro Generale CMP $0x45AB54A3,%EAX

La CMP fa quanto segue:


1) null=dest - source
2) aggiorna i flag come farebbe la SUB
È un’istruzione fondamentale. Serve a testare due numeri, ed unita alle istruzioni di salto
condizionato costituisce la coppia base per i costrutti di controllo di flusso. La CMP, di fatto, sottrae
il sorgente dal destinatario, ma non aggiorna il destinatario. Si limita invece ad aggiornare il
registro dei flag come se avesse eseguito la sottrazione. Le istruzioni di salto condizionato, che
vedremo più in là, saltano o meno a seconda del contenuto del registro dei flag.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 27/S1
Titolo: Principali istruzioni ALU II
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Principali Istruzioni ALU II:
Istruzioni Aritmetiche II
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 27/S1
Titolo: Principali istruzioni ALU II
Attività n°: 1

Scaricare la seconda parte delle istruzioni aritmetiche descritta nel file


aritmetiche2.pdf
Istruzioni Aritmetiche II
Prodotto e quoziente di numeri interi e naturali
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Le istruzioni di moltiplicazione e divisione sono diverse per naturali ed interi, perché diversi sono
gli algoritmi da seguire. Quindi c’è una MUL ed una IMUL. Sono istruzioni particolarmente laboriose
per il processore (a differenza delle somme/sottrazioni). Inoltre, mentre per una somma/sottrazione
il risultato sta o su N o su N+1 cifre, (quindi, più o meno sullo stesso numero di cifre degli
operandi), una moltiplicazione tra operandi ad N cifre ha un risultato che sta su un numero di cifre
fino a 2N cifre. Quindi non ha molto senso fare come nelle somme/sottrazioni, cioè utilizzare (ad
esempio) un registro per contenere un operando e il destinatario, in quanto i due hanno dimensione
intrinsecamente diversa.
Per questo motivo, il destinatario della moltiplicazione è implicito, così come uno dei dei due
operandi.

Esistono tre tipi di moltiplicazione:


- a 8 bit: AX = AL * source
- a 16 bit: DX_AX = AX * source
- a 32 bit: EDX_EAX = EAX * source
Quale delle tre sia quella da svolgere viene deciso dal numero di bit di source (oltre che, quando
serve, dal suffisso). Nei casi con 16 e 32 bit, vengono usati due registri, che il programmatore deve
considerare come, rispettivamente, la parte alta e la parte bassa del risultato, nell’ordine con cui
sono stati scritti. Per il caso a 32 bit è assolutamente necessario, perché non esistono registri a 64 bit
in questo processore (e quindi l’unico modo è usarne 2 da 32 giustapposti). Per il caso a 16 bit
sarebbe stato più logico, converrete, scrivere
- a 16 bit: EAX = AX * source
Il motivo per cui viene invece messo in mezzo anche DX è storico. Funzionava così nei processori
a 16 bit (quando i registri a 32 bit non c’erano). Se si fosse cambiato il comportamento nei
processori a 32 bit, non sarebbero più stati compatibili verso il basso (cioè tutti i programmi già
scritti per processori a 16 bit non avrebbero più funzionato).

MULTIPLY
FORMATO: MUL source
AZIONE: Considera l’operando sorgente come un moltiplicando e l’operando destinatario
(implicito) come un moltiplicatore ed effettua l’operazione di moltiplicazione, interpretando gli
operandi come numeri naturali. Più in dettaglio, compie le azioni che seguono.
i) Se l’operando sorgente (moltiplicando) è:
1) ad 8 bit, allora considera il contenuto di AL come il moltiplicatore implicito; effettua
l’operazione di moltiplicazione generando un prodotto a 16 bit (in modo che non possa mai
verificarsi traboccamento) e mette tale prodotto in AX.
2) a 16 bit, allora considera il contenuto di AX come il moltiplicatore implicito; effettua
l’operazione di moltiplicazione generando un prodotto a 32 bit (in modo che non possa mai
verificarsi traboccamento) e mette tale prodotto in DX_AX.
3) a 32 bit, considera il contenuto di EAX come il moltiplicatore implicito; effettua
l’operazione di moltiplicazione generando un prodotto a 64 bit (in modo che non possa mai
verificarsi traboccamento) e mette tale prodotto in EDX_EAX.
ii) Se da un’analisi della metà più significativa del prodotto (in AH, DX, EDX a seconda dei
casi) deduce che il risultato stesso non è esprimibile su un numero di bit pari a quello del molti-
plicando e del moltiplicatore, allora mette ad 1 il contenuto dei flag CF e OF.
FLAG di cui viene modificato il contenuto: CF, OF: vengono messi a 1 se il risultato non sta sul
numero di bit di source, e a zero altrimenti.SF e ZF sono indefiniti.
Operandi Esempi
Memoria MULB (%ESI)
Registro Generale MUL %ECX

INTEGER MULTIPLY
FORMATO: IMUL source
AZIONE: Considera l’operando sorgente come un moltiplicando e l’operando destinatario
(implicito) come un moltiplicatore ed effettua l’operazione di moltiplicazione, interpretando gli
operandi come numeri interi. Più in dettaglio, compie le azioni che seguono.
i) Se l’operando sorgente (moltiplicando) è:
1) ad 8 bit, allora considera il contenuto di AL come il moltiplicatore implicito; effettua
l’operazione di moltiplicazione generando un prodotto a 16 bit (in modo che non possa mai ve-
rificarsi traboccamento) e mette tale prodotto in AX.
2) a 16 bit, allora considera il contenuto di AX come il moltiplicatore implicito; effettua
l’operazione di moltiplicazione generando un prodotto a 32 bit (in modo che non possa mai ve-
rificarsi traboccamento) e mette tale prodotto in DX_AX.
3) a 32 bit, considera il contenuto di EAX come il moltiplicatore implicito; effettua
l’operazione di moltiplicazione generando un prodotto a 64 bit (in modo che non possa mai
verificarsi traboccamento) e mette tale prodotto in EDX_EAX.
ii) Se da un’analisi della metà più significativa del prodotto (in AH, DX, EDX a seconda dei
casi) deduce che il risultato stesso non è rappresentabile su un numero di bit pari a quello del
moltiplicando e del moltiplicatore, allora mette ad 1 il contenuto dei flag CF e OF.
FLAG di cui viene modificato il contenuto: CF, OF, SF (non attendibile) e ZF (non attendibile).
Operandi Esempi
Memoria IMULB (%ESI)
Registro Generale IMUL %ECX

Fa le stesse cose di quella del caso precedente, ma dovete usarla se i vostri operandi contengono
rappresentazioni di interi invece che naturali.

DIVIDE
FORMATO: DIV source
AZIONE: Considera l’operando sorgente come un divisore e l’operando destinatario (implicito)
come un dividendo ed effettua l’operazione di divisione, interpretando gli operandi come numeri
naturali. Più in dettaglio, compie le azioni che seguono.
i) Se l’operando sorgente (divisore) è:
1) ad 8 bit, allora considera il contenuto di AX come il dividendo implicito; effettua
l’operazione di divisione producendo un quoziente ed un resto ad 8 bit e li mette, rispettivamente, in
AL e in AH.
2) a 16 bit, allora considera il contenuto di DX_AX come il dividendo implicito; effettua
l’operazione di divisione producendo un quoziente ed un resto a 16 bit e li mette, rispettivamente, in
AX e in DX.
3) a 32 bit, allora considera il contenuto di EDX_EAX come il dividendo implicito;
effettua l’operazione di divisione producendo un quoziente ed un resto a 32 bit e li mette,
rispettivamente, in EAX e in EDX.
ii) Se nell’effettuare l’operazione di divisione riconosce che il quoziente non è esprimibile su
un numero di bit pari a quello su cui è espresso il divisore, allora genera un’interruzione interna in
conseguenza della quale viene messo in esecuzione un opportuno sottoprogramma, noto come
sottoprogramma n. 0. Il contenuto dei flag e dei registri destinati a contenere il quoziente ed il resto
è, in tal caso, non significativo.
FLAG di cui viene modificato il contenuto: Tutti, ma in modo non attendibile.
Operandi Esempi
Memoria DIVB (%ESI)
Registro Generale DIV %ECX

Per questa valgono le stesse considerazioni fatte per la MUL, con qualche problema in più. Tanto
per cominciare, una divisione non ha un risultato, ma due: quoziente e resto. Vediamo quali sono
gli intervalli di rappresentabilità:
X div Y -> quoziente Q e resto R
- 0 ≤ R < Y : il resto sta per forza sullo stesso n. di bit del divisore
- 0 ≤ Q ≤ X : (infatti, posso dividere anche per Y = 1 ). Quindi, in teoria, il n. di bit del quoziente
dovrebbe essere pari a quello del dividendo.
In pratica, le tre versioni di divisione possibili sono queste:
- a 8 bit: AL = quoziente (AX / source); AH = resto (AX / source);
- a 16 bit: AX = quoziente (DX_AX / source); DX = resto (DX_AX / source);
- a 32 bit: EAX = quoziente (EDX_EAX/source); EDX = resto (EDX_EAX/source);
source dimensione
(divisore) dividendo dividendo quoziente resto
8 bit 16 %AX %AL %AH
16 bit 32 %DX_%AX %AX %DX
32 bit 64 %EDX_%EAX %EAX %EDX

Come si concilia questo con il fatto che il quoziente può essere grande quanto il dividendo? Che
succede se non c’entra? Se il quoziente non c’entra, parte un’eccezione (la stessa che partirebbe se
aveste diviso per zero) ed il vostro programma si inchioda. Non è qualcosa che può essere testato a
posteriori guardando i flag (come per l’addizione/sottrazione), deve essere evitato a priori. È il
programmatore che si deve sincerare che il quoziente stia sul numero di bit dove lo voglio
mettere.
Esempio:
MOV $3, %CL
MOV $15000, %AX
DIV %CL

Il quoziente è 5000, che non sta di sicuro su %AL. Come fa il programmatore a sincerarsi che questo
non accada? In questo caso si vede al volo, ma in un caso generale il dividendo ed il divisore
potrebbero provenire dalla memoria, da registri di interfaccia, da altri conti svolti in precedenza.
Lo fa selezionando la versione opportuna della DIV. In questo caso, devo passare a 16 bit e
scrivere:
MOV $3, %CX
MOV $15000, %AX
MOV $0, %DX
DIV %CX

Se ci si riflette un attimo, si vede che è sempre possibile trovare una versione della divisione che
permette di dividere qualunque coppia di operandi che stia su 32 bit. Alla peggio, basta usare la
divisione più grande.
Nota: Non ci sono mai problemi di rappresentabilità per il resto, visto che il numero di bit dove lo
voglio mettere è sempre uguale al numero dei bit del divisore, ed il resto della divisione tra naturali
è per definizione minore del divisore.

INTEGER DIVIDE
FORMATO: IDIV source
AZIONE: Considera l’operando sorgente come un divisore e l’operando destinatario (implicito)
come un dividendo ed effettua l’operazione di divisione, interpretando gli operandi come numeri
interi. Più in dettaglio, compie le azioni che seguono.
i) Se l’operando sorgente (divisore) è:
1) ad 8 bit, allora considera il contenuto di AX come il dividendo implicito; effettua
l’operazione di divisione producendo un quoziente ed un resto ad 8 bit e li mette, rispettivamente, in
AL e in AH.
2) a 16 bit, allora considera il contenuto di DX_AX come il dividendo implicito; effettua
l’operazione di divisione producendo un quoziente ed un resto a 16 bit e li mette, rispettivamente, in
AX e in DX.
3) a 32 bit, allora considera il contenuto di EDX_EAX come il dividendo implicito;
effettua l’operazione di divisione producendo un quoziente ed un resto a 32 bit e li mette,
rispettivamente, in EAX e in EDX.
ii) Se nell’effettuare l’operazione di divisione riconosce che il quoziente non è esprimibile su
un numero di bit pari a quello su cui è espresso il divisore, allora genera un’interruzione interna in
conseguenza della quale viene messo in esecuzione un opportuno sottoprogramma, noto come
sottoprogramma n. 0. Il contenuto dei flag e dei registri destinati a contenere il quoziente ed il resto
è, in tal caso, non significativo.
FLAG di cui viene modificato il contenuto: Tutti, ma in modo non attendibile.
Operandi Esempi
Memoria IDIVB (%ESI)
Registro Generale IDIV %ECX

Fa le stesse cose di quella del caso precedente, ma dovete usarla se i vostri operandi contengono
rappresentazioni di interi invece che naturali.
Una nota sui segni degli operandi e dei risultati: nella divisione intera il resto ha sempre il segno
del dividendo, ed è in modulo minore del divisore. Ciò vuol dire che il quoziente viene sempre
approssimato all’intero più vicino allo zero. Questa cosa è difficile da accettare, perché
inconsistente con le nozioni di algebra che possediamo. Però è così, quindi bisogna farcene una
ragione.
Esempio:
- -7 div 3: quoziente -2; resto -1
- 7 div -3: quoziente -2; resto +1.
Se avete bisogno di qualcosa di diverso (ad esempio, di un resto sempre positivo e minore in
modulo del divisore), conviene sincerarsi prima che il dividendo abbia segno positivo, cambiando
di segno ad entrambi gli operandi se necessario.

Note conclusive sulle istruzioni di moltiplicazione e divisione


- Va scelta con cura la versione (soprattutto per la divisione). Dipende dal problema e dalle
ipotesi che posso fare.
- Mi devo ricordare di azzerare DX o EDX prima della divisione, se questa è a più di 8 bit
(scordarselo è un errore tipico)
- Mi devo ricordare che il contenuto di DX o EDX viene modificato dall’operazione di
moltiplicazione/divisione se questa è a più di 8 bit (altro errore tipico).

Ci sono infine alcune istruzioni di conversione, o meglio di estensione di campo per numeri interi.
Quest’ultima è l’operazione con la quale si rappresenta un numero di N cifre usando un numero
maggiore di cifre. Tutte queste istruzioni lavorano sul registro EAX o su parti di esso.
Per i numeri naturali, l’estensione di campo si fa aggiungendo degli zeri in testa, in base 10 come in
base 2. Questo può essere fatto con delle semplici MOV, o con istruzioni logiche che poi vedremo
(non c’è bisogno di istruzioni ad hoc). Per i numeri interi rappresentati in complemento a 2, la
legge da seguire è necessariamente diversa. Se ho un numero negativo su 8 bit, che quindi
comincia con 1, è chiaro che – se lo voglio estendere su 16 bit – non posso limitarmi ad aggiungere
zeri in testa, perché il numero che viene fuori sarebbe positivo. La legge per gli interi è ripetere il
bit più significativo. Tale legge è sufficientemente intuitiva. Infatti, se la rappresentazione di un
numero comincia per 1, vuol dire che è la rappresentazione di un numero negativo. In tal caso, il

( )
numero rappresentato è − 11001 + 1 . Se lo voglio estendere, devo fare in modo che, una volta

complementato, il suo valore non cambi. Quindi devo aggiungere in testa degli 1, che una volta
complementati diventano zeri.
Le seguenti istruzioni fanno appunto questo.

CONVERT BYTE TO WORD


FORMATO: CBW
AZIONE: Interpreta il contenuto di AL come un numero intero ad 8 bit, rappresenta tale numero
su 16 bit e quindi lo memorizza in AX. L’istruzione AND $0x00FF,%AX (o MOV $0x00,%AH)
compie un’operazione simile, nell’ambito della aritmetica dei numeri naturali.
FLAG di cui viene modificato il contenuto: Nessuno.

00000000 01100111 11111111 11100111


AH AL AH AL
CONVERT WORD TO DOUBLEWORD
FORMATO: CWD
AZIONE: Interpreta il contenuto di AX come un numero intero a 16 bit, rappresenta tale numero
su 32 bit e quindi lo memorizza in DX_AX. L’istruzione AND $0x0000,%DX (o MOV
$0x0000,%DX) compie un’operazione simile, nell’ambito della aritmetica dei numeri naturali.
FLAG di cui viene modificato il contenuto: Nessuno.

CONVERT DOUBLEWORD TO QUADWORD


FORMATO: CDQ
AZIONE: Interpreta il contenuto di EAX come un numero intero a 32 bit, rappresenta tale
numero su 64 bit e quindi lo memorizza in EDX_EAX. L’istruzione AND $0x00000000,%EDX (o
MOV $0x00000000,%EDX) compie un’operazione simile, nell’ambito della aritmetica dei numeri
naturali.
FLAG di cui viene modificato il contenuto: Nessuno.
CONVERT WORD TO DOUBLEWORD in EAX
FORMATO: CWDE
AZIONE: Interpreta il contenuto di AX come un numero intero a 16 bit, rappresenta tale numero
su 32 bit e quindi lo memorizza in EAX. L’istruzione AND $0x0000FFFF,%EAX compie
un’operazione simile, nell’ambito della aritmetica dei numeri naturali.
FLAG di cui viene modificato il contenuto: Nessuno.

Esempio: voglio sommare due interi, uno si trova in AL ed uno in EBX.


MOV $-5, %AL
MOV $100000, %EBX
CBW
CWDE
ADD %EAX, %EBX
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 27/S2
Titolo: Principali istruzioni ALU II
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Principali Istruzioni ALU II:
Istruzioni di rotazione e traslazione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 27/S2
Titolo: Principali istruzioni ALU II
Attività n°: 1

Scaricare la descrizione delle istruzioni di traslazione e rotazione contenute nel


file traslaRuota.pdf
Istruzioni di traslazione e rotazione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Tali istruzioni servono a rigirare i bit dell’operando destinatario.
SX DX
traslazione SHL SHR
Tutte hanno due formati: SAL SAR
OPCODE src, dest rotazione ROL ROR
OPCODE dest RCL RCR

Dove src è il numero di volte che l’operazione OPCODE deve essere ripetuta sul destinatario. In
più, src deve essere un operando immediato o il contenuto del registro CL, e deve valere al
massimo 31. Nell’istruzione uno ci può scrivere cosa gli pare, ma tanto il processore considera
soltanto i 5 bit più bassi del src, e niente altro, quindi se ci scrivo 32 è come se ci scrivessi zero
(il che implica sempre non fare niente di significativo). Nel formato ad un solo operando è come se
si assumesse un operando sorgente implicito pari ad 1.
Si noti che in questo caso le istruzioni hanno operandi di lunghezza diversa. Non è un problema,
visto che hanno un significato completamente diverso. Nel caso sia necessario inserire un suffisso,
questo deve concordare con l’operando destinatario, ovviamente.

1.1.1 SHIFT LOGICAL LEFT


FORMATO: SHL source, destination
SHL destination
AZIONE: Interpreta l’operando sorgente come un numero naturale n e, per n volte, sostituisce
il bit contenuto in CF e ciascun bit dell’operando destinatario con il bit che gli è immediatamente a
destra, considerando il bit più significativo dell’operando destinatario immediatamente a destra del
bit contenuto in CF e sostituendo con 0 il bit meno significativo dell’operando destinatario. Pone
infine a 0 il contenuto del flag OF. Il numero naturale n non deve superare 31. Se l’operando
sorgente non è presente, compie l’operazione una sola volta.
Guardando all’operando destinatario come ad un numero naturale, questa istruzione sostituisce tale
numero con il suo prodotto per 2n: il risultato è attendibile con certezza solo nel caso n=1 e
contenuto finale di CF a 0.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0
CF
FLAG di cui viene modificato il contenuto: Tutti.
Operandi Esempi
Immediato, Registro Generale SHL $1,%EAX
Immediato, Memoria SHLB $7,0x00002000
Registro CL, Registro Generale SHL %CL,%BX
Registro CL, Memoria SHLL %CL,(%EDI)
Memoria SHLL (%EDI)
Registro Generale SHL %AX

Una cosa da ricordare bene è che, se src>1, il flag CF viene sovrascritto più volte, e quindi quello
che si vede è l’ultima scrittura. Quindi, non è affidabile come misura della rappresentabilità del
destinatario se src>1.
Le operazioni di shift (destro e sinistro) servono anche a moltiplicare e dividere per una potenza
della base (cioè di due). Così come in base 10 moltiplicare e dividere per 10 significa aggiungere
uno zero in fondo o togliere una cifra (eventualmente aggiungendo zeri in cima), lo stesso vale in
base 2 (ed in qualunque base). Visto che una SHL è molto più veloce (e dà molti meno problemi) di
una MUL, è necessario ricordarselo.

1.1.2 SHIFT ARITHMETIC LEFT


FORMATO: SAL source, destination
SAL destination
AZIONE: Interpreta l’operando sorgente come un numero naturale n e, per n volte, sostituisce
il bit contenuto in CF e ciascun bit dell’operando destinatario con il bit che gli è immediatamente a
destra, considerando il bit più significativo dell’operando destinatario immediatamente a destra del
bit contenuto in CF e sostituendo con 0 il bit meno significativo dell’operando destinatario. Qualora
il bit più significativo dell’operando destinatario abbia cambiato anche una sola volta il suo valore,
mette ad 1 il contenuto del flag OF. Il numero naturale n non deve superare 31. Se l’operando
sorgente non è presente, compie l’operazione una sola volta.
Guardando all’operando destinatario come ad un numero intero, questa istruzione sostituisce tale
numero con il suo prodotto per 2n: il risultato è attendibile con certezza solo se il contenuto OF è a
0.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0
CF
FLAG di cui viene modificato il contenuto: Tutti.
Operandi Esempi
Immediato, Registro Generale SAL $1,%EAX
Immediato, Memoria SALB $7,0x00002000
Registro CL, Registro Generale SAL %CL,%BX
Registro CL, Memoria SALL %CL,(%EDI)
Memoria SALL (%EDI)
Registro Generale SAL %AX

Questa è identica alla precedente, salvo per un importante particolare: nel fare i vari shift, controlla
se il bit più significativo cambia valore. Se è così almeno una volta, setta OF. Infatti, se il bit più
significativo (che per gli interi denota il segno) cambia valore, vuol dire che si sta passando da un
numero negativo ad uno positivo o viceversa, il che è la spia del fatto che il risultato non è corretto
se interpretato come numero intero. In particolare, non sarà la rappresentazione del destinatario
moltiplicato per 2src.

1.1.3 SHIFT LOGICAL RIGHT


FORMATO: SHR source, destination
SHR destination
AZIONE: Interpreta l’operando sorgente come un numero naturale n e, per n volte, sostituisce
il bit contenuto in CF e ciascun bit dell’oprando destinatario con il bit che gli è immediatamente a
sinistra, considerando il bit meno significativo dell’operando destinatario immediatamente a sinistra
del bit contenuto in CF e sostituendo con 0 il bit più significativo dell’operando destinatario. Pone
infine a 0 il contenuto del flag OF. Il numero naturale n non deve superare 31. Se l’operando
sorgente non è presente, compie l’operazione una sola volta.
Guardando all’operando destinatario come ad un numero naturale, questa istruzione divide tale
numero per 2n e lo sostituisce con il quoziente (approssimato per difetto).

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0
CF
FLAG di cui viene modificato il contenuto: Tutti.

Operandi Esempi
Immediato, Registro Generale SHR $1,%EAX
Immediato, Memoria SHRB $7,0x00002000
Registro CL, Registro Generale SHR %CL,%BX
Registro CL, Memoria SHRL %CL,(%EDI)
Memoria SHRL (%EDI)
Registro Generale SHR %AX
Questa fa l’operazione opposta della sua omologa. Corrisponde ad una divisione per 2src di un
operando naturale con approssimazione per difetto, che è coerente con quello che fa l’istruzione
DIV. Si osservi che vengono inseriti zeri in testa.

1.1.4 SHIFT ARITHMETIC RIGHT


FORMATO: SAR source, destination
SAR destination
AZIONE: Interpreta l’operando sorgente come un numero naturale n e, per n volte, sostituisce
il bit contenuto in CF e ciascun bit dell’operando destinatario con il bit che gli è immediatamente a
sinistra, considerando il bit meno significativo dell’operando destinatario immediatamente a sinistra
del bit contenuto in CF e sostituendo con se stesso il bit più significativo dell’operando destinatario.
Pone infine a 0 il contenuto del flag OF. Il numero naturale n non deve superare 31. Se l’operando
sorgente non è presente, compie l’operazione una sola volta.
Guardando all’operando destinatario come ad un numero intero, questa istruzione divide tale
numero per 2n e lo sostituisce con il quoziente (approssimato per difetto).

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

CF

FLAG di cui viene modificato il contenuto: Tutti.


Operandi Esempi
Immediato, Registro Generale SAR $1,%EAX
Immediato, Memoria SARB $7,0x00002000
Registro CL, Registro Generale SAR %CL,%BX
Registro CL, Memoria SARL %CL,(%EDI)
Memoria SARL (%EDI)
Registro Generale SAR %AX

Questa fa l’operazione opposta della sua omologa. Corrisponde al calcolo del quoziente di una
divisione per 2src di un operando intero. Infatti, invece di inserire zeri in testa come nel caso
precedente, si inserisce nuovamente il bit più significativo (si mantiene, cioè, il segno
dell’operando). Attenzione, perché questo non è lo stesso quoziente che calcolerebbe la IDIV.
Infatti, con la SAR abbiamo sempre approssimazione verso meno infinito del quoziente, qualora la
divisione abbia resto. Nella IDIV, invece, l’approssimazione del quoziente è sempre verso lo zero.

Ad esempio, se ho -5 DIV 2, ottengo r = −1, q = −2 . Se faccio lo shift, invece, ottengo quanto


segue:
-5/2

SAR IDIV

-3 -2 -1 0

C2, 8bit

-5 256-5=251 1 1 1 1 1 0 1 1

1 1 1 1 1 1 0 1

E, per calcolare il numero intero rappresentato, devo applicare la nota regola:


⎧⎪ X X N −1 = 0
x = ⎨
⎪⎩− ( X + 1) X N −1 = 1
Quindi, x = − ( 00000010 + 1)b 2 = −(11)b 2 = −3 . È necessario farci caso quando si fanno i conti.

Le seguenti istruzioni di rotazione sono banali. Molto semplicemente, shiftano tutti i bit
reinserendo dalla parte opposta quello che è rimasto fuori. Ne esistono quattro: ruotare a dx/sx,
passando o meno attraverso il CF (si può, infatti, usare il CF come N+1-simo bit nella rotazione).

1.1.5 ROTATE LEFT


FORMATO: ROL source, destination
ROL destination
AZIONE: Interpreta l’operando sorgente come un numero naturale n e, per n volte, sostituisce
il bit contenuto in CF e ciascun bit dell’operando destinatario con il bit che gli è immediatamente a
destra, considerando il bit più significativo dell’operando destinatario immediatamente a destra sia
del bit contenuto in CF che del bit meno significativo dell’operando destinatario stesso. Modifica il
flag OF, ma in modo difficile da interpretare. Il numero naturale n non deve superare 31. Se
l’operando sorgente non è presente, compie l’operazione una sola volta.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

CF

FLAG di cui viene modificato il contenuto: CF, OF.


Operandi Esempi
Immediato, Registro Generale ROL $1,%EAX
Immediato, Memoria ROLB $7,0x00002000
Registro CL, Registro Generale ROL %CL,%BX
Registro CL, Memoria ROLL %CL,(%EDI)
Memoria ROLL (%EDI)
Registro Generale ROL %AX

1.1.6 ROTATE RIGHT


FORMATO: ROR source, destination
ROR destination
AZIONE: Interpreta l’operando sorgente come un numero naturale n e, per n volte, sostituisce
il bit contenuto in CF e ciascun bit dell’operando destinatario con il bit che gli è immediatamente a
sinistra, considerando il bit meno significativo dell’operando destinatario immediatamente a sinistra
sia del bit contenuto in CF che del bit più significativo dell’operando destinatario. Modifica il flag
OF, ma in modo difficile da interpretare. Il numero naturale n non deve superare 31. Se l’operando
sorgente non è presente, compie l’operazione una sola volta.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

CF

FLAG di cui viene modificato il contenuto: CF, OF


Operandi Esempi
Immediato, Registro Generale ROR $1,%EAX
Immediato, Memoria RORB $7,0x00002000
Registro CL, Registro Generale ROR %CL,%BX
Registro CL, Memoria RORL %CL,(%EDI)
Memoria RORL (%EDI)
Registro Generale ROR %AX

1.1.7 ROTATE THROUGH CARRY LEFT


FORMATO: RCL source, destination
RCL destination
AZIONE: Interpreta l’operando sorgente come un numero naturale n e, per n volte, sostituisce
il bit contenuto in CF e ciascun bit dell’operando destinatario con il bit che gli è immediatamente a
destra, considerando il bit contenuto in CF immediatamente a destra del bit meno significativo ed
immediatamente a sinistra del bit più significativo dell’operando destinatario. Il numero naturale n
non deve superare 31. Se l’operando sorgente non è presente, compie l’operazione una sola volta.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

CF

FLAG di cui viene modificato il contenuto: CF ed OF (la modifica di OF è di difficile


interpretazione)

Operandi Esempi
Immediato, Registro Generale RCL $1,%EAX
Immediato, Memoria RCLB $7,0x00002000
Registro CL, Registro Generale RCL %CL,%BX
Registro CL, Memoria RCLL %CL,(%EDI)
Memoria RCLL (%EDI)
Registro Generale RCL %AX

1.1.8 ROTATE THROUGH CARRY RIGHT


FORMATO: RCR source, destination
RCR destination
AZIONE: Interpreta l’operando sorgente come un numero naturale n e, per n volte, sostituisce
il bit contenuto in CF e ciascun bit dell’operando destinatario con il bit che gli è immediatamente a
sinistra, considerando il bit contenuto in CF immediatamente a sinistra del bit più significativo ed
immediatamente a destra del bit meno significativo dell’operando destinatario. Il numero naturale n
non deve superare 31. Se l’operando sorgente non è presente, compie l’operazione una sola volta.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

CF

FLAG di cui viene modificato il contenuto: CF e OF (la modifica di OF è di difficile


interpretazione)

Operandi Esempi
Immediato, Registro Generale RCR $1,%EAX
Immediato, Memoria RCRB $7,0x00002000
Registro CL, Registro Generale RCR %CL,%BX
Registro CL, Memoria RCRL %CL,(%EDI)
Memoria RCRL (%EDI)
Registro Generale RCL %AX
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 27/S3
Titolo: Principali istruzioni ALU II
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Principali Istruzioni ALU II:
Istruzioni Logiche
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 27/S3
Titolo: Principali istruzioni ALU II
Attività n°: 1

Scaricare la descrizione delle istruzioni logiche contenuta nel file logiche.pdf


Istruzioni logiche
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Anche queste sono piuttosto banali. Applicano gli operatori logici noti dall’algebra di Boole. È
importante ricordare che in genere modificano anche i flag (serve a non presumere, erroneamente,
che i flag vengano lasciati intatti).

1.1.1 NOT
FORMATO: NOT destination

AZIONE: Modifica l’operando destinatario applicando a ciascuno dei suoi bit l’operazione
logica not.
FLAG di cui viene modificato il contenuto: Nessuno.
Operandi Esempi
Memoria NOTL (%ESI)
Registro Generale NOT %CX

1.1.2 AND
FORMATO: AND source, destination
AZIONE: Sostituisce ciascun bit dell’operando destinatario con il risultato dell’operazione
logica and tra il bit stesso ed il corrispondente bit dell’operando sorgente; mette a 0 il contenuto dei
flag CF ed OF.
FLAG di cui viene modificato il contenuto: Tutti.
Operandi Esempi
Memoria, Registro Generale AND 0x00002000,%EDX
Registro Generale, Memoria AND %CL,0x12AB1024
Registro Generale, Registro Generale AND %AX,%DX
Immediato, Memoria ANDB $x5B,(%EDI)
Immediato, Registro Generale AND $0x45AB54A3,%EAX

1.1.3 OR
FORMATO: OR source, destination
AZIONE: Sostituisce ciascun bit dell’operando destinatario con il risultato dell’operazione
logica or tra il bit stesso ed il corrispondente bit dell’operando sorgente; mette a 0 il contenuto dei
flag CF ed OF.
FLAG di cui viene modificato il contenuto: Tutti.
Operandi Esempi
Memoria, Registro Generale OR 0x00002000,%EDX
Registro Generale, Memoria OR %CL,0x12AB1024
Registro Generale, Registro Generale OR %AX,%DX
Immediato, Memoria ORB $0x5B,(%EDI)
Immediato, Registro Generale OR $0x45AB54A3,%EAX

1.1.4 XOR
FORMATO: XOR source, destination
AZIONE: Sostituisce ciascun bit dell’operando destinatario con il riisultato dell’operazione
logica xor tra il bit stesso ed il corrispondente bit dell’operando sorgente; mette a 0 il contenuto dei
flag CF ed OF.
FLAG di cui viene modificato il contenuto: Tutti.
Operandi Esempi
Memoria, Registro Generale XOR 0x00002000,%EDX
Registro Generale, Memoria XOR %CL,0x12AB1024
Registro Generale, Registro Generale XOR %AX,%DX
Immediato, Memoria XORB $0x5B,(%EDI)
Immediato, Registro Generale XOR $0x45AB54A3,%EAX

Esempio: voglio sommare due numeri naturali, uno in AL, l’altro in EBX.
MOV $5, %AL
MOV $100000, %EBX
AND $0x000000FF, %AL
ADD %EAX, %EBX

1.1.5 TEST
FORMATO: TEST source, destination
AZIONE: Esegue l’AND bit a bit tra operando sorgente e destinatario, e modifica i flag SF e ZF
di conseguenza. CF ed OF sono messi a zero. Lascia inalterato l’operando destinatario. Nei
programmi sensati, un’istruzione di salto condizionato (frequentemente del tipo JZ/JNZ) segue
sempre un’istruzione di TEST.
FLAG di cui viene modificato il contenuto: tutti.
Operandi Esempi
Memoria, Registro Generale TEST 0x00002000,%EDX
Registro Generale, Memoria TEST %CL,0x12AB1024
Registro Generale, Registro Generale TEST %AX,%DX
Immediato, Memoria TESTB $0x5B,(%EDI)
Immediato, Registro Generale TEST $0x45AB54A3,%EAX
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28
Titolo: Introduzione
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Istruzioni di controllo e gestione sottoprogrammi:
Introduzione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28
Titolo: Introduzione
Attività n°: 1

La categoria delle istruzioni di controllo include tutte quelle la cui


esecuzione altera (eventualmente sotto condizione) il flusso
sequenziale di esecuzione.

Ognuna di tali istruzioni deve pertanto specificare un indirizzo di


salto, cioè un nuovo indirizzo da immettere, eventualmente sotto
condizione, nel registro EIP.

Le istruzioni di controllo esprimono l’indirizzo di salto in uno dei


seguenti formati:

OPCODE %EIP ± displacement


OPCODE *extended_register
OPCODE *memory
OPCODE
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28
Titolo: Introduzione
Attività n°: 1

Nel primo formato (indirizzamento relativo) l’indirizzo di salto è


ottenuto aggiungendo o sottraendo, modulo 232, il displacement
all’indirizzo contenuto in EIP.

Nel secondo formato l’indirizzo di salto è contenuto nel registro


specificato nell’istruzione. In questo caso, il nome del registro deve
essere preceduto da un asterisco.

Nel terzo formato l’indirizzo di salto è contenuto nella quadrupla


locazione individuata dal campo memory, che può essere scritto
secondo le modalità di indirizzamento viste per gli operandi in
memoria delle istruzioni operative (cioè con una, due o tutte e tre le
componenti registro e displacement). Anche in questo caso ci vuole
un asterisco.

Nel quarto ed ultimo formato l’indirizzo di salto sta nella pila.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28
Titolo: Introduzione
Attività n°: 1

Le istruzioni di controllo si dividono in due categorie: istruzioni di


salto (istruzioni con codice operativo JMP, Jcon, ecc.) e istruzioni
per la gestione dei sottoprogrammi (istruzioni con codice
operativo CALL e RET).

Le istruzioni di salto sono utilizzate per effettuare una scelta fra


due flussi sequenziali di esecuzione indipendenti e quindi non
forniscono alcun supporto per rintracciare l’istruzione testualmente
successiva a quella di salto.

Sono usate, essenzialmente, per supportare cicli e costrutti


if…then…else.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28
Titolo: Introduzione
Attività n°: 1

Le istruzioni per la gestione dei sottoprogrammi sono invece


utilizzate per effettuare un distacco dal flusso sequenziale di
esecuzione in atto (flusso principale), con il vincolo che il nuovo
flusso di esecuzione deve tornare in seguito a reinnestarsi nel
flusso principale, a partire dall’istruzione successiva (istruzione di
rientro) a quella che ha provocato il distacco.

Nessuna delle istruzioni di controllo modifica i flag.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S1
Titolo: Istruzioni di salto
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Istruzioni di controllo e gestione sottoprogrammi:
Istruzioni di salto
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S1
Titolo: Istruzioni di salto
Attività n°: 1

Scaricare la descrizione delle istruzioni di salto contenuta nel file


salti.pdf
Istruzioni di salto
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange

JUMP
FORMATO: JMP %EIP ± displacement
JMP *extended_register
JMP *memory

AZIONE: Calcola un indirizzo di salto e lo immette nel registro EIP.


FLAG di cui viene modificato il contenuto: Nessuno.

L’istruzione JMP serve a saltare da qualche altra parte, ed in questo è del tutto analoga ad una goto
del C++ (se vi è stata descritta). Normalmente viene messa alla fine di un ciclo, per ritornare
all’inizio del ciclo. L’indirizzo dell’istruzione cui si salta può essere:
- specificato in modo relativo rispetto al contenuto corrente di %EIP (osservare che, quando viene
eseguita un’istruzione, il contenuto corrente di %EIP è l’indirizzo dell’istruzione successiva)
- contenuto in un registro esteso (che va scritto con l’* davanti)
- specificato con uno dei qualunque dei formati di indirizzamento di memoria (scritto con l’*
davanti).
Di fatto, quando si programma in Assembler, si usa soltanto il primo indirizzamento, ma invece
di dover contare a mano i byte si specificano delle etichette simboliche. Però esistono anche gli altri
modi, ed è bene saperlo.
La JMP può essere usata per inchiodare il processore. Basta specificare (in modo relativo o
assoluto) lo stesso indirizzo dell’istruzione che viene eseguita, ed il processore entra in un loop
infinito.

1.1.1 JUMP if CONDITION MET


FORMATO: Jcon %EIP ± displacement
AZIONE: Esamina il contenuto dei flag (o il contenuto di CX o di ECX in due casi molto
particolari). Se da questo esame risulta che la condizione con è soddisfatta, allora si comporta come
l’istruzione JMP %EIP ± displacement; in caso contrario termina senza compiere alcuna
azione.
FLAG di cui viene modificato il contenuto: Nessuno.
Di seguito sono riassunti i codici operativi di alcune delle istruzioni di salto condizionato e, per
ciascuno di essi, è spiegato brevemente il significato della pertinente condizione con.

JE (Jump if Equal) la condizione è soddisfatta se ZF contiene 1; il verificarsi di questa condizione dopo


l’esecuzione di un’istruzione CMP indica che l’operando destinatario era uguale all’operando
sorgente.
JNE (Jump if Not Equal) la condizione è soddisfatta se ZF contiene 0; il verificarsi di questa condizione
dopo un’istruzione CMP indica che l’operando destinatario non era uguale all’operando sorgente.
JA (Jump if Above) la condizione è soddisfatta se CF contiene 0 e ZF contiene 0; il verificarsi di questa
condizione dopo l’esecuzione di un’istruzione CMP indica che l’operando destinatario era maggiore
dell’operando sorgente, essendo gli operandi interpretati come numeri naturali.
JAE (Jump if Above or Equal) la condizione è soddisfatta se CF contiene 0; il verificarsi di questa
condizione dopo l’esecuzione di un’istruzione CMP indica che l’operando destinatario era maggiore
o uguale rispetto all’operando sorgente, essendo gli operandi interpretati come numeri naturali.
JB (Jump if Below) la condizione è soddisfatta se CF contiene 1; il verificarsi di questa condizione dopo
l’esecuzione di un’istruzione CMP indica che l’operando destinatario era minore dell’operando
sorgente, essendo gli operandi interpretati come numeri naturali.
JBE (Jump if Below or Equal) la condizione è soddisfatta se CF contiene 1 o ZF contiene 1; il verificarsi
di questa condizione dopo l’esecuzione di un’istruzione CMP indica che l’operando destinatario era
minore od uguale rispetto all’operando sorgente, essendo gli operandi interpretati come numeri
naturali.
JG (Jump if Greater) la condizione è soddisfatta se ZF contiene 0 e se il contenuto di SF è uguale a
quello di OF; il verificarsi di questa condizione dopo l’esecuzione di un’istruzione CMP indica che
l’operando destinatario era maggiore dell’operando sorgente, essendo gli operandi interpretati come
numeri interi.
JGE (Jump if Greater or Equal) la condizione è soddisfatta se il contenuto di SF è uguale a quello di OF;
il verificarsi di questa condizione dopo l’esecuzione di un’istruzione CMP indica che l’operando
destinatario maggiore o uguale rispetto all’operando sorgente, essendo gli operandi interpretati come
numeri interi.
JL (Jump if Less) la condizione è soddisfatta se il contenuto di SF è diverso da quello di OF; il
verificarsi di questa condizione dopo l’esecuzione di un’istruzione CMP indica che l’operando
destinatario era minore dell’operando sorgente, essendo gli operandi interpretati come numeri interi.
JLE (Jump if Less or Equal) la condizione è soddisfatta se ZF contiene 1 oppure se il contenuto di SF è
diverso da quello di OF; il verificarsi di questa condizione dopo l’esecuzione di un’istruzione CMP
indica che l’operando destinatario era minore od uguale rispetto all’operando sorgente, essendo gli
operandi interpretati come numeri interi.
JZ (Jump if Zero) la condizione è soddisfatta se ZF contiene 1; il verificarsi di questa condizione indica
che il risultato dell’istruzione precedente è stato zero.
JNZ (Jump if Not Zero) la condizione è soddisfatta se ZF contiene 0; il verificarsi di questa condizione
indica che il risultato dell’istruzione precedente è stato diverso da zero.
JC (Jump if Carry) la condizione è soddisfatta se CF contiene 1.
JNC (Jump if No Carry) la condizione è soddisfatta se CF contiene 0.
JO (Jump if Overflow) la condizione è soddisfatta se OF contiene 1.
JNO (Jump if No Overflow) la condizione è soddisfatta se OF contiene 0.
JS (Jump if Sign) la condizione è soddisfatta se SF contiene 1.
JNS (Jump if No Sign) la condizione è soddisfatta se SF contiene 0.
JCX (Jump if CX) salta se CX contiene 0
JECX (Jump if ECX) salta se ECX contiene zero

Le istruzioni di salto condizionato seguono sempre qualche istruzione che tocca i flag, in quanto
le condizioni che si possono specificare hanno tutte a che fare con i flag. Tipicamente (ma non
esclusivamente) seguono una CMP. Detta meglio: dopo una CMP si ritrova sicuramente un salto
condizionato, in qualunque programma sensato. Visto che però anche diverse altre istruzioni
toccano i flag (ad esempio, quelle aritmetiche e logiche), i salti condizionati possono stare anche
dopo quelle.
I salti condizionati sono di quattro tipi:
- flag a 1/0
- relazioni tra naturali / tra interi
- contenuto del registro CX/ECX

1) flag a 1 o a 0: JC/JNC, JS/JNS, JZ/JNZ, JO/JNO. Nel registro EF ci sono anche altri flag che
per adesso non consideriamo. Questi flag hanno comunque una coppia di salti condizionati
associati. Questo tipo di salti condizionati può essere usato dopo qualunque istruzione che tocca i
flag.

Esempi di porzione di programma:


ADD %AX, %BX Se la somma del contenuto di AX e BX non è rappresentabile
JC … su 16 bit (interpretando i numeri come naturali), salta
ist1 all’indirizzo specificato, altrimenti prosegue da ist1.

ADD %AX, %BX Se la somma del contenuto di AX e BX non è rappresentabile


JO … su 16 bit (interpretando i numeri come interi), salta
ist1 all’indirizzo specificato, altrimenti prosegue da ist1.

2) relazione tra naturali: JE, JNE, JA, JAE, JB, JBE. È bene limitarsi ad usare queste
soltanto dopo una CMP. In tal caso, le condizioni scritte nel codice operativo si riferiscono
all’operando destinatario della precedente CMP, e sono valide soltanto se l’interpretazione degli
operandi è quella di numeri naturali.
Esempio di porzione di programma:
CMP %AX, %BX Se il numero naturale contenuto in BX è
JAE … maggiore o uguale di quello in AX, salta
ist1 all’indirizzo specificato, altrimenti prosegue da
ist1.

L’esatto algoritmo che consente di vedere, dai flag, se un numero è maggiore/minore dell’altro
(interpretando la sua rappresentazione o come naturale o come intero), è noioso a descriversi (e di
scarsa utilità pratica). Facciamo un esempio giusto per vedere che è possibile.
Jump if Below or Equal: testa se, nella precedente CMP, dest<=src, interpretando le stringhe di
bit come numeri naturali. Come si fa questa cosa? La CMP sottrae src da dest, e quindi:
- se il risultato è nullo, va bene. Ma se è nullo ZF contiene 1
- se la sottrazione ha generato prestito, va bene (perché vuol dire che il destinatario era minore,
sempre stando all’interpretazione delle due stringhe di bit come naturali). Ma in questo caso CF
contiene 1
La condizione è quindi: CF=1 OR ZF=1.

3) relazione tra interi: JE, JNE, JG, JGE, JL, JLE. È bene limitarsi ad usare queste
soltanto dopo una CMP. In tal caso, le condizioni scritte nel codice operativo si riferiscono
all’operando destinatario della precedente CMP, e sono valide soltanto se l’interpretazione degli
operandi è quella di numeri interi. Si noti che le due - JE, JNE - sono valide sia per interi che per
naturali, visto che fanno il confronto bit a bit e che la rappresentazione è unica.
Esempio di porzione di programma:
CMP %AX, %BX Se il numero intero contenuto in BX è minore o
JLE … uguale di quello in AX, salta all’indirizzo
ist1 specificato, altrimenti prosegue da ist1.

L’esatto algoritmo che consente di vedere, dai flag, se un numero è maggiore/minore dell’altro
(interpretando la sua rappresentazione o come naturale o come intero), è noioso a descriversi (e di
scarsa utilità pratica). Facciamo un esempio giusto per vedere che è possibile.

Jump if Greater or Equal: testa se, nella precedente CMP, dest>=src, interpretando le stringhe di
bit come numeri interi. Come si fa questa cosa? La CMP sottrae src da dest, e quindi:
- se la differenza è rappresentabile OF=0. La condizione è vera se la differenza è positiva
(SF=0)
- se la differenza non è rappresentabile OF=1, il bit del segno è certamente sbagliato. Quindi, la
condizione è vera quando la differenza è negativa (SF=1)
La condizione è quindi: SF=OF.

Il buono è che non c’è bisogno di ricordarsi gli algoritmi, basta conoscere i codici mnemonici
delle istruzioni (e quelli sono facili da ricordare).

4) contenuto del registro CX/ECX : JCX,JECX


Si noti che non esiste la versione negata di questi due salti condizionati. Saltano se il contenuto
di CX o ECX è zero. Il registro ECX (o sue parti) viene usato molto spesso come registro di
conteggio, ad esempio per tenere il conto delle iterazioni in un ciclo for. Questo giustifica un
trattamento speciale che gli viene riservato. In genere, queste istruzioni seguono una DEC.
ciclo: …
DEC %CX
JCX fuori NB: uso questa e non JZ per saltare perché magari tra il
… decremento e la JCX posso fare altre cose che vanno a modificare i

JMP ciclo

A livello di indirizzamento, per i salti condizionati è possibile solo specificare un salto relativo al
corrente valore di %EIP. Quando si programma in Assembler, comunque, ci si scrivono etichette
simboliche, e quindi non vediamo questo aspetto. Il termine displacement può stare su 8, 16, 32
bit, ed è una costante con segno. L’unica eccezione si ha per i salti che hanno CX/ECX come
condizione. In questo caso il termine displacement può stare soltanto su 8 bit. Non si può
usare una costante di dimensioni maggiori (non c’è il codice macchina per farlo). Questo vuol dire
che queste istruzioni possono essere usate per gestire loop piccoli. Se uno ha bisogno di scrivere un
loop di 200 istruzioni, deve scrivere il programma in modo diverso.

Un’ultima osservazione: ci sono diversi salti condizionati che hanno codice mnemonico diverso ma
rappresentano la stessa istruzione in linguaggio macchina. Ad esempio, JE e JZ fanno la stessa
cosa. Infatti, una CMP esegue una sottrazione, ed i due numeri sono uguali se il risultato è nullo, cioè
se il flag ZF è settato. Ci sono diverse coppie di condizioni identiche, che vi potete divertire a
trovare. Nel libro non sono descritte, ma esistono comunque a livello di codice mnemonico, le
versioni negate delle condizioni aritmetiche. Ad esempio, JNL esiste come alias di JGE, etc.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S2
Titolo: Gestione sottoprogrammi
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Istruzioni di controllo e gestione sottoprogrammi:
Gestione sottoprogrammi
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S2
Titolo: Gestione sottoprogrammi
Attività n°: 1

Le istruzioni per la gestione dei sottoprogrammi sono utilizzate per


effettuare un distacco dal flusso sequenziale di esecuzione in atto
(flusso principale), con il vincolo che il nuovo flusso di
esecuzione deve tornare in seguito a reinnestarsi nel flusso
principale, a partire dall’istruzione successiva (istruzione di
rientro) a quella che ha provocato il distacco.

Le istruzioni per la gestione dei sottoprogrammi debbono quindi


prevedere meccanismi per la manipolazione dell’indirizzo
dell’istruzione di rientro.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S2
Titolo: Gestione sottoprogrammi
Attività n°: 1

Nello specifico esistono istruzioni con codice operativo CALL e


istruzioni con codice operativo RET

Le istruzioni con codice operativo CALL salvano nella pila


l’indirizzo dell’istruzione di rientro.

Quelle con codice operativo RET rintracciano nella pila l’indirizzo


dell’istruzione di rientro e lo utilizzano come indirizzo di salto.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S2
Titolo: Gestione sottoprogrammi
Attività n°: 1

E’ quindi possibile predisporre pacchetti di istruzioni, noti come


sottoprogrammi, che prevedono, come ultima istruzione,
un’istruzione RET.

Tali sottoprogrammi godono della seguente proprietà:

una volta che un sottoprogramma è stato chiamato, cioè una


volta che la prima delle sue istruzioni è stata messa in
esecuzione tramite un’istruzione CALL appartenente al
programma principale, il sottoprogramma stesso espleta prima le
azioni previste dalle varie istruzioni che lo costituiscono e poi
ritorna, cioè rimette in esecuzione, grazie all’istruzione RET
finale, l’istruzione di rientro del programma principale.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S2
Titolo: Gestione sottoprogrammi
Attività n°: 1

I sottoprogrammi possono essere utilizzati più volte nel corso


dell’esecuzione del programma principale.

Essi possono essere utilizzati per portare avanti uno stesso tipo
di elaborazione su operandi diversi o per suddividere
logicamente un programma complesso in un programma
principale ed in tanti sottoprogrammi, uno per ogni tipo di
elaborazione concettualmente indipendente.

Grazie all’uso della pila per la memorizzazione e il prelievo


dell’indirizzo dell’istruzione di rientro, è possibile l’annidamento di
sottoprogrammi, cioè è possibile che un sottoprogramma ne
chiami un altro e cosi via (compatibilmente con le dimensioni
della pila).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S2
Titolo: Gestione sottoprogrammi
Attività n°: 1

Scaricare la descrizione delle istruzioni per la gestione dei sottoprogrammi


contenuta nel file sottoprogrammi.pdf
Gestione dei Sottoprogrammi
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange

CALL
FORMATO: CALL %EIP ± $displacement
CALL *extended_register
CALL *memory

AZIONE: Effettua la chiamata di un sottoprogramma. Più precisamente, salva nella pila


corrente il contenuto del registro EIP e poi modifica il contenuto di tale registro in modo del tutto
simile a come fa l’istruzione JMP. In questo momento EIP contiene
l’indirizzo della prossima istruzione
FLAG di cui viene modificato il contenuto: Nessuno.
Le modalità di indirizzamento sono le stesse della JMP. Come nel caso della JMP, di fatto verrà
usata soltanto la prima, sostituita dalla sua versione Assembler che impiega un’etichetta simbolica.

1.1.1 RETURN
FORMATO: RET
AZIONE: Effettua il ritorno da un sottoprogramma. Più precisamente, rimuove un double word
dalla pila e con esso rinnova il contenuto di EIP.
FLAG di cui viene modificato il contenuto: Nessuno.

1.1.2 NO OPERATION
FORMATO: NOP
AZIONE: Termina senza compiere alcuna azione.
FLAG di cui viene modificato il contenuto: Nessuno.

Serve, in sostanza, a buttar via dei cicli di clock. Nel passato, a volte, era utile farlo per rispettare
delle temporizzazioni. Adesso serve a poco.

1.1.3 HALT
FORMATO: HLT
AZIONE: Provoca la cessazione di ogni attività del processore.
Il processore alterna la fase di fetch (in cui preleva un’istruzione) con quella di esecuzione
dell’istruzione che ha prelevato. Quando preleva un’istruzione HLT, smette di fare qualunque cosa,
e si pone in una condizione dalla quale si può uscire solo resettando la macchina.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S3
Titolo: Meccanismi di protezione
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Istruzioni di controllo e gestione sottoprogrammi:
Meccanismi di protezione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S3
Titolo: Meccanismi di protezione
Attività n°: 1

Non tutte le istruzioni descritte possono essere usate sempre.

Ciò avviene per ragioni che saranno chiare dopo aver seguito il
modulo di sistemi operativi, quando si parlerà di protezione.

Il processore può funzionare in due modalità: utente e sistema.

I programmi del sistema operativo girano in modalità sistema, i


programmi che lo studente può scrivere in modalità utente
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S3
Titolo: Meccanismi di protezione
Attività n°: 1

In modalità sistema, i programmi possono utilizzare l’intero set


di istruzioni del linguaggio Assembly.

In modalità utente, non tutte le istruzioni possono essere


usate. In particolare, non si possono usare sono:

• IN e OUT
• HLT

Tali istruzioni sono dette privilegiate, perché possono essere


eseguite solo in modalità sistema
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S3
Titolo: Meccanismi di protezione
Attività n°: 1

Se si prova a scrivere istruzioni IN e OUT in un programma in modalità utente,


parte un’eccezione di protezione, che passa il controllo al sistema operativo.

Windows normalmente ignora quest’eccezione, e quindi il programma va avanti


come se non fossero state scritte.

Se fa qualcosa di sensato (dipende, spesso, da quale porta di I/O si sta


indirizzando), è perché va in esecuzione un sottoprogramma che, in qualche
modo, rimedia facendo altre cose vi fa vedere più o meno lo stesso risultato che
che si avrebbe se le istruzioni fossero state eseguite per davvero.

In ogni caso, non saranno in esecuzione le istruzioni IN o una OUT (ad esempio, il
numero di cicli di clock sarà notevolmente superiore di quello che si può trovare
sui data sheet).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S3
Titolo: Meccanismi di protezione
Attività n°: 1

Se si prova a scrivere una istruzione HLT in modalità utente,


parte un’eccezione di protezione, che normalmente fa terminare
il vostro programma.

Tale istruzione, ovviamente, non inchioda il processore, ma


ripassa il controllo al sistema operativo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S3
Titolo: Meccanismi di protezione
Attività n°: 1

Il motivo per cui certe istruzioni vengono nascoste in modalità


utente è che si potrebbero fare dei danni.

In particolare, un programmatore inesperto potrebbe bloccare il


processore o rendere inconsistente lo stato delle interfacce,
rendendole quindi inutilizzabili dagli altri programmi. Per
accedere a queste, è bene che limitarsi ad usare i servizi che il
sistema operativo mette a disposizione degli utenti.

La mancanza di un’istruzione HLT non è particolarmente grave


(questo è uno dei motivi per cui vi viene nascosta).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29
Titolo: Introduzione
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Programmare in Assembly I:
Introduzione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29
Titolo: Introduzione
Attività n°: 1

Conoscere le istruzioni del linguaggio mnemonico presentate fino


ad ora è necessario ma non sufficiente a scrivere programmi.

In questa e nelle prossime lezioni si farà riferimento ad un ambiente


di sviluppo che il programmatore dal carico di dover pensare ad una
serie di aspetti fastidiosi, quali tenere a mente la lunghezza delle
istruzioni, farsi i conti della lunghezza dei pezzi di codice per
specificare l’indirizzo di destinazione dei salti, etc.

L’utente che scrive in linguaggio Assembly non dovrà


preoccuparsi di una serie di aspetti, quali la lunghezza delle
istruzioni, etc., e potrà riferire locazioni di memoria con nomi
simbolici all’interno del programma.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29
Titolo: Introduzione
Attività n°: 1

Un programma scritto in linguaggio Assembly viene tradotto (si dice


“assemblato”) in codice eseguibile, essenzialmente da un programma che
sostituisce a ciascun codice mnemonico la rappresentazione dell’istruzione in
termini di zeri e uni. Tale programma si chiama, appunto, assemblatore.

In questo corso, si farà riferimento al GAS (GnuAssembler), scaricabile


gratuitamente da internet. Esso può essere utilizzato per scopi didattici ed
utilizzato con licenza GNU.

Nella pagina
http://www2.ing.unipi.it/~a080368/Programmazione/materiale.html (realizzata
dal prof. Stea e non più mantenuta) si possono trovare indicazioni su come
scaricare, installare e cominciare ad utilizzare l’ambiente di sviluppo per GAS
per diversi sistemi operativi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29
Titolo: Introduzione
Attività n°: 1

Nota:

L’ambiente di sviluppo del GAS è molto completo e dotato di vari strumenti sia per
lo sviluppo sia per il debugging del codice.

Durante le lezioni si farà riferimento a come si scrivono i programmi secondo le


convenzioni del GAS e del suo ambiente di sviluppo.

Non essendoci una prova pratica da svolgere al calcolatore durante l’esame, non
saranno approfonditi gli aspetti dell’ambiente di sviluppo. Verranno comunque
fornite le indicazioni minime per scrivere ed eseguire un programma al calcolatore.

Si consiglia lo studente di esercitarsi direttamente sul calcolatore per la scrittura


del codice. Si ricorda, altresì, che durante l’esame, allo studente sarà richiesto di
scrivere su carta un programmino in linguaggio Assembly.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29
Titolo: Introduzione
Attività n°: 1

Un programma in Assembly GAS (scritto bene) è costituito da due


blocchi: una sezione dati ed una sezione codice.

Nella sezione dati ci vanno messe le dichiarazioni di variabile,


cioè i nomi simbolici con i quali verranno riferite le locazioni di
memoria usate.

Nella sezione codice ci vanno messe le istruzioni.

Le righe di GAS possono essere direttive, che servono sia per


l’assemblaggio del programma sia per la dichiarazione di variabili,
oppure istruzioni.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29
Titolo: Introduzione
Attività n°: 1

Le istruzioni, le dichiarazioni di variabile (pseudo istruzioni) e le


direttive occupano ciascuna una riga.

È quindi necessario andare a capo ad ogni riga, compresa


l’ultima.

Il programma deve terminare con un ritorno carrello (altrimenti


non assembla e dà messaggi di errore non sempre facili da
ricondurre alla causa).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29
Titolo: Introduzione
Attività n°: 1

La struttura di un programma Assembly è la seguente:

.GLOBAL _main

.DATA

.TEXT
_main: NOP

RET

Nella prossima attività saranno dettagliati i significati delle righe mostrati


nell’esempio.
Esercizio Assembly N.1
Contare il numero di bit ad uno in una doppia parola (long int su 32 bit)
Questo è esattamente lo stesso programma che scritto a suo tempo in linguaggio mnemonico. In
Assembly, il codice è scritto in questo modo, ed è di gran lunga più semplice.

#conteggio dei bit a 1 in un long Programma in Linguaggio mnemonico

.GLOBAL _main

.DATA 0x00000100
dato: .LONG 0x0F0F0101 0x00000101
conteggio: .BYTE 0x00 0x00000102
0x00000103
.TEXT 0x00000104
_main: NOP …
MOVB $0x00,%CL 0x00000200 MOVB $0x00, %CL
MOVL dato, %EAX 0x00000202 MOVL 0x00000100, %EAX
comp: CMPL $0x00,%EAX 0x00000207 CMPL $0x0000000, %EAX
JE fine 0x0000020A JE %EIP+$0x07
SHRL %EAX 0x0000020C SHRL %EAX
ADCB $0x0, %CL 0x0000020E ADCB $0x00, %CL
JMP comp 0x00000211 JMP %EIP-$0x0C
fine: MOVB %CL, conteggio 0x00000213 MOVB %CL, 0x00000104
RET 0x00000218 …
Commento dettagliato del programma:
dato: .LONG 0x0F0F0101
conteggio: .BYTE 0x00

Dichiarazioni di variabile (direttive).


- La prima è un LONG, cioè uno spazio da 4 locazioni contigue, che contengono (inizialmente) il
numero 0x0F0F0101 secondo le convenzioni note. L’indirizzo della prima locazione è
riferibile nel programma con il nome dato.
- La seconda è un BYTE, cioè uno spazio da 1 locazione, che contiene (inizialmente) il numero
0x00. L’indirizzo di tale locazione è riferibile nel programma con il nome conteggio.

Andando avanti nel programma, si trova:

MOVL dato, %EAX


Questo è un caso di indirizzamento diretto, in cui l’indirizzo della (prima) locazione è stato
sostituito dal nome simbolico.

comp: CMPL $0x00,%EAX


...
JMP comp
In questo caso si assegna all’istruzione CMPL un nome simbolico, che si può riferire dentro la
successive JMP. Questo viene tradotto dall’assemblatore come se fosse un salto relativo (vedere
codice mnemonico a destra). L’aspetto positivo è, ovviamente, che non occorre farsi i conti per
poterlo scrivere.

JE fine

fine: MOVB %CL, conteggio

Stessa cosa di prima. Attenzione ad una sottigliezza. Il nome fine non è stato dichiarato al
momento del suo utilizzo. In Assembler, i nomi possono essere usati prima di essere stati
definiti. Ci pensa l’assemblatore a risolvere il tutto (fa due passate: nella prima controlla che i nomi
riferiti ci siano tutti, nella seconda fa la traduzione vera e propria). Il motivo per cui ciò è necessario
è ovvio: altrimenti non sarebbe possibile scrivere codice con salti in avanti, come quello che c’è in
questo programma. Dall’altra parte, questo consente di scrivere programmi di devastante
incomprensibilità. Ad esempio, nessuno obbliga a mettere tutte le dichiarazioni di variabili
raggruppate in cima, né a mettere la definizione delle costanti prima del loro primo utilizzo, magari
insieme alle dichiarazioni di variabile. Questi stili di programmazione vanno evitati.
Importante
La regola è: prima le dichiarazioni di costante/variabile, tutte insieme, nell’ordine in cui le
accetterebbe un compilatore C++, poi la parte codice.
L’unico caso in cui è lecito (stilisticamente) usare un’etichetta non ancora definita è quello di salto
in avanti nel codice. Non va fatto in nessun altro caso.
È inoltre perfettamente lecito scrivere:
nome1: [\CR]
nome2: KEYWORD operandi # commento [\CR]

Con il che la stessa variabile (o la stessa istruzione) può essere riferita con entrambi i nomi nome1,
nome2 (pessima prassi, peraltro).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S1
Titolo: Descrizione delle direttive principali
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Programmare in Assembly I:
Descrizione delle direttive principali
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S1
Titolo: Descrizione delle direttive principali
Attività n°: 1

Come visto in precedenza, la struttura di un programma Assembly è la


seguente:

.GLOBAL _main

.DATA

.TEXT
_main: NOP

RET
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S1
Titolo: Descrizione delle direttive principali
Attività n°: 1

.GLOBAL _main
Si tratta di una direttiva. Le direttive iniziano con il punto. Questa
dice che il nome simbolico _main è visibile globalmente.

Per come è impostato l’ambiente di programmazione, il


programma che si vuole eseguire va in esecuzione come
sottoprogramma di un programma principale messo in piedi
dall’assemblatore. Per questo motivo, il nome del sottoprogramma
principale del vostro codice è obbligato, uguale a _main, e deve
essere dichiarato globale in cima al programma.

Per lo stesso motivo, l’ultima istruzione che occorre scrivere deve


essere una RET, che ritorna al programma principale (che non è
visibile in quanto inserito dall’assemblatore).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S1
Titolo: Descrizione delle direttive principali
Attività n°: 1

Attenzione

Quanto detto in precedenza relativamente al fatto che un


programma deve cominciare con .global _main e terminare con
RET non è vincolo del linguaggio Assembly.

Si tratta di un vincolo dell’ambiente di sviluppo scelto per lo


sviluppo dei programmi in Assembly.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S1
Titolo: Descrizione delle direttive principali
Attività n°: 1

.DATA, .TEXT
Sono anche queste delle direttive, che stabiliscono che quanto
segue è la sezione dati o codice.

Queste direttive non sono indispensabili, così come non è


indispensabile che una sezione sia scritta prima dell’altra. Usarle
pero garantisce una migliore leggibilità del codice.

Nel seguito, anche se tali direttive saranno omessi, si stabilisce la


convenzione che le dichiarazioni di variabili in si mettono in cima
ed il codice in fondo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S1
Titolo: Descrizione delle direttive principali
Attività n°: 1

Per un motivo non legato al linguaggio, ma al modo in cui è


settato l’ambiente con il quale interagite, conviene che la prima
istruzione sia una NOP.

Infatti, viene inserito dall’ambiente un breakpoint a


quell’istruzione (ciò favorisce il debug), e quindi è assolutamente
consigliabile che si inizi con qualcosa che non fa niente.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S1
Titolo: Descrizione delle direttive principali
Attività n°: 1

Per quanto riguarda le parole chiave del linguaggio


(istruzioni, direttive), l’Assembly è case-insensitive.

Anche i nomi dei registri possono essere scritti


indifferentemente maiuscoli e minuscoli.

I nomi simbolici definiti dall’utente (ad esempio _main) sono


invece case-sensitive.

Un buono stile di programmazione (al quale sarebbe opportuno


che lo studente si attenesse) è quello di scrivere le keyword ed i
registri con lettere maiuscole e tutto il resto in minuscolo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S1
Titolo: Descrizione delle direttive principali
Attività n°: 1

Come struttura generale, una riga di codice Assembly è fatta in questo


modo:
nome: KEYWORD operandi #commento [\CR]

Dove alcuni campi possono mancare.

Il commento deve stare su una singola riga.

Si possono avere
- righe di solo commento
- righe con solo KEYWORD operandi
- righe con solo nome

L’unica cosa che non va scordata è il ritorno carrello a fine riga.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S2
Titolo: Primo esempio di un programma
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Programmare in Assembly I:
Primo esempio di un programma
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S2
Titolo: Primo esempio di un programma
Attività n°: 1

In questo approfondimento, sarà mostrato un primo esempio di


programma Assembly.

Il programma sarà commentato riga per riga.

Si tratta del programma già visto in precedenza che conta il


numero di bit ad uno in una doppia parola (long).

Scaricare il file EsercizioAssembly1.pdf


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S2
Titolo: Primo esempio di un programma
Attività n°: 1

Esercizio

Scrivere un programma che conta il numero di bit a zero. in una doppia


parola (long).

Caricare la soluzione dell’esercizio sull’ePortfolio dello studente.


Esercizio Assembly N.1
Contare il numero di bit ad uno in una doppia parola (long int su 32 bit)
Questo è esattamente lo stesso programma che scritto a suo tempo in linguaggio mnemonico. In
Assembly, il codice è scritto in questo modo, ed è di gran lunga più semplice.

#conteggio dei bit a 1 in un long Programma in Linguaggio mnemonico

.GLOBAL _main

.DATA 0x00000100
dato: .LONG 0x0F0F0101 0x00000101
conteggio: .BYTE 0x00 0x00000102
0x00000103
.TEXT 0x00000104
_main: NOP …
MOVB $0x00,%CL 0x00000200 MOVB $0x00, %CL
MOVL dato, %EAX 0x00000202 MOVL 0x00000100, %EAX
comp: CMPL $0x00,%EAX 0x00000207 CMPL $0x0000000, %EAX
JE fine 0x0000020A JE %EIP+$0x07
SHRL %EAX 0x0000020C SHRL %EAX
ADCB $0x0, %CL 0x0000020E ADCB $0x00, %CL
JMP comp 0x00000211 JMP %EIP-$0x0C
fine: MOVB %CL, conteggio 0x00000213 MOVB %CL, 0x00000104
RET 0x00000218 …
Commento dettagliato del programma:
dato: .LONG 0x0F0F0101
conteggio: .BYTE 0x00

Dichiarazioni di variabile (direttive).


- La prima è un LONG, cioè uno spazio da 4 locazioni contigue, che contengono (inizialmente) il
numero 0x0F0F0101 secondo le convenzioni note. L’indirizzo della prima locazione è
riferibile nel programma con il nome dato.
- La seconda è un BYTE, cioè uno spazio da 1 locazione, che contiene (inizialmente) il numero
0x00. L’indirizzo di tale locazione è riferibile nel programma con il nome conteggio.

Andando avanti nel programma, si trova:

MOVL dato, %EAX


Questo è un caso di indirizzamento diretto, in cui l’indirizzo della (prima) locazione è stato
sostituito dal nome simbolico.

comp: CMPL $0x00,%EAX


...
JMP comp
In questo caso si assegna all’istruzione CMPL un nome simbolico, che si può riferire dentro la
successive JMP. Questo viene tradotto dall’assemblatore come se fosse un salto relativo (vedere
codice mnemonico a destra). L’aspetto positivo è, ovviamente, che non occorre farsi i conti per
poterlo scrivere.

JE fine

fine: MOVB %CL, conteggio

Stessa cosa di prima. Attenzione ad una sottigliezza. Il nome fine non è stato dichiarato al
momento del suo utilizzo. In Assembler, i nomi possono essere usati prima di essere stati
definiti. Ci pensa l’assemblatore a risolvere il tutto (fa due passate: nella prima controlla che i nomi
riferiti ci siano tutti, nella seconda fa la traduzione vera e propria). Il motivo per cui ciò è necessario
è ovvio: altrimenti non sarebbe possibile scrivere codice con salti in avanti, come quello che c’è in
questo programma. Dall’altra parte, questo consente di scrivere programmi di devastante
incomprensibilità. Ad esempio, nessuno obbliga a mettere tutte le dichiarazioni di variabili
raggruppate in cima, né a mettere la definizione delle costanti prima del loro primo utilizzo, magari
insieme alle dichiarazioni di variabile. Questi stili di programmazione vanno evitati.
Importante
La regola è: prima le dichiarazioni di costante/variabile, tutte insieme, nell’ordine in cui le
accetterebbe un compilatore C++, poi la parte codice.
L’unico caso in cui è lecito (stilisticamente) usare un’etichetta non ancora definita è quello di salto
in avanti nel codice. Non va fatto in nessun altro caso.
È inoltre perfettamente lecito scrivere:
nome1: [\CR]
nome2: KEYWORD operandi # commento [\CR]

Con il che la stessa variabile (o la stessa istruzione) può essere riferita con entrambi i nomi nome1,
nome2 (pessima prassi, peraltro).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S3
Titolo: Programmare in Assembly I
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Programmare in Assembly I:
Esempi di domande di esame
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S3
Titolo: Programmare in Assembly I
Attività n°: 1

Anche se nelle precedenti lezioni l’ultima attività non conteneva


esempi di domande di esame, non significa che esse non
vadano studiate e lette con attenzione.

E’ chiaro che non sarà richiesto ogni minimo dettaglio delle


istruzioni del linguaggio mnemonico mostrato (descrizioni che
valgono anche per l’Assembly GAS).

Lo studente in sede di esame dovrà essere in grado di scrivere


dei programmi Assembly simili a quelli che saranno mostrati
durante le attività delle prossime lezioni. Alcune semplici
domande potranno anche essere fatte su alcune istruzioni. Se
ne mostrano di seguito alcuni esempi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S3
Titolo: Programmare in Assembly I
Attività n°: 1

Esempi di domane di esame

Descrivere il tipico utilizzo congiunto delle istruzioni CMP e Jcon. Fornire un


semplice esempio descrittivo.

A cosa servono le istruzioni CALL e RET?

Se si considera l’operando destinatario di una SHL (shift logical left) come un


numero naturale, l’istruzione a che tipo di operazione corrisponde?

Quale è la differenza sostanziale fra le operazione di SHIFT e di ROTATE.

Per quali tipi di operazioni aritmetiche esistono due tipi di istruzioni diverse se gli
operandi sono interi o naturali? Perché?
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S3
Titolo: Programmare in Assembly I
Attività n°: 1

Esempi di domane di esame

Nella istruzione ADD come viene modificato il valore di dei FLAG CF e OF e che
significato assumono?

Quali sono i FLAG modificati dall’istruzione SUB?

Quando si scrive un programma in Assembly GAS, che tipo di convenzione si


utilizza per scrivere le varie sezioni di cui esso è formato?

Discutere la direttiva .GLOBAL _main.

Nota importante: se nel test dell’esame ci saranno domande teoriche


sull’assembler, non sarà possibile usare le dispense che descrivono le varie
istruzioni.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S3
Titolo: Programmare in Assembly I
Attività n°: 1

Si richiede allo studente di risolvere l’esercizio precedente e caricarlo sulla


proprio ePortfolio.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30
Titolo: Direttive per la dichiarazione di variabili
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Programmare in Assembly II:
Direttive per la dichiarazione di variabili
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30
Titolo: Direttive per la dichiarazione di variabili
Attività n°: 1

Tutte le direttive che possono essere utilizzate all’interno di un


programma scritto in Assembly GAS hanno la seguente forma:

.KEYWORD operandi

Il punto iniziale le caratterizza appunto come direttive,


distinguendole sintatticamente dalle istruzioni.

Gli operandi cambiano (in numero e significato) a seconda del nome


della direttiva.

Le direttive di maggior utilizzo sono quelle, in parte già viste, per la


dichiarazione di variabili.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30
Titolo: Direttive per la dichiarazione di variabili
Attività n°: 1

Dichiarazioni di variabili

Le dichiarazioni di variabile avvengono riservando zone di


memoria di grandezza opportuna, alle quali possono
essere associati nomi simbolici.

Le direttive per dichiarare variabili (a volte chiamate


pseudoistruzioni) sono le seguenti:

.BYTE: riserva 1 byte


.WORD: riserva 2 byte
.LONG: riserva 4 byte
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30
Titolo: Direttive per la dichiarazione di variabili
Attività n°: 1

Volendo si può aggiungere un’inizializzazione alla variabile (zero è il valore di


default), inserendo un’opportuna espressione, calcolabile in termini di costanti.

Con questa tecnica, si possono dichiarare variabili scalari e vettoriali (cioè a più
componenti).

Di seguito si mostrano degli esempi:

var0: .WORD # scalare, 2 byte, valore 0x0000


var1: .BYTE 0x30 # scalare, 1 byte, valore 0x30
var2: .BYTE 0x30, 0x31 # vett., 2 componenti da 1 byte
var3: .WORD 0x1020, 0x32AB # vett., 2 componenti da 2 byte
var4: .LONG var3+2 # scalare, 4 byte
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30
Titolo: Direttive per la dichiarazione di variabili
Attività n°: 1

La tabella di seguito illustra cosa succede in memoria in seguito alla scrittura


delle direttive mostrate prima (eccetto per la direttiva relativa a var4)
Indirizzo Valore Descrizione
0x00000001 0x00 Byte meno significativo di var0
0x0000002 0x00 Byte più significativo di var0
0x00000003 0x30 var1
0x00000004 0x30 Prima componente di var2
0x00000005 0x31 Seconda componente di var2
0x00000006 0x20 Byte meno significativo della prima
componente di var3
0x00000007 0x10 Byte più significativo della prima
componente di var3
0x00000008 0xAB Byte meno significativo della seconda
componente di var3
0x00000009 0x32 Byte più significativo della seconda
componente di var3
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30
Titolo: Direttive per la dichiarazione di variabili
Attività n°: 1

Per quanto riguarda var4, quello che succede in memoria segue nella tabella
mostrata qui sotto:
Indirizzo Valore Descrizione
0x0000000A 0x08 Byte meno significativo di var4
0x0000000B 0x00 Secondo Byte di var4
0x0000000C 0x00 Terzo Byte più significativo di var4

0x0000000D 0x00 Byte più significativo di var4

Il valore di var4 è l’indirizzo (del byte meno significativo) della


2° componente di var3.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30
Titolo: Direttive per la dichiarazione di variabili
Attività n°: 1

Direttiva più pratiche per dichiarare variabili vettoriali sono le


seguenti:

.FILL numero, dim, espressione

Dichiara numero variabili di dimensione dim byte e le inizializza


ad espressione (se manca espressione viene assunto 0 come
default). dimpuò essere 1 (byte), 2 (word), 4 (long).

.SPACE numero, espressione

È identica a:
.FILL numero, 1, espressione
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30
Titolo: Direttive per la dichiarazione di variabili
Attività n°: 1

Le variabili di tipo byte possono essere inizializzate anche con la codifica ASCII di un
carattere, estesa su 8 bit con uno zero in testa. Si noti che la codifica ASCII è su 7 bit,
non su 8. La seguente dichiarazione è pertanto lecita:

var5: .BYTE ‘C’, ‘i’, ‘a’, ‘o’ # vett., 4 comp. da 1 byte

ed identica a:
var5: .BYTE 0x43, 0x69, 0x61, 0x6F # vett., 4 comp. da 1 byte

Per dichiarare vettori di byte inizializzati con codifiche ASCII fa comodo poter scrivere
diversamente:
var6: .ASCII “messaggio” # vett., 9 comp. da 1 byte
var7: .ASCIZ “messaggio” # vett., 10 comp. da 1 byte

L’ultima inserisce anche il carattere NUL (\0) in coda.

Per indicare i caratteri speciali (ritorno carrello, tabulazione, etc.) si usano le stesse
sequenze di escape che si usano in C++.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30
Titolo: Direttive per la dichiarazione di variabili
Attività n°: 1

Attenzione:

Variabili dichiarate una di seguito all’altra nella sezione


dati sono consecutive in memoria.

È piuttosto pericoloso (e concettualmente sbagliato) scrivere


pezzi di codice che sfruttano tale contiguità per (presunti)
scopi di efficienza.

Scrivere cioè un programma in cui si fa conto che


var0+2=var1, e quindi se uso un puntatore e lo incremento
opportunamente posso riferire entrambe, porta a scrivere
programmi incomprensibili e non mantenibili.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30
Titolo: Direttive per la dichiarazione di variabili
Attività n°: 1

Seconda Attenzione

Pur non essendo (in teoria) obbligatorio inizializzare variabili


.BYTE, .WORD, .LONG, in più di un caso sono stati verificati
comportamenti anomali a causa di variabili non inizializzate.

La prassi a cui attenersi è la seguente:

• se si usano variabili .BYTE, .WORD, .LONG, inserire sempre


un’inizializzazione esplicita

• se non si vuole inizializzare una variabile, usare .FILL.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S1
Titolo: Altre direttive e costanti
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Programmare in Assembly II:
Altre direttive e costanti
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S1
Titolo: Altre direttive e costanti
Attività n°: 1

Oltre alle direttiva già viste, ne vengono di seguito introdotte altre


che risultano molto utili per la scrittura di programmi in Assembly

.INCLUDE “path”

Serve ad includere un file sorgente nel presente file.

A seguito dell’inclusione, l’assemblatore assembla un file unico


contenente il codice di entrambi.

Questa direttiva si mette, in genere, in cima o in fondo.

È irrilevante, visto che non è necessario definire qualcosa prima di


usarlo, come già visto.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S1
Titolo: Altre direttive e costanti
Attività n°: 1

SET nome, espressione


Serve a creare costanti simboliche da usare nel programma. Tali costanti hanno
il nome nome ed il valore espressione. Ad esempio, si può scrivere:

.SET dimensione, 4
.SET n_iter, (100*dimensione)

MOV $n_iter, %CX # il primo operando è immediato, ci vuole ‘$’

Le espressioni dopo la virgola devono essere calcolabili al tempo di


assemblaggio. Pertanto possono contenere valori costanti e/o indirizzi di memoria
(non, ovviamente, contenuti di locazioni di memoria o di registri).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S1
Titolo: Altre direttive e costanti
Attività n°: 1

Esempio: visto che le locazioni di memoria che uso sono contigue, potrebbe essere
comodo conoscere ed usare la dimensione della memoria occupata dai dati
all’interno di un programma. In genere lo si fa dichiarando una variabile finta in
fondo da 1 byte. Gli indirizzi della prima ed ultima variabile vengono usati per
calcolare l’occupazione di memoria tramite una direttiva .SET.

dato1: .FILL 1024, 4


dato2: .FILL 100, 2

datoN: .FILL 350, 2
foo: .BYTE 1
.SET occupazione, (foo-dato1) # dim. memoria occupata, ottenuta come
differenza fra indirizzi

MOV $occupazione, %ECX

Le costanti simboliche servono a dare miglior leggibilità al programma. È bene


metterle dentro una sezione dati.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S1
Titolo: Altre direttive e costanti
Attività n°: 1

In Assembly la sintassi delle costanti numeriche segue quella


dei compilatori C/C++, con qualche differenza sostanziale:

• costanti naturali: non hanno segno, e vengono convertite


nella loro rappresentazione in base 2.

• costanti intere: hanno un segno davanti (+ o -), e vengono


convertite nella loro rappresentazione in C2 sul numero di bit
opportuno.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S1
Titolo: Altre direttive e costanti
Attività n°: 1

I numeri possono essere scritti in base 2, 8, 10, 16.

• in base 2 devono essere preceduti da 0b,

• in base 8 devono cominciare per 0,

• in base 10 non devono cominciare per 0,

• in base 16 devono essere preceduti da 0x.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S1
Titolo: Altre direttive e costanti
Attività n°: 1

Attenzione

Quando le costanti numeriche non sono della dimensione giusta,


vengono troncate (se troppo lunghe, ed in genere l’assemblatore lo
dice), oppure estese (e normalmente l’assemblatore non lo dice).

Quando vengono estese, la loro estensione è diversa a seconda


che siano naturali o interi.

Se sono naturali, vengono estese mettendo zeri in testa. Se sono


intere, vengono estese ripetendo il bit più significativo
(coerentemente con la rappresentazione in C2).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S2
Titolo: Uso dell’ambiente di sviluppo
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Programmare in Assembly II:
Uso dell’ambiente di sviluppo
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S2
Titolo: Uso dell’ambiente di sviluppo
Attività n°: 1

A questo punto lo studente dovrebbe aver scaricato ed installato


l’ambiente di sviluppo per l’Assembly GAS.

Nel cartella c:/work (si consiglia di non toccare nulla e di non


cambiare percorsi di file) che appare dopo l’installazione sotto
Windows (per altre piattaforme seguire le istruzioni fornite da alcuni
studenti sulla pagina del prof. Stea) ci sono le icone degli alias
assemble&link e debug.

Un programma in Assembly deve essere scritto in un file con


estensione “.s” (attenzione: non “.s.txt”).

Esso contiene caratteri ASCII (può essere usato un qualunque


editor di testi).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S2
Titolo: Uso dell’ambiente di sviluppo
Attività n°: 1

Lavorando nella directory C:/WORK è pertanto possibile:

i) editare e modificare un file sorgente utilizzando gli editor


standard di Windows;

ii) produrre un file eseguibile spostando l’icona di un file sorgente


contenete codice assembly sull’icona dell’alias assemble&link;

iii) mettere in esecuzione il file cliccando sulla icona del file


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S2
Titolo: Uso dell’ambiente di sviluppo
Attività n°: 1

L’output dell’assemblatore è duplice:

• un file eseguibile (con lo stesso nome del file sorgente, ma estensione .exe)

• un file listato.txt, che contiene: il codice Assembly (a destra) e la sua traduzione


in linguaggio macchina (a sinistra);

Inoltre, se ci sono stati degli errori, alcune informazioni su dove possono essere.
Ad esempio, in fondo al listato, c’è la lista dei simboli non definiti.

Ad ogni buon conto, l’assemblatore stampa dei messaggi a video che danno conto
degli errori. Visto che questi sono associati alle linee dove si verificano, è comodo
disporre di un editor di testi con i numeri di riga per editare i file (esempio
notepad++).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S2
Titolo: Uso dell’ambiente di sviluppo
Attività n°: 1

Attenzione

Si potrebbe anche far partire il debug del programma utilizzando il debugger


GDB contenuto nel pacchetto.

Visto che tale strumento è molto ostico, in questo corso non sarà discusso.

Per completezza, si fornisce allo studente una piccola dispensa che descrive
l’uso di tale strumento (file debugger.pdf).

Un’utile alternativa per programmi semplici come quelli che saranno visti durante
il corso è quella di strumentare il codice, inserendo quindi opportune istruzioni
il cui solo scopo è favorire il debugging.
Comandi del debugger GDB
Prof. Giovanni Stea (Università di Pisa)
Comando list source
Sintassi: l[ist] enne
Azione: Mostra uno spezzone del file sorgente di alcune righe intorno alla riga enne. Se enne è
omesso, mostra la parte di file sorgente intorno alla linea che sta per eseguire.
Sintassi: l[ist] prima, ultima
Azione: Mostra le righe del file sorgente tra prima e ultima.
Sintassi: l[ist] nome
Azione: Mostra le righe del file sorgente intorno all’etichetta nome.

Comando disassemble source


Sintassi: disassemble etichetta [ind1, ind2]
Azione: mostra il disassemblato a partire dall’etichetta specificata fino alla successiva. Si possono
anche specificare due indirizzi di memoria di inizio e fine.

Comando insert breakpoint


Sintassi: b[reak] linea
Azione: Inserisce un breakpoint prima di un’istruzione e vi associa un numero d’ordine. Si
possono indicare istruzioni:
a) specificandone l’etichetta, cioè il nome simbolico;
b) specificandone il numero di linea, come appare dall’output del comando list.
Un breakpoint è inserito automaticamente all’etichetta _main (viene inserito quando si trascina
l’eseguibile sull’icona del debugger), in modo tale che il programma si ferma all’inizio.

Comando info breakpoints


Sintassi: i[nfo] b[reak]
Azione: Mostra i breakpoint inseriti; per ogni breakpoint viene indicato il numero d’ordine ed il
numero di linea che ha l’istruzione corrispondente nel file listato.

Comando delete breakpoint


Sintassi: del[ete] enne
Azione: Rimuove il breakpoint avente il numero d’ordine enne (attenzione, non il numero di linea).
Se si omette il parametro vengono rimossi tutti i breakpoint, compreso quello su _main.

Comando run
Sintassi: r[un]
Azione: Mette in esecuzione il programma dall’inizio. Per come è impostato l’ambiente, il comando
è dato automaticamente quando il file eseguibile viene trascinato sull’icona.

Comando step
Sintassi: s[tep] enne
Azione: Mette in esecuzione le enne istruzioni successive a quella eseguita per ultima. Se si
incontra una chiamata di sottoprogramma quando mancano emme istruzioni ad enne, si entra nel
sottoprogramma e si svolgono emme istruzioni del medesimo. Omettere enne equivale a
specificarlo pari a 1.

Comando next
Sintassi: n[ext] enne
Azione: Identico al precedente, ma considera un intero sottoprogramma come una sola istruzione
(detto altrimenti, non entra nei sottoprogrammi).

Comando continue
Sintassi: c[ontinue]
Azione: Mette in esecuzione il programma a partire dall’istruzione successiva a quella eseguita per
ultima, fino al successivo breakpoint.

Comando quit
Sintassi: q[uit]
Azione: Provoca la terminazione del debugger ed il ritorno al sistema operativo Windows.

Comando info registers


Sintassi: i[nfo] r[egisters] [nome]
Azione: Mostra il contenuto dei registri. Si vedono anche registri che normalmente non usiamo
(registri selettore). Se ci metto il nome, vedo solo il registro che mi interessa. Attenzione: si vedono
solo i registri a 32 bit (non posso dirgli di stampare CL). I nomi dei registri vanno scritti minuscoli,
e senza il segno % prima. Può essere invece preceduto dal simbolo ‘$’

Comando info all registers


Sintassi: i[nfo] all-reg
Azione: Mostra il contenuto di tutti i registri, compresi quelli della FPU.

Comando info floating-point unit


Sintassi: i[nfo] float
Azione: Mostra il contenuto della FPU.

Comando print
Sintassi: p [/formato] espressione
Azione: Mostra il contenuto dell’espressione indicata. Tale espressione può contenere qualunque
cosa sia valutabile, compreso il contenuto di registri. Il nome di un registro deve essere minuscolo,
e preceduto dal carattere $.
Il formato è uno dei seguenti:
- d: decimal
- u: unsigned decimal
- x: hex

- t: binary (“t” come “two”)


- s: string
- c: character
- f: float
e per default vale hex, inizialmente. Il default viene modificato ad ogni nuova specifica di formato.
Ad esempio, se voglio conoscere il valore di EAX in binario, scrivo
(gdb) p /t $eax

Posso anche scrivere cose più complesse, tipo:


(gdb) p /x $eax-2+$ebx

Ancorché si possa utilizzare un nome di variabile nelle espressioni, si consiglia di non farlo. Il
comando print infatti non prevede la possibilità di specificare il numero di byte di memoria che
verranno considerati a partire dall’indirizzo specificato. Se si vuole vedere cosa è contenuto in
memoria, conviene utilizzare il seguente comando.
Comando examine memory
Sintassi: x/NFL indirizzo
Azione: visualizza il contenuto della memoria a partire da indirizzo. Gli altri tre parametri (che
devono essere scritti attaccati a x/) sono:
- N: un numero, pari al numero di oggetti di tipo L da visualizzare
- F: il formato, con le specifiche di cui sopra

- L: byte (b) word (h), doubleword (w), giant (g, 8 byte).


Azione: Visualizza il valore della variabile indicata. Il parametro numero indica quante componenti
della variabile si intendono esaminare; il parametro tipo indica il tipo della variabile (nessun spazio
va inserito tra i due parametri). Le indicazioni di tipo, sfortunatamente contraddittorie rispetto a
quelle del linguaggio Assembler, sono: b per il tipo byte, h per il tipo word e w per il tipo long (h
sta per “half word”, considerando una word come 32 bit). Per vedere i numeri reali in doppia
precisione (che occupano 8 byte in memoria) è necessario il formato giant (g) . Omettere il
parametro numero equivale a specificarlo pari a 1; omettere il parametro tipo equivale a specificarlo
pari a w. Omettere entrambi i parametri può provocare azioni contraddittorie. In accordo con quanto
scritto sopra, deve essere specificato l’indirizzo della variabile secondo la notazione C++, cioè
premettendo il simbolo &.
Esempi:
x/1tw &dato
x/1db &conteggio

Comando set variable


Sintassi: set (variable = value)
Azione: imposta una variabile al valore specificato. Deve essere specificato il nome della variabile.

Per debuggare un programma bisogna portare l’eseguibile sopra l’icona del debugger. Si apre la
shell del GDB, alla quale vanno dati i comandi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S3
Titolo: Esercizio in Assembly
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Programmare in Assembly II:
Esercizio in Assembly
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S3
Titolo: Esercizio in Assembly
Attività n°: 1

Prima di tutto si chiede allo studente di copiare in un file di testo il


programma che conta il numero di bit ad 1 e farlo assemblare ed
eseguire.

A questo punto, non siamo ancora in grado di vedere a video gli


output dei programmi. Nelle prossime lezioni saranno mostrati dei
comandi (che in realtà sono sotto programmi) che permettono l’input
e l’output dei dati.

A tale riguardo, si pone una prima domanda di esame:

Come mai non si possono usare le istruzioni IN ed OUT?


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S3
Titolo: Esercizio in Assembly
Attività n°: 1

Scrivere un programma che:

1. Legga una stringa di memoria lunga un numero arbitrario di


caratteri (ma terminata da \0), inserita in un buffer di memoria
di indirizzo noto

2. Conti le volte che appare il carattere specificato dentro


un’altra locazione di memoria.

3. Metta il risultato in una terza locazione di memoria.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S3
Titolo: Esercizio in Assembly
Attività n°: 1

Lo studente può scaricare la soluzione dell’esercizio contenuta nel file


EsercizioAssembly2.pdf

Si consiglia lo studente di provare a scrivere lui il programma ed


assemblarlo.

Successivamente dovrebbe sforzarsi a comprendere cosa fa il codice


fornito, cercando di capire passo passo l’algoritmo utilizzato.

In sede di esame sarà richiesto di risolvere esercizi simili a quelli


mostrati nelle lezioni.
#conteggio del numero di occorrenze di una lettera in una stringa

.GLOBAL _main

.DATA
stringa: .ASCIZ "Questa e' la stringa di caratteri ASCII che usiamo
come esempio"

lettera: .BYTE 'e'


conteggio: .BYTE 0x00

.TEXT
_main: NOP
MOV $0x00, %CL
LEA stringa, %ESI
MOV lettera, %AL Fondamentale: che succede se ci si dimentica la B nella
comp: CMPB $0x00, (%ESI) CMPB?
JE fine Succede che l’assemblatore non segnala niente, e ci
CMP (%ESI),%AL mette una L (vedere il disassemblato per rendersene
JNE poi conto). In questo modo il programma non funziona
INC %CL (infatti, prende sempre una lettera in più, perché va
poi: INC %ESI oltre nella locazione successiva lettera.
JMP comp
fine: MOV %CL, conteggio
RET

Variazione sul tema per l’indirizzamento (uso di displacement + registro di modifica):


MOV $0, %ESI
MOV lettera, %AL
comp: CMPB $0x00, stringa(%ESI)
JE fine
CMP stringa(%ESI),%AL
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Controllo del flusso di programma in Assembly:
Traduzione del costrutto if..the..else e dei cicli
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1

Il linguaggio Assembly non ha costrutti di controllo di flusso di alto


livello come il C/C++ (cicli, o if…then…else).

Le uniche istruzioni di controllo che possono essere usate (a parte


quelle per le chiamate di sottoprogramma, che non servono a
questo scopo) sono salti e salti condizionati.

Pertanto, sia i costrutti condizionali if…then…else che i cicli vanno


scritti in termini di queste istruzioni.

In questa lezione, si mostrerà come si “traducono” in linguaggio


Assembly alcuni dei più importanti costrutti per il controllo del
flusso di programma del C/C++.
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1

Costrutto if..then..else (i)

Se si vuole scrivere una porzione di codice come:

if (%AX<variabile) // interpretati come contenitori di naturali


{ist1; …; istN;}
else
{istN+1; …; istN+M;}
ist_nuova;

Invece dell’if, in Assembly si può possono utilizzare i costrutti


CMP+JCond:

CMP variabile, %AX


JB label # JB consistente con i naturali
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1

Costrutto if..then..else (ii)


I rami then ed else possono essere trattati come segue:
CMP variabile, %AX
JB ramothen # JB consistente con i naturali
Ramoelse:istN+1

istN+M
jmp segue
Ramothen:ist1

istN
segue: ist_nuova

In sostanza, si confronta il contenuto di variabile con il contenuto di AX con la


CMP. Poi con la JB si salta all’etichetta del ramoelse se il contenuto di AX è
minore del contenuto di variabile. Altrimenti, il programma procede direttamente
sul ramoelse e poi salta all’etichetta segue
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1

Costrutto if..then..else(iii)

In alternativa si può anche scrivere:

CMP variabile, %AX


JAE ramoelse # JAE consistente con i naturali ed
#effettua il salto se il contenuto #di AX
maggiore
#o uguale al contenuto di variabile
ramothen: ist1

istN
JMP segue
ramoelse: istN+1
...
istN+M
segue: ist_nuova
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1

Ciclo for (i)

Un qualunque ciclo può essere tradotto in un IF


(CMP+JCond) + salto a un’etichetta.

Di norma, per scrivere cicli in Assembly si usa


incrementare/decrementare il registro CX (ECX, CL) o i
registri EDI, ESI (questi ultimi, infatti, vengono utilizzati per
l’accesso in memoria con registro puntatore, quindi fa
comodo poterli usare nei cicli per indirizzare vettori di
variabili).
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1

Ciclo for (ii)


Si supponga di avere il seguente spezzone di codice:
for (int i=0; i<var; i++) // dove ”var” è una variabile o costante
{ist1; ...; istN}

In Assembly si può usare CX come contatore e scrivere:


MOV $0, %CX
ciclo: CMP var, %CX # var è stata già inizializzata
JE fuori
ist1
...
istN
INC %CX
JMP ciclo
fuori: …
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1

Ciclo do…while

Si supponga di avere il seguente spezzone di codice:


do
{ist1; ...; istN;}
while (AX<var);

In questo caso il test della condizione è in fondo al ciclo, quindi


Assembly si può tradurre così:

ciclo: ist1;

istN;
CMP var, %AX
JB ciclo
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1

Alcuni spunti:

Come si realizza il ciclo while?

Come si realizza in ciclo for in cui c’è un decremento nella


condizione?
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31/S1
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Controllo del flusso di programma in Assembly:
Uso del costrutto Loop
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31/S1
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1

Una variazione sul tema per il controllo del flusso è data dalle possibilità
dell’istruzione LOOP.

L’istruzione macchina ha come unico operando un indirizzo (che in


Assembly può essere sostituito da un’etichetta specificata in modo
simbolico).

Si mostra di seguito un esempio:

MOV $5, %CX


ciclo: ist1
istN;
LOOP ciclo
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31/S1
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1

L’istruzione LOOP fa quanto segue:

• decrementa CX

• non tocca i flag (come farebbe una normale istruzione DEC


%CX)

• se (dopo il decremento) CX!=0, salta all’etichetta

• altrimenti continua
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31/S1
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1

Quindi, quando si una LOOP, CX va inizializzato prima del ciclo al


numero di iterazioni desiderate.

Una prassi a cui attenersi rigorosamente è quella di non toccare CX


durante il ciclo, altrimenti si scrivono programmi che non si capisce
cosa facciano.

Non è strettamente necessario usare questo tipo di istruzioni (possono


essere infatti sostituite da salti e decrementi senza alcun problema).

L’utilizzo più interessante è quello come sostituto del for, quando:


• si conosce esattamente il numero di iterazioni da svolgere,

• non è necessario usare il contatore del for (che in questo caso


sarebbe CX), o lo si usa in modo discendente.
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31/S1
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1

Esempi di utilizzo di LOOP: caso in cui va bene usarlo


Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31/S1
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1

Esempi di utilizzo di LOOP: caso in cui va bene meno bene usarlo


Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31/S2
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Controllo del flusso di programma in Assembly:
Esercizi
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31/S2
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1

Si scriva un programma che calcola il fattoriale di un numero naturale


(da 1 a 9) contenuto nella variabile numero, di tipo byte.

Il risultato deve essere inserito in una variabile risultato, di dimensione


opportuna (attenzione a capire prodotto finale su quanti bit sta)

Si controlli che dato non ecceda 9.

Prestare attenzione al dimensionamento della moltiplicazione.

Nella prossima slide si trova la soluzione.


Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31/S2
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1

GLOBAL _main

.DATA
numero: .BYTE 9
risultato: .LONG 1

.TEXT
_main: NOP
MOV $0, %ECX
MOV $1, %EAX
MOV numero, %CL #attezione è la parte bassa di ECX
CMP $9, %CL
JA fine
CMP $1, %CL
JBE fine
ciclo_f: MUL %ECX #usa %EAX come moltiplicando e destinatario
DEC %CL # anche LOOP ciclo_f
JNZ ciclo_f
fine: MOV %EAX, risultato
RET
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 32
#lezione#
Titolo: Sottoprogrammi e passaggi di parametri
#titolo#
Attività n°: 1
#attività#

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Sottoprogrammi e passaggi di parametri:
passaggio di parametri e valori restituiti
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1

Nelle precedenti lezioni sono state presentate le istruzioni per la gestione di


sottoprogrammi, CALL e RET.

Un sottoprogramma, generalmente, opera su dei parametri.

Visto che la CALL e la RET non prevedono il passaggio di parametri alla


chiamata, né la restituzione di un valore al ritorno da sottoprogramma, è
necessario che il programmatore stabilisca una convenzione tra
sottoprogramma chiamante e chiamato per gestire questi aspetti.

Ci sono, sostanzialmente due modi di gestire i parametri (si parla


genericamente di “parametri”, includendo in essi il valore restituito del
sottoprogramma):

• usare variabili (i.e. locazioni di memoria) condivise


• usare i registri
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1

Ovviamente, le due modalità possono essere usate


contemporaneamente.

Si ricorda che sia i registri sia le locazioni di memoria possono contenere


indirizzi, quindi è possibile usare sia locazioni di memoria che registri
per passare indirizzi ad altre zone di memoria.

• In Assembly non esiste il concetto di variabile locale ad un


sottoprogramma.

• Tutte le variabili (cioè la memoria indirizzabile) sono globali.

• Non esistono regole di scopo.

• La memoria è accessibile da qualunque sottoprogramma, in


qualunque punto.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1

Quando qualcuno scrive un sottoprogramma, deve specificare (con dei


commenti) quali sono i parametri che il sottoprogramma richiede, dove
vuole che trovarli, come restituirà un valore al programma chiamante e
cosa questo significhi.

Esempio:
MOV …, %AX # preparazione dei parametri
MOV …, %EBX # per la chiamata di sottoprogramma
CALL sottoprg
MOV %CX, var # utilizzo del valore di ritorno

# sottoprogramma “sottoprog”, [descrizione]


# ingresso: %AX, [descrizione]
# %EBX, [descrizione]
# uscita: %CX, [descrizione]

sottoprg: …

MOV $..., %CX # preparazione del valore di ritorno
RET
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1

Nell’esempio precedente, il programma chiamante prepara i parametri nei


registri AX ed EBX, richiama il sotto programma e si aspetta che questo gli
restituisca un valore in CX.

Il sottoprogramma chiamato utilizza i valori presenti in AX ed EBX e quindi


copia il risultato in CX in modo che sia restituito al chiamante. Termina
quindi con la RET che estrae dallo stack l’indirizzo dell’istruzione da cui il
chiamante continuerà ad eseguire.

Fondamentale: un sottoprogramma dovrà fare dei conti. Per farli utilizzerà,


in generale, dei registri del processore (difficilmente potrà farne a meno).
A meno che questi registri non siano dichiarati come contenitori di
parametri di ritorno, non devono essere modificati dal
sottoprogramma.

Nella prossima slide si mostra lo schema da utilizzare per la scrittura di un


sottoprogramma
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1

sottoprg: PUSH … # registro1 usato dal sottoprogramma


PUSH … # registro2 usato dal sottoprogramma

MOV $..., %CX # preparazione del valore di ritorno

POP … # registro2 usato dal sottoprogramma


POP … # registro1 usato dal sottoprogramma
RET

Fondamentale: chi scrive un programma si aspetta che dopo la CALL il contenuto


dei registri non interessati da valori di ritorno del sottoprogramma rimanga
inalterato.

Ci deve pensare il programmatore, ed il modo per pensarci è salvare i registri in


pila e ripescarli.

L’unico registro che fa eccezione è quello dei flag, che si assume che possa
cambiare.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1

Attenti ai registri da salvare: non sempre si vedono scorrendo il


sottoprogramma. Per esempio, se si fa una MUL o una DIV si può finire a sporcare
anche DX o EDX (perché un risultato o un dividendo a 32/64 bit viene messo lì).
Magari uno non scrive direttamente DX come destinatario nel sottoprogramma,
ma nel frattempo l’ha sporcato.

Attenzione: per ogni PUSH ci deve essere una POP (e viceversa), altrimenti il
programma va in crash. Infatti, alla RET l’indirizzo di ritorno viene ripescato dalla
pila, e se si è messo qualcosa in pila senza toglierlo (o viceversa) l’indirizzo sarà
casuale. Quindi la pila va lasciata come è stata trovata.

Consiglio: quando si scrive un sottoprogramma, si inizia scrivendo questo:


sottoprg: PUSH ???

POP ???
RET
Ciò assicura che, se si è dimenticato di salvare in pila i registri che si sporcano, si
ottiene un errore di assemblaggio, che si vede facilmente.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1

Il sottoprogramma principale (_main), come già visto, è a tutti gli effetti


un sottoprogramma.

La convenzione con il programma che lo chiama è che il registro %EAX,


alla fine dell’esecuzione, deve ritornare un codice che indichi se il
programma è andato a buon fine: tale convenzione è

• 0: programma terminato in modo corretto


• Valore diverso da 0: programma terminato in modo errato.

Per questo motivo, prima della RET finale nel sottoprogramma principale, si
è soliti mettere la seguente linea di codice:

XOR %EAX, %EAX

Che di fatto mette %EAX a zero (ed occupa un solo byte, invece che 5).
Corso di Laurea: ING.. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Sottoprogrammi e passaggi di parametri:
Dichiarazione e inizializzazione dello stack
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: ING.. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2

Se in un programma Assembly si usa lo stack (o perché serve per


salvare qualche registro, o perché ièstrutturato in sottoprogrammi),
sarebbe opportuno dichiararlo ed inizializzarlo.

Dichiararlo significa riservare uno spazio di memoria sufficiente


nella sezione dati.

Inizializzarlo significa mettere l’indirizzo successivo all’ultima


variabile nel registro ESP, che punta al top dello stack.

Questo va fatto all’inizio della sezione codice, prima di usare la


pila.
Corso di Laurea: ING.. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2

Vediamo come si fa:

.DATA

mystack: .FILL 1024,4 #dichiarazione stack
.SET initial_esp, (mystack + 1024*4)

.TEXT
_main: NOP
MOV $initial_esp, %ESP #inizializzazione stack

Si noti che:
mystack è un (nome simbolico di) indirizzo a 32 bit, quindi può essere
usato in un’espressione
initial_esp è l’indirizzo della locazione successiva all’ultimo byte di
mystack.
Corso di Laurea: ING.. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2

Quanto deve essere grande lo stack? Il corretto


dimensionamento è a carico del programmatore.

Nel caso precedente, sono state allocate 1024 doppie parole, che
dovrebbero essere più che sufficienti per semplici programmi
scopi.

Se si scrive codice altamente ricorsivo, con un uso massiccio dello


stack, deve pensarci su.

È opportuno osservare che, se si vuole scrivere codice di quel


genere, normalmente non lo fa in Assembly.
Corso di Laurea: ING.. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2

Nel ambiente di programmazione (e non nell’Assembler in


generale) GAS, la parte di codice relativa a dichiarazione ed
inizializzazione può essere omessa, e viene riempita direttamente
dall’assemblatore in modi da lui giudicati opportuni.

Nota finale: esiste un terzo modo di passare i parametri tra i


sottoprogrammi, che è usare la lo stack.

Si vedranno nei prossimi nuclei tematici alcuni casi in cui si


utilizzerà lo stack per il passaggio dei parametri.
Corso di Laurea: ING. INF.E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Gestione software dell’I/O:
Ingresso e uscita di caratteri e stringhe
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: ING. INF.E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1

In Assembly non esistono istruzioni di ingresso/uscita di alto


livello, come in C/C++.

Le uniche cose che posso fare sono IN e OUT su registri di


interfaccia.

Per ragioni correlate alla protezione, non è in genere possibile


indirizzare direttamente le interfacce con queste istruzioni.

Le istruzioni IN e OUT sono protette, cioè possono essere


eseguite soltanto in modalità sistema
Corso di Laurea: ING. INF.E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1

Se si vuol fare ingresso/uscita siamo vincolati ad utilizzare dei


servizi che il sistema esporta, cioè dei “sottoprogrammi” scritti
da qualcun altro.

Tali servizi sono molto primitivi, cioè consentono di fare cose di


bassissimo livello.

Sopra questi servizi sono quindi stati costruiti altri servizi, di


livello leggermente più alto, che potranno essere utilizzati come
meccanismi di ingresso/uscita.

Tali servizi riguardano la tastiera (ingresso) ed il monitor


(uscita), quest’ultimo rappresentato da una finestra DOS in
modalità testo.
Corso di Laurea: ING. INF.E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1

E’ necessario chiarire che le istruzioni di ingresso/uscita portano


all’interno/esterno del processore delle codifiche di caratteri secondo la
tabella ASCII.
La tabella ASCII di riferimento è quella che considera le codifiche di
caratteri su 7 bit. Tra questi, le cifre e le lettere (maiuscole e minuscole)
hanno una certa importanza.
Si ricorda che:
• le cifre sono consecutive, a partire da 0x30 (‘0’) fino a 0x39 (‘9’)
• le lettere maiuscole sono consecutive, da 0x41 (‘A’) a 0x5A (‘Z’)
• le lettere minuscole sono consecutive, da 0x61 (‘a’) a 0x7A (‘z’)
• le lettere minuscole si ottengono da quelle maiuscole (e viceversa)
settando/resettando il bit n. 5

alcuni caratteri ASCII codificano caratteri speciali: il ritorno carrello è 0x0D,


l’avanzamento linea è 0x0A, backspace 0x08, etc.
Corso di Laurea: ING. INF.E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1

È importante entrare nell’ordine di idee che, quando si vuol fare


apparire sul monitor il numero ‘0’, è necessario che dire al
processore di stampare il carattere ‘0’, e fornisca quindi la sua
codifica ASCII.

Non si può, come in C/C++, leggere/stampare variabili tipate.

Si possono leggere e stampare singoli caratteri.

Risalire da questi a dei numeri (e viceversa) è qualcosa da fare


essenzialmente a mano, e costa una certa fatica.
Corso di Laurea: ING. INF.E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1

I sottoprogrammi di utilità per l’ingresso/uscita sono tutti contenuti


nel file utility (si fa riferimento al pacchetto di installazione del GNU
GAS di cui si è parlato in una predecente lezione).

Per usare questi sottoprogrammi, bisogna includere il file con


l’apposita direttiva:

.INCLUDE “C:/GAS/utility”

Visto che il file utility dichiara anche l’etichetta _main come globale,
non c’è più bisogno dell’apposita direttiva se lo si include.

Comunque, metterla lo stesso non crea problemi.


Corso di Laurea: ING. INF.E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1

I sottoprogrammi base per l’ingresso/uscita sono due:

- input: pone in AL la codifica ASCII del carattere letto da tastiera.


Non stampa niente a video (cioè non fa l’eco del carattere);

- output: richiede come parametro in AL una codifica ASCII, e la


stampa sul video alla posizione corrente del cursore.

Quindi, se si vuole che il carattere che si sta digitando appaia sul


video, occorre chiamare entrambi i sottoprogrammi.

Con questi due si possono già fare molte cose. In particolare, si


possono fare letture e stampe di gruppi di caratteri (stringhe),
oppure di numeri. Questi ultimi, del resto, sono stringhe di caratteri
ASCII, alle quali si possono attribuire un significato particolare.
Corso di Laurea: ING. INF.E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1

Di seguito di descrivono alcuni dei più importanti caratteri di utilità


per l’I/O di caratteri e stringhe:

 newline: non ha nessun parametro, serve per andare a capo

 pause: mette in pause il programma e stampa un messaggio sul


video. La pausa si sblocca quando l’utente preme un tasto. Si può
aggiungere nel nome una cifra da 0 a 9, che viene stampata a
video.
Corso di Laurea: ING. INF.E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1

 inline_eco: consente di scrivere una linea di testo con la tastiera


e di inserirla in un buffer di memoria. Tale linea viene anche
stampata sul video mentre la si digita. L’inserimento termina
quando si preme invio. La pressione di tale tasto genera il
carattere il cui codice ASCII è 13, CR. In questo caso, il
sottoprogramma inserisce come penultimo carattere anche il
carattere di avanzamento linea (LF, ASCII 10). Il
sottoprogramma interpreta il carattere ASCII 8 (backspace)
come l’ordine di togliere l’ultimo carattere dal buffer (e dal video).
Il sottoprogramma richiede come parametri di ingresso l’indirizzo
del buffer dove i caratteri sono memorizzati (EBX), e la
lunghezza del buffer medesimo (CX). Il sottoprogramma
controlla che il numero di caratteri digitati (compresi LF e CR)
non ecceda quello specificato in CX, e butta via i caratteri che
non entrano nel buffer.
Corso di Laurea: ING. INF.E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1

 outline: stampa a video il contenuto delle celle di memoria


a partire da EBX, interpretando ciascun byte come la
codifica ASCII di un carattere, finché non trova un carattere
di ritorno carrello. Se l’utente si scorda di mettere il carattere
di ritorno carrello, il sottoprogramma prosegue allegramente
interpretando come caratteri ASCII i contenuti delle celle nel
resto della memoria, finché non trova un 13 da qualche
parte.

 outmess: stampa a video CX caratteri a partire dalla


locazione il cui indirizzo si trova in EBX.
Corso di Laurea: ING. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Gestione software dell’I/O:
Ingresso e uscita di numeri
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: ING. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2

Per fare l’ingresso/uscita di numeri si hanno a disposizione alcuni


sottoprogrammi:

 inDA1_eco: fa l’ingresso di un carattere (con eco sullo schermo)


controllando che il carattere sia una cifra decimale (cioè che sia
uno dei caratteri compresi tra 48 e 57 nella tabella ASCII). Alla
fine del sottoprogramma, in AL c’è il codice ASCII della cifra
decimale. Se l’utente preme un tasto non corrispondente ad una
cifra decimale, il programma attende la pressione del prossimo.

 inHA1_eco: lo stesso di prima, ma funziona con cifre in base


16. Oltre ai caratteri che corrispondono a cifre decimali, accetta
anche le lettere maiuscole da A ad F.
Corso di Laurea: ING. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2

I due sottoprogrammi visti nella slide precedente risolvono il


problema dell’ingresso facendo entrare nel calcolatore delle
codifiche ASCII.

In realtà, in genere si lavora sui numeri, non sulle codifiche ASCII.

Infatti, non si possono sommare due codifiche ASCII, perché


l’operazione non ha alcun senso.

Occorre convertire le codifiche ASCII in numeri in base due.

A tale scopo esistono degli ulteriori sottoprogrammi di utilità.


Corso di Laurea: ING. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2

HA1B4: Questo sottoprogramma prende in ingresso la codifica ASCII di


una cifra esadecimale in AL (ad esempio il risultato della chiamata del
precedente sottoprogramma) e la trasforma nel numero naturale che le
corrisponde, che inserisce in AL stesso.

In altri termini, converte da ASCII a binario.

Spiegazione: se l’utente ha digitato “B”, in AL c’è la codifica ASCII di “B”,


che corrisponde alla stringa di bit 0100 0010 (cioè vale 66). Chiamando
questo sottoprogramma, in AL viene inserito il numero 11 (0000 1011),
che corrisponde alla cifra in base 16. In altre parole, viene sottratto 55.
Altro esempio: se l’utente ha digitato “8”, in AL c’è la codifica ASCII di “8”,
che corrisponde alla stringa di bit 0011 1000 (cioè vale 56). Chiamando
questo sottoprogramma, in AL viene inserito il numero 8 (0000 1000),
che corrisponde alla cifra in base 16. In altri termini, viene sottratto 48 (o,
meglio ancora, azzerati i bit 4 e 5)
Corso di Laurea: ING. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2

Esempio di utilizzo dei precedenti sotto programmi:

.DATA
messaggio: .ASCII “scrivi un numero hex: \n\r”
#La direttiva .ASCII definisce una variabile vettoriale #di dimensione pari al
numero di caratteri inseriti, i #cui valori iniziali sono, rispettivamente, la codifiche
#ASCII (a 8 bit) dei caratteri stess.

.TEXT
[…]
LEA messaggio, %EBX #copia in EBX l’indirizzo iniziale
#di messaggio, parametro di outline
CALL outline #stampa a video messaggio
CALL inHA1_eco # aspetta un numero esadecimale da tastiera
CALL HA1B4 #converte la codifica ASCII nel numero
# a questo punto in AL c’è il numero che digitato.
Corso di Laurea: ING. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2

 HA2B8: Fa la stessa cosa di HA1B4, ma con due codifiche ASCII, contenute


in AX. IL risultato è un byte, e sta in AL. La figura chiarisce il funzionamento di
questo sottoprogramma:

 inbyte: sfrutta il programma precedente e inHA1_eco per fare l’ingresso di


due cifre esadecimali (che rappresentano un numero che sta su un byte) e
convertirle in un numero in base due su un byte, che viene messo in AL.
Corso di Laurea: ING. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2

Fa comodo, in molti casi, poter stampare un numero che si è calcolato, sia in


decimale che in esadecimale. Il problema è che, per stamparlo, occorre
convertirlo in una sequenza di caratteri ASCII, perché i servizi del sistema
operativo (che vedremo più avanti) offrono come interfaccia di stampa
programmi che richiedono codifiche di caratteri ASCII.

I programmi a a disposizione per far questo sono:

• B4HA1, B8HA2: Prendono in ingresso il contenuto di AL (considerando i 4


bit meno significativi o tutto il byte, rispettivamente) e producono o la
codifica ASCII di una cifra esadecimale in AL (il primo), o le codifiche ASCII
di due cifre esadecimali (il secondo) in AH e AL.

• outbyte: sfrutta B8HA2 per stampare le due cifre esadecimali che


rappresentano il numero naturale (byte) contenuto in AL.
Corso di Laurea: ING. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2

Lavorare con numeri in base 16 è piuttosto limitativo. Si


possono utilizzare dei sottoprogrammi di conversione, che sono
essere più complessi di quelli visti finora.

Infatti, una cifra in base 16 corrisponde a 4 bit, il che rende la


conversione in base 2 banale (infatti, N cifre in base 16 sono
4N bit).

In base 10 non funziona così, in quanto la giustapposizione di


cifre in base 10 codificate in base 2 non è direttamente
interpretabile come numero in base 2.

C’è bisogno di convertire un numero in base 10 sia per farne


l’ingresso da tastiera, sia per stamparlo.
Corso di Laurea: ING. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2

 inDANB16_eco. Attende che dalla tastiera arrivino più codifiche ASCII di cifre
decimali. Quando ciò avviene interpreta le cifre come l’espressione in base
dieci di un numero naturale, esprime tale numero in base due su 16 bit e lo
deposita in AX. Oltre a ciò, fa l’eco sul monitor delle codifiche ASCII delle cifre
decimali prelevate.

Parametri da passare al sottoprogramma CX <= numero delle cifre decimali da


gestire (al più 5).

Parametri restituiti al programma chiamante AX <= numero naturale espresso in


base due.

Se il numero restituito supera 65535 (massimo valore su 16 bit) non


vengono segnalati errori ma il risultato della conversione non è attendibile.
Corso di Laurea: ING. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2

 B16DAN_out. Interpreta il contenuto di AX come un numero


naturale binario, lo esprime in base dieci su più cifre e poi invia al
monitor le codifiche ASCII delle cifre stesse.

Parametri da passare al sottoprogramma AX <= numero binario da


esprimere in base dieci

Parametri restituiti: nessuno


Corso di Laurea: ING. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S2
Titolo: Sottoprogrammi e Gestione I/O
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Sottoprogrammi e passaggi di parametri:
Esercizio1
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: ING. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S2
Titolo: Sottoprogrammi e Gestione I/O
Attività n°: 1

Scrivere un programma che:

• definisca un vettore numeri di enne numeri naturali a 16 bit in


memoria (enne sia una costante simbolica)

• definisca un sottoprogramma per contare il numero di bit a 1 di


un numero a 16 bit. Tale sottoprogramma ha come parametro di
ingresso il numero da analizzare (in AX), e restituisce il numero
di bit a 1 in CL.

• utilizzando il sottoprogramma appena descritto, calcoli il numero


totale di bit a 1 nel vettore ed inserisce il risultato in una variabile
conteggio di tipo word.
Corso di Laurea: ING. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S2
Titolo: Sottoprogrammi e Gestione I/O
Attività n°: 1

Scaricare la soluzione contenuta nel file esercizio1.pdf


Corso di Laurea: ING. INF.E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S3
Titolo: Sottoprogrammi e Gestione I/O
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Sottoprogrammi e passaggi di parametri:
Esercizio1
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: ING. INF.E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S3
Titolo: Sottoprogrammi e Gestione I/O
Attività n°: 1

Tempo a disposizione per la risoluzione dell’esercizio e per il


caricamento nell’ePortfolio.
Corso di Laurea: INGEGNERIA INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 33
Attività n°: WEBINAR: supporto alle esercitazioni
1

Calcolatori Elettronici e
Sistemi Operativi

Supporto per le esercitazioni


Webinar
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 33
Attività n°: WEBINAR: supporto alle esercitazioni
1

Webinar
• Si invitano gli studenti a seguire il Webinar come in oggetto alla
presente lezione.

• In particolare in questo webinar il docente si rende disponibile per


confrontarsi con gli studenti sugli esercizi discussi nel nucleo
tematico relativo al linguaggio Assemby

• Tutti i webinar vengono ripetuti ciclicamente durante l’anno


accademico secondo un calendario a disposizione degli studenti.

• Per maggiori informazioni sui calendari contattare i TOL o il docente.


Corso di Laurea: INGEGNERIA INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 33/S1
Attività n°: WEBINAR: supporto alle esercitazioni
1

Calcolatori Elettronici e
Sistemi Operativi

Supporto per le esercitazioni


Webinar
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 33/S1
Attività n°: WEBINAR: supporto alle esercitazioni
1

Webinar
• Si invitano gli studenti a seguire il Webinar come in oggetto alla
presente lezione.

• In particolare in questo webinar il docente si rende disponibile per


confrontarsi con gli studenti sugli esercizi discussi nel nucleo
tematico relativo al linguaggio Assemby

• Tutti i webinar vengono ripetuti ciclicamente durante l’anno


accademico secondo un calendario a disposizione degli studenti.

• Per maggiori informazioni sui calendari contattare i TOL o il docente.


Corso di Laurea: ING. INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 33/S2
Attività n°: WEBINAR: supporto alle esercitazioni
1

Calcolatori Elettronici e
Sistemi Operativi
Supporto per le esercitazioni
Webinar
Prof. Pietro Ducange
Corso di Laurea: ING. INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 33/S2
Attività n°: WEBINAR: supporto alle esercitazioni
1

Webinar
• Si invitano gli studenti a seguire il Webinar come in oggetto alla
presente lezione.

• In particolare in questo webinar il docente si rende disponibile per


confrontarsi con gli studenti sugli esercizi discussi nel nucleo
tematico relativo al linguaggio Assemby

• Tutti i webinar vengono ripetuti ciclicamente durante l’anno


accademico secondo un calendario a disposizione degli studenti.

• Per maggiori informazioni sui calendari contattare i TOL o il docente.


Corso di Laurea: ING. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 33/S3
Titolo: WEBINAR: supporto alle esercitazioni
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi

Supporto per le esercitazioni


Webinar
Prof. Pietro Ducange
Corso di Laurea: ING. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 33/S3
Titolo: WEBINAR: supporto alle esercitazioni
Attività n°: 1

Webinar
• Si invitano gli studenti a seguire il Webinar come in oggetto alla
presente lezione.

• In particolare in questo webinar il docente si rende disponibile per


confrontarsi con gli studenti sugli esercizi discussi nel nucleo
tematico relativo al linguaggio Assemby

• Tutti i webinar vengono ripetuti ciclicamente durante l’anno


accademico secondo un calendario a disposizione degli studenti.

• Per maggiori informazioni sui calendari contattare i TOL o il docente.


Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 34
#lezione#
Titolo: Introduzione all Hardware del calcolatore
#titolo#
Attività n°: 1
#attività#

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Nucleo Tematico: Strutture HW del Calcolatore
Introduzione all’hardware del calcolatore:
Aspetti fisici di un semplice processore
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1

Nelle lezioni che costituiscono il nucleo tematico relativo alla struttura


hardware del calcolatore si farà riferimento al libro di testo consigliato
“Graziano Frosini, Giuseppe Lettieri, Architettura dei Calcolatori (Volume
II), Edizioni Pisa University Press, 2013. ”

Immagini e tabelle sono state estratte dal testo di cui sopra.

Allo studente saranno date indicazioni sulle parti del libro da approfondire
nelle sessioni di studio di approfondimento.

Si ricorda che nelle due prime sessioni di approfondimento potrebbero


essere presentate anche nozioni teoriche fondamentali per continuare lo
studio e passare l’esame. Si consiglia quindi di non saltarle per nessuna
ragione.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1

Nelle prossime slide saranno presentati i blocchi funzionali hardware che


costituiscono un semplice ma completo calcolatore elettronico.

I blocchi presentati sono in genere realizzati effettivamente come circuiti


integrati i quali comunicano con l’esterno per mezzo dei cosiddetti
piedini (pin).

La comunicazione avviene in maniera digitale e quindi ciascun piedino


può supportare un livello di tensione basso (zero logico) oppure un valore
di tensione alto (uno logico).

Inoltre, come detto già nel modulo di Reti Logiche, esiste anche un livello
di uscita in alta impedenza indicato con Z. Anche questo livello di uscita
può essere supportato dai piedini dei blocchi funzionali che saranno
presentati.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1

In figura viene mostrato come si possono ottenere i tre possibili valori in uscita da
un blocco logico.

• Se il piedino /OE (output enable), che funge da interruttore, è aperto (vale


1) allora l’uscita è in alta impedenza.

• Se /OE vale zero, allora l’uscita coincide con l’ingresso se questo vale 0 o 1.
Altrimenti, se l’ingresso è collegato ad altra impedenza, l’uscita risulta non
specificata (può valere sia zero sia uno).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1

Aspetti fisici di un semplice processore


Il primo e più importante blocco funzionale che si presenta è relativo ad un
semplice processore. In figura si mostra la piedinatura di un processore ad 8 bit,
con spazio di memoria logica di 4GB, spazio di I/O a 64KB.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1

Aspetti fisici di un semplice processore

La piedinatura serve al processore per comunicare con il mondo esterno, tramite


dei cicli di accesso agli spazi esterni che effettua durante l’esecuzione di un
qualsivoglia programma.

Infatti, il processore deve emettere delle informazioni relative a:

• Spazio in cui vuole accedere (memoria o I/O), per esempio per prelevare
istruzioni o operandi o memorizzare risultati

• Indirizzo all’interno dello spazio

• Tipo di operazione da svolgere (lettura o scrittura)

• Lunghezza (in byte) delle informazioni da trasferire

L’emissione effettiva di dati avviene dal processore se effettua delle operazioni di


scrittura oppure dai banchi di memoria o dalle interfacce di I/O in fase di lettura
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1

La tabella riporta la descrizione e la funzione di ciascun piedino del processore


(da imparare a memoria)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1

Attenzione:

Un piedino si dice attivo alto se l’espletamento della sua funzione


avviene attraverso l’emissione o ricezione di un livello logico alto o di
un impulso del tipo 0->1->0.

Al contrario, un piedino si dice attivo basso (il suo nome si fa


precedere da ‘/’) se l’espletamento della sua funzione avviene
attraverso l’emissione o ricezione di un livello logico basso o di un
impulso del tipo 1->0->1.
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 34/S1
#lezione#
Titolo: Introduzione all Hardware del calcolatore
#titolo#
Attività n°: #attività#
1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Nucleo Tematico: Strutture HW del Calcolatore
Introduzione all’hardware del calcolatore:
Cicli di lettura e scrittura del processore
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34/S1
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1

Ciclo di lettura
Con riferimento alla piedinatura del processore vista nelle lezione
principale, in figura si mostra il diagramma temporale di un ciclo di
lettura del processore (esempio di lettura in memoria).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34/S1
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1

Ciclo di lettura
Esso può avvenire

In memoria (come nel diagramma precedente): In questo caso, il


processore specifica attraverso A31-A0 l’indirizzo della locazione
interessata. Viene quindi generato un impulso di lettura, di una durata di
alcune decide di nano secondi, attraverso il piedino /MRD. Sul fronte in
salita dell’impulso, viene memorizzato all’interno del processore il byte,
depositato dal banco di memoria sui piedini D7-D0 qualche tempo prima
che finisca l’impulso di lettura. Durante il ciclo di lettura, i piedini /MWR,
/IORD e /IOWR restano inattivi

Nello spazio di I/O: la lettura avviene in maniera analoga alla precedente,


con l’unica differenza che l’indirizzo va specificato su 16 bit e quindi si
utilizza solo la parte meno significativa dei bit di indirizzo (A15-A0, mentre
gli altri restano a zero). Ovviamente, l’impulso di lettura viene mandato sul
piedino /IORD.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34/S1
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1

Ciclo di scrittura
In figura si mostra il diagramma temporale di un ciclo di scrittura del
processore (esempio di lettura in memoria).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34/S1
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1

Ciclo di scrittura
Esso può avvenire

In memoria (come nel diagramma precedente): In questo caso, il


processore specifica attraverso A31-A0 l’indirizzo della locazione
interessata. Contemporaneamente mettere a disposizione il byte da
scrivere sui piedini D7-D0. Successivamente viene generato un impulso di
scrittura, di una durata di alcune decide di nano secondi, attraverso il
piedino /MWR. Sul fronte in salita dell’impulso, viene il banco di memoria
interessato deve prelevare il byte a disposizione su D7-D0. Durante il ciclo
di lettura, i piedini /MRD, /IORD e /IOWR restano inattivi

Nello spazio di I/O: la lettura avviene in maniera analoga alla precedente,


con l’unica differenza che l’indirizzo va specificato su 16 bit e quindi si
utilizza solo la parte meno significativa dei bit di indirizzo (A15-A0, mentre
gli altri restano a zero). Ovviamente, l’impulso di scrittura viene mandato sul
piedino /IOWR.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34/S1
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1

Attenzione:

I cicli di lettura e scrittura possono essere opportunamente allungati


qualora le interfacce o i banchi di memoria richiedano dei tempi più lunghi
per effettuare i cicli.

Per questo motivo, il processore viene dotato anche di un piedino chiamato


/READY che viene periodicamente esaminato e determina l’allungamento
del ciclo quando viene trovato inattiva.

Ovviamente, quando si devono leggere o scrivere dati che hanno


dimensioni maggiori di un byte (nei processori ad 8 bit) il processore deve
effettuare un ciclo di lettura/scrittura per ogni byte che costituisce il dato.
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 34/S2
#lezione#
Titolo: Introduzione all Hardware del calcolatore
#titolo#
Attività n°: 1
#attività#

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Nucleo Tematico: Strutture HW del Calcolatore
Introduzione all’hardware del calcolatore:
Approfondimento sul libro di testo
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34/S2
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1

Si consiglia agli studenti di leggere con attenzione i paragrafi 1.1 e 1.2


del libro di testo.

Da tali paragrafi sono state estratte la maggior parte delle informazioni


presentate nelle precedenti slide.
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 34/S3
#lezione#
Titolo: Introduzione all Hardware del calcolatore
#titolo#
Attività n°: #attività#
1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Nucleo Tematico: Strutture HW del Calcolatore
Introduzione all’hardware del calcolatore:
Esempi di domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34/S3
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1

Esempi di domande di esame:

• Cosa sono i piedini di un blocco funzionale hardware?

• Come viene gestita l’uscita dei blocchi funzionali hardware?

• Disegnare e discutere il blocco funzionale di un semplice


processore a 8 bit che gestisce 32MB di memoria logica e uno
spazio di I/O di 16MB.

• Quali solo le informazioni che un processore emette per


comunicare tramite il mondo esterno tramite i suoi piedini?
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34/S3
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1

Esempi di domande di esame:

Disegnare e discutere il diagramma temporale di un ciclo di lettura in


memoria (oppure in I/O) di un semplice processore a 8 bit.

Disegnare e discutere il diagramma temporale di un ciclo di scrittura in


memoria (oppure in I/O) di un semplice processore a 8 bit.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Nucleo Tematico: Strutture HW del Calcolatore
Funzionamento interno di un calcolatore:
Processore e BUS di comunicazione
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Schema di un semplice calcolatore


In figura si mostra lo schema di un semplice calcolatore basato sul
processore a 8 bit mostrato nella precedente lezione.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Oltre al processore (i cui piedini sono quelli già discussi nella lezione
precedente), sono presenti lo spazio di memoria e lo spazio di I/O.

Lo spazio di memoria, che in questo caso è di 232 byte, è costituito da


banchi di memoria appositamente montati.

Lo spazio di I/O (216 locazioni da 1 byte) è formato da interfacce, che


servono per gestire i trasduttori fisici per l’ingresso e l’uscita di
informazioni, appositamente posizionate nello spazio stesso.

Infine, il calcolatore comprende anche un bus di comunicazione che è


costituito dalle linee che collegano i piedini del processore con i piedini dei
banchi di memoria e delle interfacce.

Grazie al bus, si consente la comunicazione del processore con la spazio


di memoria e con lo spazio di I/O.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Funzionamento del processore


Come già detto varie volte, il processore preleva una istruzione alla volta
dalla memoria e la esegue.

Per far ciò, utilizza i registri visibili al programmatore (quelli visti quando è
stato introdotta la programmazione in Assembly) e anche dei registri di
appoggio che il programmatore non vede, tra cui il registro IR (Istruction
Register).

Le tre fasi del funzionamento del processore sono:

• Chiamata
• Indirizzamento
• Esecuzione

Ciascuna di essa sarà discussa nelle prossime slide.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Funzionamento del processore: fase di chiamata


Attraverso vari cicli di lettura, viene trasferita l’istruzione da eseguire dalla
memoria al registro IR.

Si ricorda che in EIP è contenuto l’indirizzo della prima locazione di memoria che
contiene l’istruzione. Dopo ogni ciclo di lettura per caricare l’istruzione in IR si
incrementa il valore contenuto in EIP in modo tale che alla fine esso contenga
l’indirizzo della prossima istruzione da eseguire.

Funzionamento del processore: fase di indirizzamento


In base alle regole della specifica istruzione, viene calcolato l’indirizzo
dell’operando destinatario.

Se l’istruzione è a due operandi, si calcola anche l’indirizzo del sorgente.

Se l’indirizzamento è immediato, si considera l’indirizzo di IR

In caso di istruzione di controllo di flusso di programma si calcola l’indirizzo


dell’istruzione a cui saltare.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Funzionamento del processore: fase di esecuzione

L’istruzione contenuta in IR viene interpretata ed eseguita dal processore. In


base al tipo di istruzione possono essere eseguite le seguenti azioni:

• Se l’istruzione è di controllo e la condizione non è verificata allora non si


esegue nulla. Altrimenti, il processore aggiorna il valore di EIP
utilizzando l’indirizzo calcolato nella fase di indirizzamento.

• Se l’istruzione è operativa e non ci sono indirizzamenti di spazio di


memoria o di I/O, allora essa viene eseguita direttamente senza
effettuare cicli di lettura o scrittura, aggiornando opportunamente il
registro destinatario. Altrimenti il processore effettua dei cicli di
lettura/scrittura utilizzando gli indirizzi calcolati nella fase di
indirizzamento. In questo caso locazioni di memoria possono essere
lette oppure modificate tramite cicli di scrittura sul bus.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Bus di comunicazione

Come detto in precedenza, il bus serve per collegare il processori


con gli altri blocchi: banchi di memoria o interfacce.

Esso si divide tipicamente in:

• Bus indirizzi (nello specifico costituito da 32 fili) sui cui


viaggiano gli indirizzi dello spazio di memoria o dello spazio di
I/O.

• Bus dati, costituito dagli 8 fili su cui viaggiano i dati

• Bus di controllo, costituito dai fili relativi ai comandi di


lettura/scrittura nello spazio di memoria e nello spazio di I/O.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Bus di comunicazione

L’insieme di collegamenti che costituisce il bus deve essere utilizzato


(pilotato) in modo corretto.

Infatti, il bus è una risorsa che deve essere usata in maniera mutuamente
esclusiva: un solo blocco alla volta può inviare informazioni sul bus. Un
altro blocco sarà abilitato a riceverle.

Se più blocchi cercano di inviare informazioni sul bus allora si ha un


cortocircuito che causa un cattivo funzionamento dei circuiti integrati che
costituiscono il calcolatore.

Nel calcolatore semplificato, in cui il processore è il solo a comandare il bus


indirizzi e di controllo, solo il bus dati (bidirezionale in lettura e scrittura)
deve essere comandato in mutua esclusione.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Bus di comunicazione
Per gestire la mutua esclusione, come mostrato in figura, i piedini collegati al
bus dati di ciascun blocco sono supportati da un registro la cui uscita è
comandata da una porta 3-state.

I piedini /WR, /S e /RD servono, rispettivamente, per gestire un ciclo di scrittura,


l’abilitazione del blocco e la gestione di un ciclo di lettura.
E’ semplice capire che in fase di scrittura, la porta 3-state è in alta impedenza e il
dato presente sul bus viene scritto nel registro selezionato e attivato da /W per la
scrittura.
In fase di lettura, la porta 3-state è in cortocircuito e quindi il dato contenuto nel
registro viene reso disponibile sul bus.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35/S1
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Nucleo Tematico: Strutture HW del Calcolatore
Funzionamento interno di un calcolatore:
Organizzazione dello spazio di memoria e di I/O
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35/S1
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Schema di un semplice calcolatore


In figura si mostra lo schema di un semplice calcolatore basato sul
processore a 8 bit mostrato nella precedente lezione.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35/S1
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Si fa l’ipotesi che le memorie e le interfacce collegate al processore


abbiano piedini e segnali compatibili con quelli del processore.

• In particolare, i piedini per gli indirizzi e per i dati vengono indicati gli
stessi nomi usati per il processore.

• I piedini per recepire gli impulsi di lettura e di scrittura prendono il


nome di /RD e /WR, rispettivamente.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35/S1
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Piedinatura di un banco di memoria


In figura si mostra la piedinatura di un ipotetico circuito integrato che realizza
un banco di memoria di 220 locazioni da 4 bit ciascuna. Tale integrato si
indica con la siglia 1Mx4 (un mega =220 )
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35/S1
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Esercizio: realizzare un banco di memoria da 220 locazioni da 8 bit (1Mx8)


utilizzando due integrati 1Mx4.
In figura si mostra la soluzione, che prevede il collegamento in parallelo dei due
moduli.

Solo i piedini dei dati raddoppiano in quanto raddoppia la dimensione della


locazione. La parte meno significativa del dato viene scritta (letta) nel (dal) banco a
destra mentre quella più significativa viene scritta (letta) nel (dal) banco a sinistra.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35/S1
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Esercizio: realizzare un banco di memoria da 2Mx8) utilizzando due integrati 1Mx8.


In figura si mostra la soluzione. I piedini /RD, /WD, D7-D0 vengono collegati in
parallelo, cosi come i primi 20 piedini meno significativi del bus indirizzi.

C’è bisogno di un piedino di


indirizzo in più che faccia da
discriminante fra il banco
superiore e quello inferiore.

Tale piedino, assieme al


piedino di abilitazione /S,
viene considerato come
ingresso alla rete
combinatoria di comando R.

Tale rete, genera i segnali di


abilitazione per i due distinti
banchi di memoria.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35/S1
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Montaggio di un banco di memoria nello spazio di I/O

Supposto di avere a disposizione un banco di memoria di 2kx8,


esso può essere montato in una delle 232-k porzioni dello spazio di
memoria (ricordare che 232/2k=232-k ).

Se si hanno a disposizione blocchi da 2Mx8, essi potranno essere


montati in una delle 211 porzioni dello spazio di memoria definite da
una combinazione di valori degli 11 bit più significativi del bus
indirizzi.

Nella figura della prossima slide si mostra un esempio di


montaggio di un blocco da 2Mx8 nello spazio di memoria da 4GB.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35/S1
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Montaggio di un banco di memoria nello spazio di memoria

32

I 21 bit meno significativi del bus indirizzi individuano la locazione di memoria


all’interno del blocco. Gli 11 bit più significativi vengono utilizzati come ingresso alla
maschera (rete combinatoria) che produrrà il segnale di abilitazione della memoria in
corrispondenza dell’inizio della porzione giusta in cui è stato montato il banco.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35/S1
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Organizzazione dello spazio di I/O

Una interfaccia appare al programmatore, in maniera semplificata, come una


piccola memoria costituita da un certo numero di registri da un byte.

In figura si mostra la piedinatura di una interfaccia con tre registri da un byte.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35/S1
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Organizzazione dello spazio di I/O

In figura si mostra come l’interfaccia mostrata in precedenza può essere montata


nello spazio di I/O:

Il programmatore dovrà specificare un indirizzo dello spazio di I/O per accedere ad


uno dei tre registri. Questo indirizzo si ottiene sommando l’indirizzo interno del
registro (su due bit) all’indirizzo base. L’indirizzo base è quello riconosciuto dalla
maschera considerando i 14 bit più significativi (gli altri 16 bit dell’indirizzo del bus
indirizzi si considerano a zero).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35/S2
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Nucleo Tematico: Strutture HW del Calcolatore
Funzionamento interno di un calcolatore:
Approfondimento sul libro di testo
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35/S2
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Si consiglia agli studenti di leggere con attenzione i paragrafi 1.3,


1.4,1.5, 1.6 e 1.7 del libro di testo.

Da tali paragrafi sono state estratte la maggior parte delle informazioni


presentate nelle precedenti slide.
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 35/s3
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici

• Nucleo Tematico: Strutture HW del Calcolatore


• Funzionamento interno di un calcolatore:
• Esempi di domande di esame
• Prof. Pietro Ducange
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 35/s3
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Esempi di domande di esame:

Disegnare e discutere lo schema a blocchi di un semplice calcolatore.

Discutere le caratteristiche di un semplice bus di comunicazione.

Elencare e discutere la fasi di funzionamento di un semplice


processore.

Differenza fra spazio di memoria e spazio di I/O.

Si invita lo studente a caricare le risposte alle quattro domande di


cui sopra nell’ePortfolio
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 35/s3
Titolo: Funzionamento interno del calcolatore
Attività n°: 1

Esempi di domande di esame:

Disegnare e discutere lo schema a blocchi di una memoria 1Mx8.

Esercizio: realizzare un banco di memoria (1Mx8) utilizzando due


integrati 1Mx4.

Esercizio: realizzare un banco di memoria da 4Mx8 utilizzando due


integrati 2Mx8.

Discutere come un banco di memoria da 1Mx8 (interfaccia) può essere


montato nello spazio di memoria (di I/O). Disegnare lo schema corretto
di montaggio.

Una interfaccia può essere montata nello spazio di memoria (domanda


da lode)? Se si, come?
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Nucleo Tematico: Strutture HW del Calcolatore
Architettura di un calcolatore a 32 bit :
Aspetti fisici del processore
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

Nelle due precedenti lezioni, è stata presentata l’architettura base di


un semplice calcolatore ad 8 bit.

Lo studente dovrebbe aver capito come funziona in generale un


calcolatore e quali sono i sui principali blocchi funzionali.

Nelle prossime lezioni si aggiungeranno maggiori dettagli relativi


all’architettura di un calcolatore, seppur rimanendo ad un livello
ancora semplificato del suo funzionamento.

Questo approccio incrementale, dovrebbe consentire allo studente di


“digerire” con i tempi giusti le nozioni fornite.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

Nelle discussioni che seguiranno, si farà riferimento ad un calcolatore basato


processore PC a 32 bit, già introdotto nelle lezioni relative alla programmazione in
Assembly.

Si tratta di un processore basato sull’architettura della famiglia Intel x86-32.

Saranno trattati sistemi monoprocessore, che in prima istanza saranno dotati solo
di:

• Processore

• Controllore del bus locale

• Memoria principale

• Interfacce semplificate

• Memorie cache.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

Funzionamento fisico del processore PC

Il processore PC è a sua volta costituito da 5 unità fondamentali:

• Bus Unit (BU)

• Prefetch Unit (PU)

• Arithmetic and Logic Unit (ALU)

• Floating point Unit (FPU)

• Memory Management Unit (MMU)


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

Funzionamento fisico del processore PC

La Bus Unit si occupa di gestire gli accessi agli spazi esterni. Essa è quindi
responsabile dei cicli di bus che servono per prelevare le istruzioni, leggere dati e
scrivere risultati.

La Prefetch Unit si occupa di gestire la coda interna delle istruzioni. La PU, ogni
qualvolta che non è richiesto il bus per altri scopo, richiede alla BU di effettuare
accessi in memoria per prelevare istruzioni e depositarle in un buffer interno al
processore (coda di prefetch). Queste istruzioni vengono inviate opportunamente
alla ALU o alla FPU, man mano che queste devono essere eseguite. La PU si
occupa di svuotare la coda di istruzioni quando, per effetto di un salto o di altri
meccanismi, viene cambiato il contenuto di EIP.

La Memory Management Unit opera in presenza della memoria virtuale e si


occupa di trasformare gli indirizzi di memoria da logici a fisici. Questo argomento
sarà affrontato nel modulo di Sistemi Operativi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

Funzionamento fisico del processore PC

La ALU e la FPU si occupano, rispettivamente, di eseguire istruzioni


aritmetiche e logiche, e istruzioni in virgola mobile. Esse operano in
parallelo, eseguendo sotto insiemi disgiunti di istruzioni. Queste istruzioni
sono prelevate dalla PU da un unico flusso e inviate alla specifica unità.

Le istruzioni inviate alla ALU e alla FPU vengono sempre eseguite


nell’ordine in cui sono state scritte: infatti, l’invio di una nuova istruzioni ad
una specifica unità avviene solo quando questa ha concluso di eseguire la
precedente.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

Funzionamento fisico del processore PC

Attenzione:

Quando un’istruzione da inviare alla FPU richiede un operando dalla


memoria, la PU attende che siano state eseguite le istruzioni inviate alla ALU
(in genere questa attesa è inesistente, poiché le istruzioni inviate alla ALU
sono più semplici di quelle inviate alla FPU).

Similmente, quando un’istruzione inviata alla FPU produce un risultato da


immettere in memoria, la PU attende che tale istruzione sia terminata prima di
inviare le successive istruzioni alla ALU.

Eventuali problemi di sincronizzazione dei dati vengono automaticamente


risolti.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

Lo spazio esterno del processore PC

Il processore PC che si sta considerando è a 32 bit perché è in grado di


trasferire, in un unico ciclo di bus, fino a 4 byte (una parola lunga).

Per questo motivo, i piedini per i dati in questo caso sono 32 (D31-D0).

Per quanto riguarda lo spazio di memoria, si suppone che esso sia di


4GB, mentre lo spazio di I/O è di 64 KB.

Come conseguenza, i piedini per gli indirizzi sono 32 (A31-A0) e i 16


meno significativi (A15-A0 e gli altri 16 sono a zero) vengono utilizzati
per indirizzare lo spazio di I/O.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

Lo spazio esterno del processore PC

Il processore PC vede lo spazio di memoria e di I/O organizzato come in figura:

Si tratta di un insieme contiguo di linee da 4 byte consecutivi, il primo dei quali ha indirizzo multiplo di 4. Tale
indirizzo prende il nome di indirizzo di linea.
In un ciclo di bus, possono essere trasferite o una singola linea o una porzione di essa (i byte pero devo
essere consecutivi).
Come mostrato in figura, ciascun byte della linea viene gestito da un insieme di 8 piedini specifici di D31-D0.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

In figura si mostrano i principali piedini del processore PC-32

Nella slide successiva è riportata la tabella che descrive tutti i piedini.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

Notare che i piedini di indirizzo che escono direttamente dal processore


sono 30 (A31-A2). Questo perché il processore in un ciclo di bus indirizza
una linea intera da 4 byte.

Per selezionare i byte da trasferire all’interno di una linea vengono


utilizzati i piedini di byte enable (/BE3-/BE0). La tabella qui sotto che
spiega come vengono abilitate le singole parti del Bus Dati.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

L’indirizzo del primo byte da trasferire con un ciclo di bus viene


univocamente identificato dall’indirizzo della linea, specificato da A31-A2 e
dal valore dei piedini /BE3-/BE0. In una memoria da 4GB servono ulteriori
due bit di indirizzo (A1-A0) per indentificare tale byte. La tabella qui sotto
descrive come questi byte vengono ottenuti.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

Notare che:

Quando viene effettuato il prelievo anticipato delle istruzioni da parte


della Prefetch Unit, il processore legge sempre tutto il codice contenuto
in una linea e lo mette nella coda di prefetch.

Se durante la fase di esecuzioni, una istruzione richiede operandi che si


trovano su diverse linee di memoria, allora più accessi al bus devono
essere effettuati, specificando in ogni ciclo la linea e lo specifico byte.

Inoltre, può succedere che i byte che si trovano o che devono essere
memorizzati nei registri debbano subire delle traslazioni rispetto alla
posizione che devono assumere o assumono in memoria (e quindi nelle
porzioni specifiche di bus dati).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

Allineamento dei dati

In riferimento a quanto detto nella slide precedente, occorre tener presente che gli
operandi lunghi una parola (2 byte) o una parola doppia rappresentano un caso
particolare da analizzare.

Una parola si dice allineata se l’indirizzo del primo byte è multiplo di 2.

Similmente, una parola doppia si dice allineata se l’indirizzo del primo byte è multiplo
di 4.

Parole e parole doppie allineate possono essere trasferite con un unico ciclo di bus.

Visto che il programmatore può specificare nelle istruzioni gli indirizzi degli operandi,
se rispetta gli allineamenti l’esecuzione del suo programma sarà più veloce.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

Per quanto riguarda lo spazio di I/O, l’accesso avviene come mostrato


per lo spazio di memoria.

Come mostrato nella tabella sotto, saranno i piedini M/IO e W/R a


specificare il tipo di ciclo di bus da eseguire.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

Ciclo di lettura e scrittura

Un ciclo di bus dura in certo numero di cicli di clock (si supponga 4). Viene attivato da dall’impulso
di /RE nel primo ciclo. Alla fine del terzo ciclo di clock, si controlla /READY (collegato ad esempio
ad una interfaccia o alla memoria). Se non è attivo (quindi vale 1) il ciclo di bus si prolunga fino a
quando da /READY non arriva l’impulso di attivazione. A questo la lettura o la scrittura
dall’interfaccia (o dalla memoria) si è conclusa.
Nell’esempio, gli Stati di Wait, i cicli di clock in più necessari per il ciclo di bus, sono sono stati 2.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

Si consiglia agli studenti di leggere con attenzione il paragrafo 2.2 del libro di testo

Da tali paragrafi sono state estratte la maggior parte delle informazioni presentate
nelle precedenti slide.

I piedini del processore PC e la loro descrizione va saputa a memoria, cosi come


le temporizzazioni dei cicli di lettura e scrittura.

Le varie tabelle vanno capite e lo studente sarà sicuramente in grado di


ricavarsele.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S2
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Nucleo Tematico: Strutture HW del Calcolatore
Architettura di un calcolatore a 32 bit:
Esempi di domande di esame I
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S2
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1

Esempi di domande di esame:

Descrivere le unità che consentono il corretto funzionamento del


processore PC.

Le istruzioni di ALU e FPU possono essere eseguite in parallelo? Se


si discutere come.

Caricare le risposte alle precedenti 2 domande sull’ePortfolio.

Discutere la visione logica dello spazio esterno del processore PC.


Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezion