|
Completamento del Controllore 8051
Il Processore 8086
Il Sistema Operativo
Le Architetture Avanzate - Risc, memorie cache
Le Architetture Reali - I Bus
Completamento del Controllore 8051
Il processore 8051 viene trattato alla fine della classe terza. Spesso non viene terminato
ed è comunque utile ripassarlo, vista l'importanza dell'argomento.
Nella quarta dell'Anno Scolastico 2001/02 si è trattata l'interfaccia seriale.
Laboratorio: Si possono fare programmi di tutti i tipi, usando sia le periferiche
già concsciute, sia quella appena introdotta. Con questa classe sono stati fatti
semplici programmi con le vecchie periferiche (il PPI e l'interfaccia TI/O 16).
Il Processore 8086
Del processore 8086 vengono descritti i registri ed il meccanismo di segmentazione.
Descrivendo il BP, si introduce il concetto di frame.
Si descrivono le caratteristiche peculiari del set di istruzioni.
L'ultimo argomento sull'architettura X86 è la descrizione del meccanismo delle
interruzioni, accennando in questa sede alle tecniche di Daisy-Chain e, per finire,
agli interrupt software.
Laboratorio: Anche qui si comincia con lo sperimentare il set di istruzioni con
il debugger e l'assembler in linea.
La difficoltà è che l'assembler Linux (gas) non usa la sintassi standard
Intel, ma la sintassi AT&T. Non sono riuscito a trovare un elenco di istruzioni che le
esponga con questa sintassi.
Fatti i primi esperimenti con debugger ed eventualmente assembler, ma senza istruzioni di
ingresso/uscita, si passa all'utilizzo della schedina di I/O sulla parallela descritta
nella Presentazione del Laboratorio.
Si scrivono piccoli programmi che accendano i LED secondo pattern prestabiliti, prima in
maniera indipendente, poi interagendo anche con i tasti.
Per finire, si introducono le chiamate di sistema e si scrivono programmi che, oltre ad
interagire con l'interfaccia esterna, scrivano dei messaggi sullo standard output.
Il Sistema Operativo
Il sistema operativo si sviluppa su quattro piani:
- Macchine virtuali
- Si introduce il concetto di BIOS, agganciandosi anche agli interrupt software. Si
estende il concetto al livello delle driver, quindi si introduce il livello superiore
del sistema operativo. Si evidenziano le risorse non-dispositivo che il sistema
operativo gestisce.
- Multitasking e comunicazione tra processi
- Si introduce il concetto di task. Si descrive lo scheduler di basso e di alto
livello.
Si parla della competizione tra i processi e del deadlock.
Si introducono infine i metodi di comunicazione tra processi, vale a dire pipe
(unnamed e named), memoria comune (con semafori,
sezione critica ed istruzioni test&set), message passing e
message posting.
- Gestione della memoria
- Si introduce il problema dell'allocazione e della frammentazione.
Si descrivono i metodi di allocazione first fit, best fit e wost fit.
Si descrive il metodo software di gestione della deframmentazione (gli handle del
Macintosh).
Si introduce il concetto di MMU.
Si descrivono i descrittori di memoria dell'80286 (più semplici di quelli del
'386, ma già completi).
- Gestione del file system
- Si evidenziano le tre parti del file system:
- Gestione degli accessi in base alla concorrenza od ai diritti
- Gestione dello spazio
- Gestione dei nomi
In particolare, per la gestione dello spazio e dei nomi vengono presentati sia il modello
FAT che il modello Unix. Vengono fatti accenni al partizionamento, presentando sia lo
schema del PC IBM che del Macintosh.
Laboratorio: Sulle macchine virtuali, salvo chiamate alla BIOS (che però non possono
essere fatte in Linux) oppure chiamate di servizi di sistema, non si possono fare molti
esercizi.
Per la gestione della memoria non ho trovato esperienze significative
Il multitasking e la comunicazione tra processi possono essere invece sperimentati in mainera
estensiva, usando le relative chiamate di Linux. Si possono anche vedere i vecchi esempi di
L'esperienza in Quarta e
Un'altra esperienza in Quarta
Per quanto riguarda il file system, si può analizzare un file system FAT (magari su
dischetto) o anche EXT2, leggendo i dispositivi /dev/fd0 o /dev/hda1...
Le Architetture Avanzate - Risc, memorie cache
Si introduce il concetto di pipeline, il problema delle bolle e deli stalli, le tecniche
per evitarli (feed forward e delayed branch). Si fà notare come l'accesso
alla memoria per i dati comporti delle bolle nel blocco di fetch, quindi si spiega perchè
le istruzioni di accesso alla memoria sono limitate (load e store) e si introduce
un gran numero di registri.
Si introduce il discorso dell'aumento di velocità delle CPU, oltre la velocità del
bus. Si introducono quindi le memorie cache, con le loro trè architetture
(direct mapping, fully associative e set associative).
Si introduce il problema della scrittura e si descrivono le strategie write trough e
write back.
Si introduce l'accesso multiplo alla memoria (si descrive allo scopo il DMA - lo so,
sarebbe meglio farlo subito dopo gli interrupt, ma il momento non mi sembra adatto) e quindi si
introducono le tecniche di coerenza come il bus snooping).
Laboratorio: Non ci sono molti esperimenti da fare per mettere alla prova un'architettura
RISC, inoltre i PC del laboratorio non usano cpu RISC. Per quanto riguarda invece la cache, si
può scrivere un programma che valuti la quantità di cache installata, facendo
operazioni su un'area di memoria via via crescente e valutando l'incremento del tempo impiegato.
Le Architetture Reali - I Bus
Quest'ultima parte del programma prevede l'analisi delle architetture dei calcolatori reali.
In realtà ci si limita ai personal computer, cercando almeno di diversificare il discorso
includendo l'architettura del Macintosh, oltre a quella del PC IBM.
Vengono analizzati i processori e la loro evoluzione nel tempo, dall' originale 8088 a 4.77 MHz
fino a qulli attuali. Si analizza nache l'evoluzione dei bus di sistema, legata alla dimensione
del bus della CPU e dalla velocità del sistema.
Si analizza il meccanismo del Plug & Play per le schede di espansione.
Si passa poi ad analizzare i bus di I/O, partendo dalle interfacce Centronics e RS232 (anche se
di bus, in questo caso, non si può parlare), passando poi ad IEE488, SCSI, per finire
con USB e FireWire.
Il discorso termina con la valutazione delle prestazioni dei calcolatori, partendo dai MIPS e
MFLOPS, introducendo SpecInt e SpecFp e per finie i benchmark applicativi.
Laboratorio: In laboratorio occorrerebbe far fare esperienza agli studenti
sull'assemblaggio dei calcolatori, in modo da rendere concrete le informazioni date in teoria.
In realtà questo non è possibile, ma si fà un giro turistico del PC,
nel quale è il solo insegnante che smonta un PC, o di fronte ad un piccolo gruppo di
studenti oppure, tramite una telecamera ed un videoproiettore, davanti all'intera classe.
Il resto del discorso sui bus è difficilmente traspostabile in laboratorio. Si potrebbe
programmare un'interfaccia SCSI, ma non tutte le macchine ne sono dotate e poi difficilmente
la programmazione darebbe grandi risultati, in quanto non risulterebbe chiara.
Una parte che invece si svolge bene in laboratorio è la valutazione delle prestazioni
dei calcolatori, facendo scrivere vari benchmark, che valutino le prestazioni in diverse
maniere.
[Home Page dell'ITIS "Fermi"]
[Indice Quarta]
[Successivo]
© Ing. Stefano Salvi - Released under GPL licence
|