Formulario - architettura degli elaboratori
In questa pagina 10
Struttura del calcolatore
Note: Architettura e organizzazione di un calcolatoreDifferenza tra architettura (ciò che vede il programmatore) e organizzazione (come è realizzata); struttura e funzione; le quattro funzioni e i quattro componenti; macchina di von Neumann e IAS; generazioni tecnologiche e legge di Moore.Architettura e organizzazione di un calcolatore → · Ciclo fetch-executeRegistri PC, IR, MAR e MBR; ciclo dell'istruzione diviso in fetch ed execute; i quattro tipi di operazioni; diagramma degli stati del ciclo con calcolo degli indirizzi degli operandi e controllo delle interruzioni; esempio su una macchina ad accumulatore.Ciclo fetch-execute → · Bus e interconnessioneBus di sistema diviso in linee dati, indirizzi e controllo; ampiezza del bus e spazio di indirizzamento; arbitraggio; bus singolo e gerarchie di bus multipli; temporizzazione sincrona e asincrona; interconnessioni punto a punto.Bus e interconnessione →
- Architettura = attributi visibili al programmatore (istruzioni, indirizzamento, I/O); organizzazione = come sono realizzati. Von Neumann: dati e istruzioni nella stessa memoria, indirizzata per posizione, esecuzione in sequenza. Legge di Moore: i transistor per chip raddoppiano ogni 18-24 mesi (4004 nel 1971: circa 2300; 8086 nel 1978: circa 29 000).
Grafico interattivo: Legge di Moore: log10 del numero di transistor per chip con raddoppio ogni 2 anni a partire dai circa 2300 del 4004 (1971); il modello dà circa 26 000 nel 1978, vicino ai circa 29 000 dell'8086
- Fetch: ; ; ; (ARM, MIPS). Poi decodifica ed esecuzione; le interruzioni si controllano tra due istruzioni. Un salto relativo parte dal PC già avanzato.
- Bus: dati a 32 linee 4 byte per ciclo; indirizzi a linee locazioni (24 16 M, 32 4 G); controllo; sincrono (clock comune) o asincrono (handshake).
Rappresentazione dell'informazione
Note: Sistemi di numerazione posizionaliNotazione posizionale in base b; conversioni tra base 10, 2, 8 e 16 per interi (divisioni successive) e per parti frazionarie (moltiplicazioni successive); numeri periodici in binario.Sistemi di numerazione posizionali → · Rappresentazione dei numeri interi con segnoInteri con segno su n bit: modulo e segno, complemento a 1, complemento a 2 ed eccesso K; intervalli rappresentabili, calcolo dell'opposto, estensione del segno.Rappresentazione dei numeri interi con segno → · Aritmetica binariaSomma e sottrazione in binario, overflow per senza segno (riporto) e per complemento a 2 (segni), flag del processore, moltiplicazione per somme e scorrimenti, algoritmo di Booth, divisione, shift logici e aritmetici.Aritmetica binaria → · Numeri in virgola mobile IEEE 754Virgola fissa e virgola mobile; formato IEEE 754 a 32 e 64 bit (segno, esponente in eccesso 127, mantissa con 1 implicito); conversioni svolte nei due versi; valori speciali, denormalizzati, intervallo, precisione e arrotondamento.Numeri in virgola mobile IEEE 754 → · Codifiche binarie e informazione non numericaBit, byte e multipli (potenze di 2 e di 10); codici BCD e Gray; caratteri ASCII, Unicode e UTF-8; ordine dei byte (little e big endian); bit di parità e codice di Hamming per rilevare e correggere errori.Codifiche binarie e informazione non numerica →
- Base : . Con cifre si scrivono numeri; per valori servono bit. Parte intera: divisioni per con resti letti dal basso; frazione: moltiplicazioni per (una frazione è finita in base 2 solo se ). Ottale = 3 bit, esadecimale = 4 bit, raggruppando dalla virgola.
- Con bit: modulo e segno , due zeri; complemento a 1: = bit invertiti, due zeri; complemento a 2: , intervallo , un solo zero, (inverti e somma 1); eccesso : si memorizza . Estensione del segno: si replica il MSB.
Grafico interattivo: Valore rappresentato dai 16 codici a 4 bit (0…15) nelle convenzioni con segno: modulo e segno (1000 = −0), complemento a 1 (1000 = −7), complemento a 2 (1000 = −8) ed eccesso 8 (1000 = 0)
- Somma e sottrazione: , riporto uscente scartato. Overflow senza segno: ; in complemento a 2 (operandi dello stesso segno, risultato di segno opposto; segni diversi: mai overflow). Shift: logico a sinistra ; logico a destra (senza segno); aritmetico a destra replica il segno (complemento a 2).
- Moltiplicazione: bit bit bit; senza segno: se si somma ad e si scorre a destra. Booth: , , niente, poi shift aritmetico a destra. Divisione: si sottrae il divisore dal resto parziale e si ripristina se il resto è negativo.
- IEEE 754: . Singola 1+8+23 bit, bias 127; doppia 1+11+52, bias 1023. : () o denormalizzato ; : () o NaN. Massimo , minimo normalizzato , , distanza tra float consecutivi . Esempio : ,
C1460000. Arrotondamento al più vicino, pari in caso di parità; somma non associativa (); prodotto: . - Codici: BCD 4 bit per cifra; Gray ; ASCII 7 bit (
'0'=48,'A'=65,'a'=97); UTF-8 1-4 byte; little endian per x86 e ARM. Ki , Mi , Gi . - Hamming SEC con dati e controlli: (); controlli in posizione , = XOR dei dati con il bit a 1; sindrome nessun errore, altrimenti è la posizione da invertire. SEC-DED: parità globale in più. Parità: rileva un numero dispari di errori.
Reti logiche
Note: Algebra di Boole e porte logicheVariabili booleane, operatori AND, OR, NOT e derivati (NAND, NOR, XOR, XNOR) con tabelle di verità; assiomi e teoremi dell'algebra di Boole, De Morgan; porte logiche e completezza di NAND e NOR; semplificazione algebrica con esempio.Algebra di Boole e porte logiche → · Reti combinatorie e mappe di KarnaughRete combinatoria (uscite funzione dei soli ingressi attuali); mintermini e maxtermini, forme canoniche SOP e POS; mappe di Karnaugh a 3 e 4 variabili con esempi svolti; condizioni di indifferenza; costo e ritardo di una rete a due livelli.Reti combinatorie e mappe di Karnaugh → · Circuiti combinatori notevoliMultiplexer, decodificatore e codificatore; semisommatore e sommatore completo; sommatore a propagazione del riporto e suo ritardo, idea dell'anticipo del riporto; sommatore-sottrattore in complemento a 2 con rilevazione dell'overflow; comparatore.Circuiti combinatori notevoli → · Latch e flip-flopReti sequenziali e retroazione; latch SR con porte NOR e stato proibito; latch SR e D abilitati dal clock; flip-flop D master-slave sensibile al fronte; flip-flop JK e T; tempi di setup e hold; clock e periodo minimo.Latch e flip-flop → · Reti sequenziali e automi a stati finitiModello di una rete sequenziale sincrona (stato in flip-flop, logica di stato prossimo e di uscita); automi di Moore e di Mealy; procedimento di sintesi con esempio svolto di un riconoscitore della sequenza 11.Reti sequenziali e automi a stati finiti → · Registri e contatoriRegistro parallelo a n bit con caricamento abilitato; banco dei registri con due porte di lettura e una di scrittura; registri a scorrimento; contatori sincroni e asincroni (ripple), contatore modulo N con esempio svolto.Registri e contatori →
- Boole: , assorbimento , distributive doppie, De Morgan , . Completezza di NAND e NOR: , , . XOR .
- Mintermine (AND di tutte le variabili, vale 1 su una riga); SOP = OR dei mintermini con ; maxtermine (OR, vale 0 su una riga); POS = AND dei maxtermini con . Karnaugh: righe e colonne in Gray, gruppi di uni che eliminano variabili; indifferenze (X) usate come 0 o 1.
Grafico interattivo: Mappa di Karnaugh a 3 variabili (celle numerate col mintermine, colonne in codice Gray) per F = Σm(1,3,5,6,7): il gruppo da 4 celle (colonne BC = 01 e 11) dà C, il gruppo da 2 celle (riga A = 1, colonne BC = 11 e 10) dà A·B, quindi F = C + A·B
- MUX 2:1 ; decoder ; semisommatore , ; sommatore completo , ; ripple carry lineare ( porte); anticipo del riporto , , ; sommatore-sottrattore: XOR di con SUB, che è anche il riporto iniziale.
- Latch SR: mantiene, set, reset, proibito. Latch D: trasparente, mantiene. Flip-flop D: sul fronte. JK: ; T: . Periodo minimo ( ps, circa 1,14 GHz).
- Automa a stati finiti: , Moore , Mealy ; flip-flop. Contatore sincrono: , , , ; ha frequenza . Registro a scorrimento: scorrimento o .
Architettura del processore
Note: Struttura interna della CPU e registriComponenti interni della CPU (ALU, unità di controllo, banco dei registri, bus interno); registri visibili all'utente e registri di controllo e stato; flag e parola di stato (PSW) con bit di supervisore; quanti registri conviene avere; segmentazione della memoria.Struttura interna della CPU e registri → · Instruction Set ArchitectureChe cosa definisce un insieme di istruzioni; elementi di un'istruzione; tipi di operandi e di operazioni; macchine a 0, 1, 2 e 3 indirizzi con lo stesso calcolo svolto in ciascuna; architetture load/store.Instruction Set Architecture → · Formato delle istruzioni e modalità di indirizzamentoModalità di indirizzamento (immediato, diretto, indiretto, a registro, indiretto a registro, con spiazzamento, relativo al PC, indicizzato e scalato, a pila) con indirizzo effettivo ed esempi; formati fissi e variabili; i formati R, I e J di MIPS e il formato a 32 bit di ARM con il calcolo dei campi.Formato delle istruzioni e modalità di indirizzamento → · Architetture RISC e CISCMotivazioni del CISC (divario semantico) e dati sull'esecuzione dei programmi; caratteristiche delle architetture RISC; finestre di registri; allocazione dei registri con colorazione di un grafo; confronto e situazione attuale (MIPS, ARM, x86).Architetture RISC e CISC → · L'architettura ARMARM a 32 bit come caso di studio: registri r0-r15 con SP, LR e PC, registro di stato CPSR con flag NZCV, modi del processore, architettura load/store, istruzioni condizionate, secondo operando flessibile, Thumb; differenze principali con ARMv8 a 64 bit.L'architettura ARM →
| Modo | Indirizzo effettivo EA | Accessi |
|---|---|---|
| Immediato | operando | 0 |
| Diretto | 1 | |
| Indiretto | 2 | |
| A registro | operando | 0 |
| Indiretto a registro | 1 | |
| Spiazzamento | 1 | |
| Relativo al PC | 1 | |
| Indicizzato scalato | 1 |
- Numero di indirizzi per : 3 (SUB, MUL, ADD, DIV), 2 (la destinazione coincide col primo operando), 1 (accumulatore), 0 (pila con PUSH e POP). Meno indirizzi: istruzioni più corte ma più numerose.
- Registri: più registri riducono gli accessi alla memoria ma servono più bit per indicarli () e più stato da salvare. PSW (CPSR in ARM): flag N, Z, C, V, interruzioni, bit di supervisore.
- RISC: un'istruzione per ciclo a regime, solo load e store accedono alla memoria, formato fisso, molti registri, controllo cablato; CISC: istruzioni complesse e di lunghezza variabile, microprogrammato. MIPS: formato R op(6) rs(5) rt(5) rd(5) shamt(5) funct(6); I op(6) rs(5) rt(5) immediato(16); J op(6) indirizzo(26).
- ARM (A32, 32 bit):
r0-r3argomenti e ritorno,r4-r11variabili preservate,r12IP,r13SP,r14LR,r15PC (letto vale istruzione ); CPSR con N, Z, C, V nei bit 31-28; little endian, load/store. Formato elaborazione dati: cond(4), 00, I(1), opcode(4), S(1), Rn(4), Rd(4), operando 2 (12); costante immediata di 8 bit ruotata di un numero pari di posizioni.
Programmazione assembly ARM
Note: Istruzioni ARM di elaborazione datiIstruzioni aritmetiche (ADD, SUB, RSB, ADC), logiche (AND, ORR, EOR, BIC, MVN), di spostamento (MOV), moltiplicazione (MUL, MLA); secondo operando immediato o registro scalato con LSL, LSR, ASR, ROR; aggiornamento dei flag con S, CMP e TST; esempi di traduzione di espressioni C.Istruzioni ARM di elaborazione dati → · Istruzioni ARM di accesso alla memoriaLDR e STR per parole, byte e mezze parole con e senza segno; modalità di indirizzamento con offset immediato o registro scalato, pre-indicizzata con write-back e post-indicizzata, con esempi di indirizzo effettivo; caricamento di indirizzi e costanti; LDM e STM.Istruzioni ARM di accesso alla memoria → · Strutture di controllo in assembly ARMSalti B e condizionati, codici di condizione con e senza segno; traduzione di if, if-else, while, for e do-while da C ad ARM; esecuzione condizionata per eliminare salti brevi; switch con tabella di salto.Strutture di controllo in assembly ARM → · Stack e chiamata di funzioni in ARMChiamata con BL e ritorno con BX LR; convenzione di chiamata AAPCS (argomenti in r0-r3, risultato in r0, registri da preservare r4-r11); stack discendente pieno con PUSH e POP; record di attivazione; funzioni foglia e non foglia; esempio ricorsivo del fattoriale con evoluzione dello stack.Stack e chiamata di funzioni in ARM → · Array e strutture dati in assembly ARMArray in memoria e calcolo dell'indirizzo di un elemento; scorrimento con indice o con puntatore; esempi svolti (somma, massimo, copia); stringhe terminate da zero e calcolo della lunghezza; matrici per righe; struct con offset dei campi e allineamento.Array e strutture dati in assembly ARM → · Dal programma C all'eseguibile ARMCatena di traduzione compilatore, assemblatore, linker e loader; file oggetto, tabella dei simboli e rilocazione; collegamento statico e dinamico; organizzazione della memoria di un processo; chiamare funzioni assembly da C e viceversa, con esempio.Dal programma C all'eseguibile ARM →
| Gruppo | Istruzioni |
|---|---|
| Aritmetiche | ADD, SUB, ADC (), SBC, RSB (), MUL Rd,Rm,Rs (solo registri), MLA, UMULL, SMULL |
| Logiche | AND, ORR, EOR, BIC (azzera i bit), MOV, MVN |
| Confronto | CMP (), CMN, TST (AND), TEQ (XOR): aggiornano i flag senza salvare il risultato |
| Scorrimenti | LSL, LSR, ASR, ROR nel secondo operando (barrel shifter) |
| Memoria | LDR/STR parola, LDRB/STRB byte, LDRSB byte con segno, LDRH/STRH mezza parola, LDM/STM, PUSH/POP |
| Salti | B, B{cond}, BL (salva in LR), BX LR |
- Forma
OP{cond}{S} Rd, Rn, Operando2: il suffissoSaggiorna i flag. Moltiplicazioni per costante:ADD r0,r1,r1,LSL #2;RSB r0,r1,r1,LSL #3. Bit 3 dir0:ORR r0,r0,#8imposta,BIC r0,r0,#8azzera,EOR r0,r0,#8inverte. - Indirizzamento della memoria con
r1=0x1000,r2=3:[r1,#8]0x1008;[r1,r2,LSL #2]0x100C; pre-indicizzato[r1,#4]!accede e poi aggiornar1; post-indicizzato[r1],#4accede ar1e poi lo aggiorna.LDR r0,=etichettacarica l'indirizzo.
| Condizione | Significato (flag) | Tipo |
|---|---|---|
EQ, NE |
, | uguaglianza |
GT, GE, LT, LE |
, , , | con segno |
HI, HS, LO, LS |
, , , | senza segno |
MI, PL, VS, VC |
, , , | flag singoli |
- Costrutti: if-else con
CMP,BNE,B fineoppure esecuzione condizionata (ADDEQ,SUBNE); cicloforall'indietro conSUBS r0,r0,#1eBNE ciclo; massimoCMP r0,r1eMOVLT r0,r1. I confronti tra indirizzi usanoBHS/BLO. - Funzioni (AAPCS): argomenti in
r0-r3(caller-saved), risultato inr0,r4-r11callee-saved, stack discendente pieno e allineato a 8 byte;PUSH {r4,lr}STMDB sp!,{r4,lr}ePOP {r4,pc}ritorna. Una funzione non foglia salvalr. Fattoriale ricorsivo: 8 byte di stack per livello. - Array: elemento a ;
LDR r3,[r1,r2,LSL #2]. Matrice per righe: . Stringa: byte terminati da 0. Struttura con campi allineati:{char; int; int}ha offset 0, 4, 8 e dimensione 12. - Dal C all'eseguibile: preprocessore, compilatore (
.s), assemblatore (.o), linker (simboli esterni e rilocazione), loader. Memoria di un processo dal basso: testo, dati statici, heap (cresce in alto), stack (cresce in basso).
Organizzazione del processore
Note: Unità aritmetico-logica (ALU)Ruolo dell'ALU, ingressi, uscite e flag; ALU a 1 bit con AND, OR e sommatore selezionati da un multiplexer; estensione a 32 bit, sottrazione, confronto set-less-than e rilevazione dello zero e dell'overflow; tabella dei segnali di controllo; unità di moltiplicazione e virgola mobile.Unità aritmetico-logica (ALU) → · Datapath e microarchitetturaMicroarchitettura come realizzazione dell'ISA; elementi del datapath (PC, memoria istruzioni e dati, banco dei registri, ALU, estensione del segno, multiplexer); percorso di un'istruzione aritmetica, di una load, di una store e di un salto; datapath a ciclo singolo e suo periodo di clock; datapath multiciclo.Datapath e microarchitettura → · Unità di controlloCompiti dell'unità di controllo e micro-operazioni; segnali di controllo del datapath con tabella per le classi di istruzioni; controllo cablato (combinatorio o a stati finiti) e controllo microprogrammato (memoria di controllo, microistruzioni orizzontali e verticali); confronto.Unità di controllo →
- ALU a bit: ALU a 1 bit con riporti in cascata; sottrazione con Binvert e ; ; . In ARM, dopo una sottrazione, significa nessun prestito ( senza segno).
- Datapath: PC, memoria istruzioni, sommatore PC, banco dei registri, estensione del segno, ALU, memoria dati, multiplexer (ALUSrc, MemtoReg, RegDst, PCSrc). Salto: se Zero, PC PCoffset.
- Ciclo singolo: periodo = istruzione più lenta; con memoria 200 ps, registri 100 ps, ALU 200 ps: aritmetica 600, load 800, store 700, salto 500 ps, periodo 800 ps (1,25 GHz). Multiciclo: clock dettato dal passo più lento (200 ps): aritmetica 4 cicli, load 5, store 4, salto 3.
| Istruzione | RegDst | ALUSrc | MemtoReg | RegWrite | MemRead | MemWrite | Branch |
|---|---|---|---|---|---|---|---|
| Aritmetica | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
| Load | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
| Store | X | 1 | X | 0 | 0 | 1 | 0 |
| Salto | X | 0 | X | 0 | 0 | 0 | 1 |
- Unità di controllo: cablata (veloce, RISC) o microprogrammata (memoria di controllo, microistruzioni orizzontali o verticali; CISC).
Gerarchia delle memorie
Note: Gerarchia di memoria e principio di localitàCaratteristiche delle memorie (posizione, capacità, unità di trasferimento, metodo di accesso, prestazioni, volatilità); compromesso costo-capacità-velocità e gerarchia a livelli; località temporale e spaziale con esempi; hit, miss e tempo medio di accesso con calcolo svolto.Gerarchia di memoria e principio di località → · Memoria cacheBlocchi, linee ed etichette; scomposizione dell'indirizzo; associazione diretta, completamente associativa e associativa a insiemi con calcolo dei campi; politiche di rimpiazzo (LRU, FIFO, casuale); politiche di scrittura (write-through, write-back con bit sporco, write-allocate); dimensione del blocco; cache multilivello e separate; come ridurre i miss; quesiti sui campi dell'indirizzo.Memoria cache → · Memoria principale a semiconduttoreCella di memoria e operazioni; RAM dinamica (condensatore, refresh) e statica (flip-flop), confronto; ROM, PROM, EPROM, EEPROM e flash; organizzazione dei chip e dei moduli con calcolo di linee di indirizzo e numero di chip; DRAM sincrona e DDR; errori e codici di correzione.Memoria principale a semiconduttore → · Memoria esterna - dischi, RAID e memorie otticheDisco magnetico (piatti, facce, tracce, settori, cilindri); tempo di accesso come somma di posizionamento, latenza rotazionale e trasferimento, con formule ed esempio; algoritmi di scheduling FCFS, SSTF e ascensore; livelli RAID da 0 a 6; SSD; CD, DVD e nastri.Memoria esterna - dischi, RAID e memorie ottiche → · Memoria virtualeIndirizzi virtuali e fisici, pagine e frame; traduzione con la tabella delle pagine e calcolo dei campi; page fault e sostituzione delle pagine; TLB e tempo di accesso effettivo; protezione e condivisione; confronto con la cache.Memoria virtuale →
- Località temporale e spaziale. Tempo medio con hit rate : ( ns, ns, ns); due livelli .
Grafico interattivo: Tempo medio di accesso T_medio = T₁ + (1 − h)·T₂ con T₁ = 1 ns (cache) e T₂ = 100 ns (memoria) in funzione dell'hit rate h: 6 ns con h = 0,95, 2 ns con h = 0,99, 100 ns senza cache
- Cache con blocchi di parole e linee: diretta linea (tag, linea, parola); completa (tag confrontato con tutte); a vie insiemi, insieme . , , parola , set , etichetta (24 bit, linee, blocchi da 4 B: tag 8, linea 14, parola 2). Rimpiazzo LRU, FIFO, LFU, casuale; write-through o write-back (bit sporco, si riscrive l'intero blocco); miss obbligatori, di capacità, di conflitto.
- RAM: DRAM (condensatore, refresh, lettura distruttiva) e SRAM (flip-flop, cache). Chip : linee di indirizzo; 1 MB con chip : 8 chip per banco, 4 banchi, 32 chip, decoder 24 sui 2 bit alti.
- Disco: , , (7200 giri/min: ms, latenza ms; 64 KB su tracce da 256 KB: ms; con seek 8,5 ms ms). Scheduling FCFS, SSTF, ascensore. RAID 0 striping, 1 mirroring, 3 e 4 parità dedicata, 5 parità distribuita, 6 doppia ridondanza.
Grafico interattivo: Tempo di accesso al disco a 7200 giri/min (T_giro = 8,33 ms, latenza 4,17 ms) con seek 8,5 ms e tracce da 256 KB, in funzione dei KB trasferiti: T = T_seek + T_giro/2 + (D/256 KB)·T_giro; per 64 KB vale 14,75 ms
- Memoria virtuale: indirizzo = numero di pagina + offset ( pagina, invariato); virtuali 32 bit, fisici 30 bit, pagine da 4 KB: offset 12, pagina 20, frame 18 bit. Tabella delle pagine (validità, frame, protezione, riferimento, sporco):
0x00403A7Ccon frame0x1F20x1F2A7C; voci da 4 B MB, quindi più livelli. TLB: cache delle traduzioni ( ns contro 200 ns). Page fault = miss, con write-back.
Sistemi di input/output
Note: Moduli di input-output e input-output programmatoPerché servono i moduli di I/O; funzioni del modulo (controllo, comunicazione, buffer, errori) e registri di stato, controllo e dati; I/O mappato in memoria e isolato con esempi; I/O programmato con attesa attiva e suo costo; confronto delle tre tecniche.Moduli di input-output e input-output programmato → · InterruptClassi di interruzioni; I/O guidato da interrupt; sequenza hardware e software di gestione con salvataggio del contesto sullo stack; identificazione della sorgente (linee multiple, polling, daisy chain, vettore); priorità e interruzioni annidate; eccezioni e modi in ARM.Interrupt → · Accesso diretto alla memoria (DMA)Modulo DMA e informazioni che riceve dalla CPU; trasferimento a blocco con un solo interrupt finale; furto di cicli e modalità a burst, punti in cui la CPU può essere sospesa; configurazioni del bus; canali e processori di I/O; confronto quantitativo con l'I/O a interrupt.Accesso diretto alla memoria (DMA) →
- I/O mappato in memoria (stesse load/store, consuma indirizzi) o isolato (
IN,OUT). Programmato: polling del registro di stato (attesa attiva: con istruzioni/s e 1000 caratteri/s circa un milione di istruzioni per carattere), poi trasferimento. - Interrupt: la CPU finisce l'istruzione, salva PC e PSW sullo stack (, più registri), carica nel PC l'indirizzo della routine, poi ripristina; priorità con polling, daisy chain o arbitraggio. ARM: modi IRQ, FIQ, Supervisor, ritorno
SUBS pc, lr, #4. - DMA: la CPU programma indirizzo iniziale e numero di parole, il modulo trasferisce una parola alla volta (indirizzo , contatore ) e invia un solo interrupt; furto di cicli o burst. 4 KB = 1024 parole: interrupt cicli, DMA cicli.
Tecniche avanzate di progettazione
Note: PipelineIdea della catena di montaggio; pipeline a 5 stadi IF, ID, EX, MEM, WB; tempo di ciclo, tempo per n istruzioni in una pipeline a k stadi e speedup con esempi svolti; registri di pipeline; scrittura e lettura dei registri nello stesso ciclo; limiti (stadi sbilanciati, hazard).Pipeline → · Hazard nella pipelineHazard strutturali, sui dati e sul controllo; dipendenze RAW, WAR e WAW; stalli e bolle con diagrammi; data forwarding (bypass) e caso load-use; riordino delle istruzioni da parte del compilatore e dell'hardware; costo dei salti.Hazard nella pipeline → · Branch predictionTecniche per gli hazard sul controllo: stallo, flussi multipli, prelievo anticipato del bersaglio, loop buffer, salto ritardato; predizione statica e dinamica con bit di storia, predittore a 1 e a 2 bit con esempio su un ciclo, tabella dei bersagli (BTB); costo di una predizione errata.Branch prediction → · Processori superscalari e multicoreParallelismo a livello di istruzione: processori superscalari, esecuzione fuori ordine, ridenominazione dei registri contro WAR e WAW, speculazione; limiti dell'ILP e della frequenza (consumo); multithreading, multicore e coerenza delle cache; acceleratori.Processori superscalari e multicore →
- Pipeline a 5 stadi: IF, ID, EX, MEM, WB, con registri di pipeline tra gli stadi. , , (, : ). Stadi 200, 100, 200, 200, 100 ps con : ps, . Con stalli: . La latenza della singola istruzione non diminuisce.
Grafico interattivo: Speedup ideale della pipeline S = n·k/(k + n − 1) in funzione del numero n di istruzioni per k = 3, 5 e 10 stadi: tende a k per n grande (k = 5, n = 100: 4,8)
- Hazard strutturali (cache separate, banco registri scritto nella prima metà del ciclo e letto nella seconda). Hazard sui dati: RAW (J legge ciò che I scrive), WAR, WAW; senza forwarding
lwseguita daadddipendente costa 2 stalli; con forwarding nessuno stallo per le aritmetiche, 1 stallo nel load-use. Riordino statico o dinamico. - Hazard di controllo: un salto preso butta 2 istruzioni; con 15% condizionati (60% presi) e 1% incondizionati: stalli , . Predizione statica (sempre non preso, per direzione) o dinamica: 1 bit (due errori per ciclo), 2 bit (si cambia dopo due errori consecutivi); ciclo con 9 presi e 1 non preso: 80% con 1 bit, 90% con 2 bit; BTB; il delay slot è sempre eseguito.
- Superscalare: più istruzioni per ciclo (CPI limite ), esecuzione fuori ordine con ritiro in ordine, ridenominazione dei registri contro WAR e WAW; multicore e coerenza delle cache (MESI); power wall .
Valutazione delle prestazioni
- Prestazioni ; , (aritmetiche 50% a 1, load 20% a 5, store 10% a 3, salti 20% a 2: ). , non confrontabile tra ISA diverse; istruzioni, , 2 GHz: s.
- Legge di Amdahl: (, : , limite ; su 8 core: , limite 10). Benchmark SPEC: media geometrica dei rapporti.
Grafico interattivo: Legge di Amdahl S = 1/((1 − F) + F/s) in funzione del miglioramento s della frazione F (asse logaritmico): F = 0,4 non supera 1,67 e con s = 10 vale 1,56; F = 0,9 non supera 10 e con 8 core vale 4,7
Versione ripasso
- Complemento a 2: , intervallo ; (Rappresentazione dei numeri interi con segnoInteri con segno su n bit: modulo e segno, complemento a 1, complemento a 2 ed eccesso K; intervalli rappresentabili, calcolo dell'opposto, estensione del segno.Rappresentazione dei numeri interi con segno →).
- Overflow: senza segno ; con segno ; (Aritmetica binariaSomma e sottrazione in binario, overflow per senza segno (riporto) e per complemento a 2 (segni), flag del processore, moltiplicazione per somme e scorrimenti, algoritmo di Booth, divisione, shift logici e aritmetici.Aritmetica binaria →).
- IEEE 754: , bias 127 (singola) e 1023 (doppia) (Numeri in virgola mobile IEEE 754Virgola fissa e virgola mobile; formato IEEE 754 a 32 e 64 bit (segno, esponente in eccesso 127, mantissa con 1 implicito); conversioni svolte nei due versi; valori speciali, denormalizzati, intervallo, precisione e arrotondamento.Numeri in virgola mobile IEEE 754 →).
- Hamming: (Codifiche binarie e informazione non numericaBit, byte e multipli (potenze di 2 e di 10); codici BCD e Gray; caratteri ASCII, Unicode e UTF-8; ordine dei byte (little e big endian); bit di parità e codice di Hamming per rilevare e correggere errori.Codifiche binarie e informazione non numerica →).
- Boole: De Morgan ; (Algebra di Boole e porte logicheVariabili booleane, operatori AND, OR, NOT e derivati (NAND, NOR, XOR, XNOR) con tabelle di verità; assiomi e teoremi dell'algebra di Boole, De Morgan; porte logiche e completezza di NAND e NOR; semplificazione algebrica con esempio.Algebra di Boole e porte logiche →).
- Flip-flop: (Latch e flip-flopReti sequenziali e retroazione; latch SR con porte NOR e stato proibito; latch SR e D abilitati dal clock; flip-flop D master-slave sensibile al fronte; flip-flop JK e T; tempi di setup e hold; clock e periodo minimo.Latch e flip-flop →).
- Indirizzamento: diretto , indiretto , spiazzamento , relativo al PC (Formato delle istruzioni e modalità di indirizzamentoModalità di indirizzamento (immediato, diretto, indiretto, a registro, indiretto a registro, con spiazzamento, relativo al PC, indicizzato e scalato, a pila) con indirizzo effettivo ed esempi; formati fissi e variabili; i formati R, I e J di MIPS e il formato a 32 bit di ARM con il calcolo dei campi.Formato delle istruzioni e modalità di indirizzamento →).
- ARM:
r13SP,r14LR,r15PC;CMP/TSTaggiornano N, Z, C, V;LT,LO(Strutture di controllo in assembly ARMSalti B e condizionati, codici di condizione con e senza segno; traduzione di if, if-else, while, for e do-while da C ad ARM; esecuzione condizionata per eliminare salti brevi; switch con tabella di salto.Strutture di controllo in assembly ARM →). - Funzioni ARM: argomenti in
r0-r3,r4-r11callee-saved,PUSH {r4,lr}ePOP {r4,pc}(Stack e chiamata di funzioni in ARMChiamata con BL e ritorno con BX LR; convenzione di chiamata AAPCS (argomenti in r0-r3, risultato in r0, registri da preservare r4-r11); stack discendente pieno con PUSH e POP; record di attivazione; funzioni foglia e non foglia; esempio ricorsivo del fattoriale con evoluzione dello stack.Stack e chiamata di funzioni in ARM →). - Cache: ; , , etichetta (Memoria cacheBlocchi, linee ed etichette; scomposizione dell'indirizzo; associazione diretta, completamente associativa e associativa a insiemi con calcolo dei campi; politiche di rimpiazzo (LRU, FIFO, casuale); politiche di scrittura (write-through, write-back con bit sporco, write-allocate); dimensione del blocco; cache multilivello e separate; come ridurre i miss; quesiti sui campi dell'indirizzo.Memoria cache →).
- Disco: (Memoria esterna - dischi, RAID e memorie otticheDisco magnetico (piatti, facce, tracce, settori, cilindri); tempo di accesso come somma di posizionamento, latenza rotazionale e trasferimento, con formule ed esempio; algoritmi di scheduling FCFS, SSTF e ascensore; livelli RAID da 0 a 6; SSD; CD, DVD e nastri.Memoria esterna - dischi, RAID e memorie ottiche →).
- Memoria virtuale: offset invariato; voci da 4 B MB (Memoria virtualeIndirizzi virtuali e fisici, pagine e frame; traduzione con la tabella delle pagine e calcolo dei campi; page fault e sostituzione delle pagine; TLB e tempo di accesso effettivo; protezione e condivisione; confronto con la cache.Memoria virtuale →).
- Pipeline: , (PipelineIdea della catena di montaggio; pipeline a 5 stadi IF, ID, EX, MEM, WB; tempo di ciclo, tempo per n istruzioni in una pipeline a k stadi e speedup con esempi svolti; registri di pipeline; scrittura e lettura dei registri nello stesso ciclo; limiti (stadi sbilanciati, hazard).Pipeline →).
- Salti: stalli , (Hazard nella pipelineHazard strutturali, sui dati e sul controllo; dipendenze RAW, WAR e WAW; stalli e bolle con diagrammi; data forwarding (bypass) e caso load-use; riordino delle istruzioni da parte del compilatore e dell'hardware; costo dei salti.Hazard nella pipeline →).
- CPU time: ; Amdahl (Prestazioni di un calcolatoreTempo di risposta e throughput; equazione del tempo di CPU con numero di istruzioni, CPI e clock, esempi svolti; CPI medio per classi di istruzioni; MIPS e MFLOPS e loro limiti; legge di Amdahl con esempi; benchmark e media geometrica; come hardware e software influenzano ciascun fattore.Prestazioni di un calcolatore →).