Calcolatori Elettronici

AppuntiEsamiEsercizi

Sito del Corso

Professore:
torlone@dia.uniroma3.it

Descrizione del Corso

Il corso di Calcolatori Elettronici (Computer architecture) da 9 CFU del Corso di Laurea in Ingegneria Informatica viene tenuto dal Prof. Riccardo Torlone.
I corsi di Calcolatori Elettronici I (5 CFU) e Calcolatori Elettronici II (5 CFU) dell’ordinamento 509 sono spenti. Gli studenti possono ancora sostenere gli esami di questi corsi nelle date indicate dal Calendario pubblicato sul sito del Collegio Didattico di Ingegneria Informatica e secondo le modalità illustrate nella sezione esami.
L’obiettivo del corso è quello di presentare gli aspetti fondamentali dell’architettura hardware dei calcolatori elettronici, con riferimento ai principi di funzionamento dei microprocessori moderni avvalendosi di casi di studio, evidenziando la relazione esistente fra l’architettura di un calcolatore e il software di base, nonché le tecniche di ottimizzazione adottate dai moderni microprocessori.
The goal of the course is to present the fundamental aspects of the hardware and software architectures of electronic computers. In particular, the working principles of modern microprocessors are discussed using actual case studies, highlighting the relationship between the architecture of a computer and the basic software as well as advanced aspects of computer architectures (such as cloud computing) and optimization techniques adopted by modern microprocessors.
E’ disponibile un gruppo di discussione su Facebook chiamato Calcolatori Elettronici @ Roma Tre. Può essere utilizzato liberamente dagli studenti del corso come forum di discussione sugli argomenti trattati, sugli esercizi e sugli homework.

 

Programma del Corso
Prima parte
  • Introduzione ai calcolatori Elettronici
    • Struttura a livelli dell’organizzazione hardware e software del
      sistema di elaborazione;
    • Breve storia dei calcolatori;
    • Calcolatori odierni e loro evoluzione;
    • Le architetture x86, ARM e AVR.
  • Sistemi di numerazione binaria
    • Numeri binari, sistemi di numerazione posizionale, conversioni di
      base
    • Numeri binari negativi, notazioni in complemento a uno e a due,
      notazione in eccesso 2m
    • Numeri in virgola mobile, lo standard IEEE 754.
  • L’organizzazione di un calcolatore
    • Il processore e la sua organizzazione interna; CISC e RISC; le
      architetture parallele;
    • La memoria centrale e la sua organizzazione interna; codici a
      correzione d’errore; memorie cache;
    • Le gerarchie della memoria; dischi magnetici, IDE, SCSI e RAID;
      dischi ottici e a stato solido; organizzazione dei dati su memoria
      secondaria e modalità di accesso;
    • Architettura dei sistemi di Input/Output, bus, terminali, mouse,
      stampanti e sistemi di comunicazione.
    • Codifica dei caratteri, i codici ASCII e UNICODE.
  • La logica digitale di un calcolatore, i microprocessori e i bus
    • Richiami sull’algebra booleana, porte logiche; implementazione di
      funzioni booleane;
    • I circuiti logici di base; i segnali di clock; i circuiti
      dell’Unità Aritmetico Logica;
    • Latch e flip-flop; l’organizzazione della memoria centrale, chip
      di memoria, RAM e ROM;
    • Bus sincroni ed asincroni; arbitraggio dei bus; gestione delle
      interruzioni;
    • Esempi di architetture di microprocessore, il Core i7,
      l’OMAP4430, l’ATmega168;
    • I bus PCI, PCI Express e USB;
    • I chip di I/O; l’Intel 8255A; decodifica degli indirizzi.
Seconda parte
  • La microarchitettura di un calcolatore
    • La microarchitettura, il cammino dei dati e le microistruzioni;
    • Ottimizzazione di una microarchitettura, aumento dei bus,
      prefetching e pipelining;
    • La memoria cache, memorie associative pure, a mappa diretta,
      associative ad insiemi;
    • Predizione di salti; esecuzione in-order e out-of-order;
      esecuzione speculativa;
    • Microarchitettura del Core i7, dell’OMAP4430, e dell’ATmega168.
  • Il linguaggio macchina di un calcolatore
    • Il livello del linguaggio macchina, memorie, registri, istruzioni
      macchina, i linguaggi macchina nelle architetture x86, ARM, e AVR;
    • Formato delle istruzioni e dei dati, espansione di codici
      operativi; formati delle istruzioni macchina x86, ARM, e AVR;
    • Tipi di indirizzamento, immediato, diretto, a registro,
      indiretto, indicizzato, a stack, 0rtogonalità tra codici operativi e
      tipi di indirizzamento, modalità di indirizzamento nelle istruzioni
      macchina x86, ARM, e AVR;
    • Tipi di istruzioni, movimento di dati, operazioni monadiche e
      diadiche, istruzioni di confronto e di controllo, istruzioni
      macchina x86, ARM, e AVR;
    • Istruzioni di I/O, I/O programmato, interruzioni e DMA;
    • Flusso di esecuzione di istruzioni; procedure, coroutine, trap,
      interruzioni, azioni hardware e software per la gestione delle
      interruzioni;
    • Il linguaggio macchina IA-64 e l’architettura Itanium 2.