Parte III Logica Digitale, Memorie, Microprocessori e Bus Calcolatori Elettronici(5 crediti), Prof. S. Salza a.a. 00-01 III.1 Circuiti Digitali i1 INGRESSI in CIRCUITO DIGITALE o1 USCITE om • Circuiti elettronici i cui ingressi e le cui uscite assumono solo due livelli • Al circuito sono associate le funzioni che calcolano le uscite a partire dagli ingressi o1 = f1( i1,….,in ) .. . om = fm( i1,….,in ) III.2 Semiaddizionatore (Half Adder) • Circuito a 2 ingressi e 2 uscite: somma e riporto (carry) • Non può essere usato per la somma di numerali a più bit, dove occorre sommare anche il riporto della cifra precedente III.3 Addizionatore Completo (Full Adder) III.4 • Circuito a 3 ingressi e 2 uscite • Riceve il riporto dalla cifra precedente ALU a 1 bit (bit slice) • A e B sono bit omologhi degli operandi • F0 e F1 selezionano la funzione (00: AND), (01: OR), (10: NOT), (11: SUM) • ENA ed ENB sono segnali di enable • INVA permette di negare A • Default ENA=ENB=1 e INVA=0 III.5 ALU ad n bit III.6 • Realizzata connettendo n ALU ad 1 bit (bit slices) • Problema: propagazione dei riporti • Ciascuno stadio deve attendere il riporto dal precedente • Tempo di addizione lineare con n • INC incrementa la somma di 1 (A+1, A+B+1) Latch e Flip-Flop a) b) • I Latch commutano sui livelli del clock ( a) alto, b) basso) a) b) • I Flip-Flop commutano sui fronti del clock: a) Commuta sul fronte di salita b) Commuta sul fronte di discesa III.7 Registri • I Flip-Flop sono gli elementi base di memorizzazione nel computer • Molti Flip-Flop possono essere messi su un unico chip • Occorrono in genere da 6 a 10 transistor per ogni Flip-Flop III.8 Organizzazione della Memoria III.9 Dispositivi a 3 stati • In base ad un segnale di controllo C si comporta: (b) C=1: come circuito chiuso (c) C=0: come circuito aperto • Tempo di commutazione: pochi nsec • Consente di usare gli stessi piedini sia per la lettura che per scrittura • Usato anche per la connessione ai bus e a qualsiasi linea bidirezionale III.10 Chip di Memoria CS n× m OE ……. CHIP DI MEMORIA log2 n LINEE INDIRIZZO WE ……. m LINEE DATI IN/OUT • Chip da n × m bit complessivi • m linee dati bidirezionali • log2 n linee di indirizzo • Segnali di controllo: – CS (Chip Select) – OE (Output Enable) – WE (Write Enable) Problema: numero limitato di piedini del contenitore III.11 Matrice di selezione log2n 1/2 log2n 1/2 log2n = log2 √ n DECODER 1/2 log n → √ n DECODER 1/2 log n → √ n • Si risparmia nella complessità della logica di decodifica • Un decoder m → 2m richiede 2m porte AND ES – 4M parole → 22 linee – 1 decoder a 22 → 4M porte AND – 2 decoder a 11 → 2⋅211= 4k porte AND III.12 Chip di Memoria (Esempi) III.13 • RAS (Row Address Strobe), CAS (Column Address Strobe) • Indirizzi di riga e di colonna multiplexati sugli stessi piedini Schede di Memoria III.14 • La scheda memorizza parole di n byte • Si usano n+1 se si vuole il controllo di parità • Bit di parità gestito dal controller della memoria SIMM da 16 Mbyte (8 chip da 4M × 4 bit) IND 2-23 22 R/W CS0 CS1 CS2 CS3 4M × 4 4M × 4 4 4 .... 4M × 4 4 4 8 8 III.15 4 x 8 bit Organizzazione della memoria • SIMM (Single Inline Memory Module) – 72 piedini, 32 bit, 8-16 chip, 32 MByte – A coppie nel Pentium (bus dati 64 bit) • DIMM (Double Inline Memory Module) – 168 piedini, 64 bit, 16 chip, 128 MByte • Il controller gestisce più SIMM (o DIMM) • Ogni SIMM informa il controller della sua dimensione (segnali su certi piedini) • Il controller determina al momento del boot il tipo di RAM (e.g. EDO) • Dall’indirizzo e dalla configurazione il controller calcola a quale SIMM mandare il segnale di Chip Select III.16 Tassonomia delle RAM e ROM • RAM (Random Access Memory) • ROM (Read Only Memory) • SRAM (Static RAM): a Flip-Flop, molto veloce (~5nsec) • DRAM (Dynamic RAM): basata su capacità parassite; richiede refresh, alta densità, basso costo (~70 nsec) – FPM: selezione a matrice – EDO: (Extended Data Output) lettura in pipeline, più banda • SDRAM (Synchronous DRAM) – Sincrona, prestazioni migliori • PROM (Programmable ROM) • EPROM (Erasable PROM) raggi UV • EEPROM: cancellabile elettricamente • Flash Memory: tipo di EEPROM, ciclo 100nsec, max 10.000 riscritture III.17 Tipi di RAM e di ROM e loro impieghi III.18 Refresh nelle DRAM • Necessario rinfrescare, cioè riscrivere, tutta la DRAM con periodo T • Possibile scrivere in un solo ciclo una riga o una colonna • Refresh simultaneo di tutti i chip e tutte le schede ES – T : periodo di refresh – n : dimensione (4 ms) (4MB) – τ : durata ciclo refresh (40ns) – η : overhead η=(√ n⋅ τ) / T η=(2048 ⋅ 40 ⋅10-9) / (4 ⋅10-3)≈2% III.19 Pinout Logico del µP • Indirizzamento • Dati • Controllo – Controllo del ciclo di bus – Gestione delle interruzioni – Arbitraggio del bus – Gestione del coprocessore – Segnalazione di stato – Vari (alimentazione etc.) III.20 Architettura a più Bus • Diversi bus, interni ed esterni al chip • Soddisfano diverse esigenze: – Velocità di trasferimento – Numero di linee – Più trasferimenti paralleli – Compatibilità all’indietro • Nei primi PC c’era un unico bus • Negli attuali PC almeno tre bus esterni III.21 Comunicazione sul Bus • La comunicazione sul bus è regolata da un protocollo di bus • In ciascun ciclo comunicano due soli dispositivi il master e lo slave • Lo stesso dispositivo può avere ruoli diversi a seconda dei casi • I dispositivi sono connessi al bus tramite un bus transceiver • La connessione al bus avviene tramite dispositivi a tre stati oppure è di tipo open collector III.22 ‘Larghezza’ del Bus • Larghezza = numero di linee • Linee dati: banda di trasferimento • Linee indirizzo: dimensione dello spazio (di memoria) indirizzabile, 2n locazioni con n bit di indirizzo Problema: al crescere del numero di linee aumenta il bus skew (differenza nella velocità di propagazione dei segnali Soluzione: multiplexamento di più segnali sulla stessa linea III.23 Segnali asseriti e negati • In alcuni casi ( a seconda delle scelte di progetto) un segnale provoca l’azione corrispondente quando la sua tensione è alta, in altri quando è bassa • Per evitare confusione si parla di: – Segnale asserito: quando assume il valore che provoca l’azione – Segnale negato: altrimenti • Si adotta la seguente notazione: – S: segnale che è asserito alto – S: segnale che è asserito basso • Ulteriore notazione (usata da Intel): – S: segnale che è asserito alto – S#: segnale che è asserito basso ( adatta al set di caratteri ASCII) III.24 Bus Sincroni: ciclo di lettura T=25 nsec • Tutte le azioni avvengono sui fronti • Se la memoria mantiene asserito WAIT il ciclo si prolunga III.25 Bus Sincrono: Temporizzazione ES • Frequenza 40 MHz, periodo 25 nsec • Tempo a disposizione della memoria fra: a) la comparsa dell’indirizzo sul Bus b) la disponibilità dei dati sul Bus τ1 = 2.5⋅T-TAD-TDS = 62.5-16 = 46.5 nsec • Tempo a disposizione della memoria fra: a) l’asserzione di MREQ e RD b) la disponibilità dei dati sul Bus τ2 = 2⋅T-TM-TDS = 50-13 = 37 nsec • Una memoria da 40 nsec ce la fa di sicuro • Altrimenti mantiene asserito il segnale di WAIT, per introdurre stati di wait, cioè cicli di bus addizionali III.26 Bus Asincrono: ciclo di lettura • Accoppiamento di dispositivi con velocità diverse • Gli eventi avvengono in risposta ad altri eventi (rapporto di causa ed effetto) FULL HANDSHAKE 1) MSYN asserito 2) SSYN asserito in risposta a MSYN 3) MSYN negato in risposta a SSYN 4) SSYN negato in risposta a ¬MSYN III.27 Arbitraggio del Bus • Permette di decidere quale dispositivo sarà il prossimo Bus Master risolvendo eventuali conflitti • Spesso l’arbitro è nel chip del µP • Linea di richiesta condivisa • Il Bus grant è propagato dall’arbitro poco prima dell’inizio del ciclo • Viene intercettato dal futuro master NB Favoriti i dispositivi situati vicino all’arbitro III.28 Livelli Multipli di priorità • Diverse linee di richiesta associate a diversi livelli di priorità • In caso di conflitto favorite le catene a priorità più alta • All’interno di ciascuna catena vale la posizione • In genere se c’è un solo bus con anche la memoria la CPU ha priorità più bassa dei dispositivi di I/O (e.g. dischi) III.29 Arbitraggio Decentralizzato • Quando un dispositivo vuole il Bus: 1) Se Bus Request è asserito attende 2) Appena Bus Request è libero lo asserisce (lo possono fare in tanti) 3) Appena Busy è libero nega Out 4) Attende τ (che la linea sia stabile) 5) Aspetta di vedere se riceve In 6) Se e quando riceve In asserisce Busy e nega Bus Request • Non necessita di arbitro, è più semplice e più veloce III.30 Block Transfers • Permette di leggere più parole consecutive • Usato per trasferire blocchi di cache • Numero di parole specificato durante T1 • Dopo la prima viene trasferita una word ogni ciclo (invece di una ogni tre cicli) • Per leggere quattro word occorrono 6 cicli invece di 12 • Il segnale BLOCK viene asserito per chiedere un block transfer III.31 Gestione delle Interruzioni • Chip controllore di interruzioni Intel 8259A usato dal PC IBM e successori • Gestisce 8 linee di interrupt – INT: interruzione inviata alla CPU – INTA: aknowledge della CPU – Vettore di Interrupt passato sul Bus – IR0-IR7: linee di interrupt sul Bus • Il vettore di interrupt è usato dalla CPU per saltare alla relativa routine • Registri all’interno del chip scrivibili dalla CPU per programmare lo 8259A III.32 Il Pentium II • Architettura a 32 bit completamente compatibile con i predecessori • Aritmetica Floating-point IEEE 754 • Bus di memoria a 64 bit • Cache 1o livello 16KB dati +16KB istr. • Cache 2o livello 512 KB nel package (a metà della frequenza della CPU) • SEC (Single Edge Cartridge) a 242 pin • Dissipa oltre 55W! III.33 Pentium II: Pinout Logico III.34 Pentium II: Pinout Logico (2) • 242 connetori sul SEC: – 170 segnali – 27 connessioni di alimentazione – 35 connessioni di massa – 10 per ‘uso futuro’ • Indirizzi a 36 bit (64 GB), ma sempre in blocchi di 8 byte (solo 33 bit di indirizzo) • 64 linee dati; segnali: D# (richiesta dati), DRDY# (data ready), DBSY# (data busy) • Segnali di Snoop per la coerenza di cache • Gestione delle interruzioni sia come l’8088 che con APIC (Adv. Progr. Interr. Contr.) • VID: per la scelta della tensione • Power Management: permette di mettere la CPU in stato di sleep e deep sleep • 11 linee di diagnosi secondo lo standard IEEE 1149.1 JTAG III.35 Pentium II: Memory Bus • Bus gestito con pipelining: è possibile sovrapporre più transazioni • Fasi di una transazione (usano gruppi di linee indipendenti): 1) Bus arbitration phase (non mostrata) 2) Request phase 3) Error reporting phase 4) Snoop phase 5) Response phase 6) Data phase • Non sempre si usano tutte le fasi III.36 Il Bus ISA del PC/AT • ISA (Indunstry Standard Architecture) derivato dal bus del PC/AT • Compatibile con il bus del PC a 62 linee • 62+36 linee: 16 dati e 24 indirizzi • Edge Connectors (molto economici) • Tutt'oggi presente in tutti i PC per l’uso di carte legacy • Estensione EISA di poco successo • Sincrono a 8.33 MHz: 16.7 MB/sec III.37 Il Bus PCI: architettura complessiva III.38 Il Bus PCI: specifiche • PCI (Peripheral Component Interconnect) • Introdotto da Intel per applicazioni video • Video 1024×768×3 Byte a 30 frame/sec richiede una banda di 67.5 MB/sec • Standard non propietario, adottato da molti, (ma Intel vende i chip di gestione….) • Versione base a 32 bit, 33 MHz: 133 MB/sec • Estensione a 64 bit e 66 MHz: 528 MB/sec • Local Bus e Memory Bus separati (più veloci) • Connessione tramite chip PCI bridge • Varie opzioni di tensione (5 V e 3.3 V) • Carte con 120 e 120+64 contatti • Bridge ISA (include doppio controller IDE) • Controllori addizionali SCSI e USB • Bus sincrono, transazioni tra initiator e target • Linee indirizzo e dati multiplexate III.39 Il Bus PCI: arbitraggio • Arbitraggio centralizzato (nel Bridge) • Ogni PCI device ha due linee dedicate • Il device fa la richiesta tramite REQ# • Il grant viene concesso tramite GNT# • Diversi algoritmi di arbitraggio: – Round Robin – Priorità – Altro • Transazioni su piu cicli separate da cicli di idle III.40 Il Bus PCI: Segnali Obbligatori III.41 Il Bus PCI: Segnali Opzionali III.42 Bus PCI: Segnali • Bus a 120 o 180 linee • Oltre ai segnali sono distribuiti anche alimentazioni e masse • 32(+32) linee AD multiplexate tra dati e indirizzo con 1(+1) bit di parità PAR • C/BE# (in cicli diversi) invia comandi e specifica quanti e quali byte leggere • FRAME# e IRDY (lettura) usati dal master • DEVSEL# e TRDY# usati dallo slave • IDSEL indirizza nel configuration space di un device invece che in memoria (usato per gestire il Plug and Play) • STOP# e PERR# segnalano errori • RST# induce un reset nella CPU e in tutti i device sul bus • SBO e SDONE segnali di cache snooping III.43 Bus USB (Universal Serial Bus) • Bus economico concordato da varie aziende per la gestione di device di I/O a bassa velocità (~ 1995) • Obiettivi: 1) Evitare switch, jumpers 2) Installazione di tipo esterno 3) Cavo di connessione unificato 4) Alimentazione fornita dal cavo 5) Fino a 127 dispositivi collegabili 6) Supporto di dispositivi real-time 7) Installazione a PC acceso 8) Reboot non necessario 9) Bus e dispositivi economici • Tutti gli obiettivi sono di fatto rispettati III.44 USB: Specifiche Fondamentali • Banda complessiva 1.5 MB/sec • Limitata per ragioni di costo • Root hub di connessione al bus PCI • Connessione di dispositivi e di altri hub • Struttura complessiva ad albero con massima ramificazione di 16 • Connettori ai capi del cavo diversi • Cavo a 4 fili: +5V, GND, 2 di segnale • Alla connessione di un dispositivo: – Interrupt: intervento del SO – Richiesta di banda – Assegnazione di indirizzo • Indirizzo 0 usato per inizializzazione • Logicamente connessione tra root hub e ciascun device con bit pipe dedicata III.45 USB: Struttura dei Frame • Frame emessi ogni 1.00±0.05 msec • Idle frame se non c’è comunicazione • Contenuto del frame: – SOF: Start of Frame – IN / OUT: richiesta in lettura/scrittura – DATA: payload fino a 64 byte più controllo e codice di errore – ACK / NACK: acknowledge o errore • Polling usato invece delle interruzioni III.46 Chip di I/O: UART, USART e PIO • UART (Univ. Async. Rec. Transm.) • USART (… Sync. Async. ……) • Usati in interfacce parallelo/seriale • PIO (Parallel Input/Output) – Configurabile dalla CPU – 3 Porti indipendenti da 8 bit con latch – La CPU legge e scrive nei porti – Possibile gestire anche semplici protocolli di handshaking CPU-device – Per gestire device TTY-compatible III.47 Decodifica Parziale III.48