Appunti Calcolatori Elettronici

Nel documento allegato una serie di appunti tratti dai corsi di Calcolatori Elettronici L-A e Calcolatori Elettronici L-M dell’Università di Bologna, corso di studi in Ingegneria Informatica.

Argomenti trattati

Memorie:

  • Caratteristiche e accesso di una memoria EPROM
  • Caratteristiche e accesso di una memoria RAM
  • Realizzazione della memoria centrale
  • Memorie DRAM e SRAM
  • Tecnologia delle memorie DRAM, accesso, refresh, modo pagina
  • Memorie SDRAM, DDR, DDR2, DDR3
  • Organizzazione in interleaving
Instruction Set:
  • ISA RISC, in particolare DLX
  • ISA CISC, in particolare Intel 8088
Processore DLX:
  • Realizzazione sequenziale e formato delle istruzioni
  • Principi di pipelining e parametri caratteristici
  • Datapath pipelined del DLX
  • Architettura Harvard
  • Alee strutturali
  • Alee di dato e soluzione con Delayed Load, Forwarding Unit e Split Cycle
  • Alee di controllo e riduzione del numero di stalli con retroazioni, delayed branch, previsioni statiche, Branch Target Buffer
Processori 8086/8088:
  • Caratteristiche del bus
  • Indirizzamento completo: segmentazione e calcolo dell’offset
  • Unità di lavoro
  • Cicli di bus di lettura e scrittura
  • Bus multiplexato
  • Segnale di Ready e calcolo degli stati di wait
  • Circuito di clock
  • Circuito di reset
  • IC 8284
  • Gestione I/O: registri di stato, registri di controllo, registri di dato, gestione a polling e a interrupt
Interruzioni:
  • Definizione di interruzione e tipologie: hardware mascherabili e non mascherabili (INT e NMI), eccezioni, interruzioni software (istruzione INT)
  • Trasferimento del controllo vettorizzato e Interrupt Vector Table (IVT)
  • Riconoscimento del tipo di interruzione (ciclo INTA*)
  • Passaggio alla routine di gestione dell’interruzione
  • Istruzione HALT
  • Generazione di un interrupt type
PIC 8259:
  • Caratteristiche generali
  • Registri ISR, IMR, RR, rete di risoluzione priorità
  • Programmazione e configurazione
  • Rete di conversione fronte-livello
  • Configurazione in cascata e utilizzo dei segnali CAS
8255:
  • Generalità e programmazione delle porte
  • Funzionamento in modo 0
  • Funzionamento in modo 1
Hard disk:
  • Generalità di utilizzo e tecnologiche
  • RAID
DMA:
  • Motivazioni e utilità
  • Ciclo speciale HOLD/HOLDA

IC 8237:

  • Modalità di utilizzo e cicli di bus
  • Funzionamento fly by
  • Funzionamento flow through
  • Modi di funzionamento: single transfer mode, demand mode, block mode, cascade mode
  • Programmazione
  • Registri di canale visibili e nascosti
  • Auto Init
  • Bit CBFF (Clear Byte Flip Flop)
  • EOP* open drain
  • Estensione dell’indirizzo
  • Interfacciamento con processori a 8 e 16 bit
Gerarchia delle memorie e paging:
  • Nastri, dischi, memoria centrale, cache, registri
  • Principio di località spaziale e temporale
  • Paginazione ad un livello
  • Paginazione a 2 livelli
  • Dimensione delle pagine
  • Page Fault
  • TLB (Translation Lookhaside Buffer)
  • Tabella delle pagine invertita, con e senza link, eventualmente più vie
Cache:
  • Memoria associativa
  • Terminologia: linea, tag, index, offset, replace, miss, hit
  • Tipologie: full associative, direclty mapped, set-associative a più vie
  • Rimpiazzamento: random, LRU a stack o contatori, Pseudo LRU, FIFO
  • Politiche di Write Miss e Write Hit
  • Cache indirizzate virtualmente, fisicamente o in accesso sovrapposto
  • DLX reale: MIPS, R2000, R3000
  • Parametri dinamici delle cache
  • Accellerazione delle cache e speculazione
  • Tipi di miss: compulsory, capacity, conflict
  • Protocollo MESI con 1 processore e DMA
  • Protocollo MESI con 2 o più processori
  • Protocolli di coerenza Directory Based
Branch Target Buffer:
  • Predizione con 1 o 2 bit
  • Predizione statica
  • Predittore adattativo a 2 livelli
Architetture parallele:
  • Scoreboarding
  • Algoritmo di Tomasulo
  • Algoritmo di Tomasulo con ROB
Pentium I:
  • Generalità e bus
  • Cicli di lettura e snoop cache
  • Segnali di controllo della cache
  • Cicli burst
Evoluzione dei bus:
  • Bus del Pentium II
  • Bus FSB
  • Bus DIB
  • Bus DHSI
Quick Path:
  • Requisiti, terminologia e livelli
  • Performance
  • Tolleranza agli errori
  • Protocollo MESIF
  • Source snooping e home snooping
Evoluzione x86:
  • Registri a 32 bit
  • Descrittore di segmento e tabelle dei segmenti (GDT, LDT)
  • Selettori di segmento e caching dei descrittori
  • Indirizzamento completo
  • Tabelle delle pagine e descrittori di pagina: cacheabilità delle pagine, cronologia di un page fault
  • Registri di sistema: CR0, CR1, CR2, CR3, CR4, IDTR, GDTR, TR, LDTR
  • Sistemi segmentati e impaginati, solo impaginati, solo segmentati
  • Meccanismi e attivazione della protezione: modo reale, livelli di protezione
  • Caricamento dei registri di segmento e accesso ai dati
  • Meccanismi di chiamata a procedura: call, call gate, segmenti di codice conformante, problematiche dei cavalli di Troia, istruzione ARPL
  • Interruzioni x86: cicli di bus, interrupt gate, tabella IDT
  • Task: descrittore di task, descrittore del segmento descrittore del task, task gate, permessi I/0, attivazione di un task, task innestati, cambi di contesto
  • Flags
Architettura P6:
  • Novità strutturali
  • Stadi IF1, IF2, IF3, DEC1, DEC2, RAT, ROB, DIS, EX, RET1, RET2
  • Return Stack Buffer, BTB, MIS (Micro Instruction Sequences)
Pentium IV, Xeon, Centrino:
  • Generalità Pentium IV
  • Trace Cache
  • Hyper Threading
  • XEON
  • Pentium M – Centrino
  • Riduzione dei consumi
  • Loop Detector
  • Indirect Branch Predictor
  • Micro – fusione
Strutture Dual Core:
  • Generalità
  • Estensione a 64 bit
  • Tecnologie di supporto alla virtualizzazione
  • Core Duo
  • Prefetcher intelligente
  • Macro – fusione
  • MOB (Memory Order Buffer)
  • Memory Disambiguation
Nehalem:
  • Processo Tick-Tock
  • Caratteristiche
  • TLB e BTB a due livelli e copertura con la cache L3
  • Cache inclusive ed esclusive e metodologie di snoop
  • TLB taggato
  • Unaligned Check Address
  • Unità di controllo dei consumi e stati C
  • Modalità Turbo

Download

  • [download id=”61″ format=”2″]

Guida di base alla programmazione e al linguaggio Pascal

La guida seguente è una introduzione alla teoria della programmazione imperativa e alle strutture con essa correlate.  La  guida si propone con un taglio molto pratico e orientato alla sperimentazione “sul campo” delle tecniche presentate: per questo motivo è stato scelto un linguaggio ormai obsoleto, ma molto adatto per la presentazione dei costrutti tipici di tutti i linguaggi moderni, il Pascal.

01. La programmazione

In questa prima lezione si analizza il termine programmazione e si spiega cosa sia la progettazione algoritmica, fino ad arrivare a parlare del linguaggio Pascal, della sua utilità e delle sue applicazioni. Viene introdotto il compilatore.

  • Documento: [download id=”48″ format=”2″]

02. Basi sintattiche
In questo primo progetto vengono analizzate le basi del linguaggio Pascal, attraverso un progetto semplice ma efficace. Vengono mostrate la sintassi e la semantica del Pascal, oltre alle regole fondamentali per la scrittura di programmi.

  • Documento: [download id=”49″ format=”2″]

03. L’assegnamento
Questo progetto introduce una struttura fondamentale della programmazione, ossia l’assegnazione di valori alle variabili.

  • Documento: [download id=”50″ format=”2″]

04. Interi
In questo progetto, attraverso il lavoro di calcolo di quoziente e resto di una divisione, si parla diffusamente di variabili di tipo intero, operatori matematici e funzioni legate agli interi.

  • Documento: [download id=”51″ format=”2″]

05. Selezione
Si parla della struttura fondamentale della programmazione, ossia la selezione. Vengono quindi introdotti anche gli operatori relazionali.

  • Documento: [download id=”52″ format=”2″]

06. Iterazione – parte 1
L’iterazione viene introdotta in questo progetto nelle sue due prime forme, ossia quella con condizione a priori e quella con condizioni a posteriori. Si tratta quindi della struttura repeat…until e quella while…do.

  • Documento: 06[download id=”53″ format=”2″]

07. Scelta multipla
La scelta multipla non è una vera e propria struttura in Pascal, ma è comunque importante per eseguire determinati compiti utilizzando meno spazio. In questo progetto si vedrà come utilizzarla attraverso un problema pratico, ossia scrivere in lettere un numero.

  • Documento: [download id=”54″ format=”2″]

08. Iterazione – parte 2
In questo progetto si torna a parlare di iterazione, intrucendo quella enumerativa, ossia la struttura for…to…do e for…downto…do. Viene fatto un piccolo appunto anche sull’importanza di questa struttura nella programmazione moderna.

  • Documento: [download id=”55″ format=”2″]

09. Operatori logici – parte 1
In questa prima parte vengono introdotti gli operatori logici e la loro utilità. In particolare si analizza l’operatore NOT. Si parla di matematica parlando di logica bivalente e si analizza la tabella delle precedenze in Pascal.

  • Documento: [download id=”56″ format=”2″]

10. Operatori logici – parte 2
Questo secondo progetto sugli operatori logici ha come tema centrale lo studio dell’operatore AND.

  • Documento: [download id=”57″ format=”2″]

11. Operatori logici – parte 3
In questa ultima lezione sugli operatori logici si analizzano gli operatori XOR e OR, per concludere analizzando tautologie, contraddizioni ed origine della selezione.

  • Documento: [download id=”58″ format=”2″]

12. Booleani
In questa lezione si analizzano le variabili di tipo booleano e le funzioni ad esse collegate.

  • Documento: [download id=”59″ format=”2″]