Calcolatori Elettronici (Ingegneria delle Telecomunicazioni) Prof. Silvio Salza Programma svolto nell’a.a. 2001 - 2002 ¯ Evoluzione dei sistemi di elaborazione. Struttura a livelli dell’organizzazione hardware e software del sistema di elaborazione – Evoluzione storica dei sistemi di elaborazione – Generazioni di sistemi di elaborazione – Dalla macchina di Babbage al Personal Computer – Leggi di Moore e di Nathan – Tipologie di computer – La famiglie Intel – Java e la Java Virtual Machine ¯ Struttura del sistema di elaborazione. Il processore e la sua organizzazione interna – Esecuzione ed interpretazione delle istruzioni – Il ciclo fetchdecode-execute – Architetture CISC E RISC – Forme di parallelismo, pipelining, architetture superscalari, architetture multiprocessore. – La memoria centrale, organizzazione interna, ordinamento dei dati – Codici a rilevazione e correzione di errore – Gerarchie di memoria, memorie cache – Dischi magnetici, dischi IDE, EIDE e SCSI – Dischi RAID – Dischi ottici, CD ROM e DVD – Monitors e Diplay Flat-Panel – Terminali a mappa di caratteri e di bit – Stampanti ink-jet e laser – Tastiere e mouse – Modem e linee ISDN – Codifica di caratteri, codici ASCII e UNICODE. ¯ Sistemi di numerazione binaria. Numeri e numerali – Rappresentazioni a precisione finita – Sistemi di numerazione posizionale – Conversioni di base, binario, decimale esadecimale – Rappresentazione degli interi negativi, notazioni in complemento a uno e a due, in eccesso ¾ e relative conversioni – Addizioni e moltiplicazioni fra interi – Rappresentazioni in virgola mobile, overflow, underflow – Addizioni e moltiplicazioni in virgola mobile – Lo standard IEEE 754, numeri denormalizzati – Errore assoluto e relativo ¯ Logica digitale, memorie, microprocessori e bus. Richiami sull’algebra booleana, porte logiche – Circuiti logici di base: multiplexer, decodificatori, comparatori, PLA – I circuiti dell’Unità Aritmetico Logica, latch, flip-flop, registri, shifter, addizionatori – La memoria centrale e la sua organizzazione interna, RAM statiche e dinamiche, ROM, EPROM, memorie flash – Chip di memoria e schede di memoria, SIMM e DIMM – Bus sincroni ed asincroni – Arbitraggio centralizzato e decentralizzato – Controllori di interruzioni – Il microprocessore Pentium II – Il bus ISA del PCI/AT – Il bus PCI, segnali, transazioni, arbitraggio – Il bus USB, specifiche e struttura dei frame – Chip di I/O ¯ Microrchitetture, cache e pipeline. La microarchitettura, il cammino dei dati – Ciclo di esecuzione delle microistruzioni – Accesso alla memoria – Formato delle microistruzioni – La sezione di controllo – Memorie cache, memorie associative pure, a mappa diretta, associative ad insiemi – Gestione della cache in lettura e scrittura – Pipeline e architetture superscalari – Gestione dei salti, previsione statica e dinamica – Esecuzione in-order – Esecuzione out-of-order – Esecuzione speculativa – Microachitettura del Pentium II, unità di fetch-decode, dispatch e retire ¯ Il livello delle istruzioni macchina. Registri, Program Status Word e modello della memoria – Il livello ISA del Pentium II – Formato delle istruzioni – Espansione dei codici operativi – Formato delle istruzioni nel Pentium II – Modalità di indirizzamento – Indirizzamento a stack – Ortogonalità – Gestione dell’I/O, I/O programmato, con interruzioni e DMA – Repertorio di istruzioni del Pentium II – Chiamate di procedura e passaggio dei parametri, gestione dello stack frame – Gestione delle trap e delle interruzioni ¯ Struttura e funzioni del sistema operativo. Il sistema operativo come interfaccia utente e gestore delle risorse – Virtualizzazione delle risorse – La memoria virtuale, traduzione degli indirizzi, tavola delle pagine – Paginazione a richiesta, politiche di rimpiazzamento – Località spaziale e temporale – Memoria virtuale e multiprogrammazione, il controllo del thrashing – Segmentazione, motivazioni, vantaggi, problemi, frammentazione – I/O virtuale, il file system – File sequenziali e ad accesso casuale, indici hash e ISAM – Gestione del disco, lista libera e bitmap – File allocation table, FAT 16 e FAT 32 – Partizionamento di dischi – Organizzazione delle directory in NTFS – Stati di un processo, la gestione della CPU, discipline di scheduling, round-robin. 1 ¯ Traduzione e collegamento di programmi. Linguaggi ad alto livello e linguaggi asseblativi, costi di sviluppo ed efficienza del software – Traduzione ed interpretazione – Compiti del linker, struttura dei moduli oggetto, gestione dei riferimenti esterni, rilocazione – Linking dinamico – Dynamic Link Libraries (DLL) ¯ Programmazione in C. Nelle esercitazioni è stato illustrato il linguaggio C, evidenziando gli aspetti relativi alle operazioni di input/output, alla manipolazione di stringhe, alla gestione di puntatori, alla gestione dei file ed alla allocazione dinamica della memoria. RIFERIMENTI – A.S. Tanembaum, Structured Computer Organization, 4th Ed., Prentice Hall 1999 (disponibile anche nella traduzione italiana). – Darnell-Margolis, C Manuale di Programmazione, Mc Graw Hill 1996. – Materiale distribuito dal docente. Materiale didattico in formato elettronico Testi e soluzioni di esercizi di esame ed altro materiale didattico sono disponibili ai seguenti indirizzi: http://www.dis.uniroma1.it/˜salza/calcolatori.htm http://www.dis.uniroma1.it/˜santucci/didattica.html 2