Capitolo secondo ..................................................................................................2 Il processore e la memoria: modelli a bus .........................................................2 Premessa ............................................................................................................2 1. Collegamento CPU-memoria ....................................................................2 2. Architettura generale CPU-memoria-I/O ..................................................3 3. Tempificazione del colloquio CPU-memoria................................................4 4. Architettura interna alla CPU ....................................................................6 5. Esempio di fase fetch sul bus ....................................................................8 6. Esempio di fase preparazione operandi sul bus.........................................8 7. Esempio di fase esecuzione sul bus.........................................................10 8. Architettura di un modulo di memoria RAM ..........................................11 8.1 Interfaccia verso l’esterno .....................................................................11 8.2 Celle di memoria e loro selezione .........................................................12 9. Architettura di un sistema di memoria RAM ..............................................17 2 Integrazione al Testo di Fondamenti di Informatica II Capitolo secondo Il processore e la memoria: modelli a bus Premessa Il modello di Von Neumann (vol.I, § I-I.12) è un modello di principio che richiede per la sua realizzazione l'individuazione di un "modello a bus" con il quale si individuano i percorsi effettivi che dati e linee di controllo percorrono fra le diverse unità. I contenuti del vol. II, cap.III-IV forniscono risposte di dettaglio al collegamento CPU-I/O, senza peraltro far riferimento, per motivi di generalità, ad uno specifico modello a bus. A complemento dei contenuti citati, questo capitolo fa concreto riferimento ai modelli a bus in genere adottati dai moderni microprocessori. 1. Collegamento CPU-memoria Dettagliando quanto illustrato al § III-I-8 (pag.364), e prendendo in esame il corrispondente modello a bus adottato dai microprocessori, la memoria è collegata alla CPU attraverso (cfr. fig. 1.1): 9 (526/# 75" #8 : :,# c bit 1 1 ! " % # *,$ 23%'&)&)((*,*4++5-- %/%/.. ! &'&'0 0 6/758; *,$ # m bit &38 Figura 1.1. Collegamento CPU-Memoria Capitolo II - Il processore e la memoria: modelli a bus - - 3 un bus-dati, collegato al registro MB del processore, sul quale viaggiano bidirezionalmente i dati dalla memoria alla CPU in lettura o viceversa in scrittura; un bus-indirizzi, proveniente dal registro MA del processore e diretto verso la memoria; i due segnali di controllo provenienti dal processore e diretti alla memoria, RE (read enable), che chiede alla memoria di effettuare un’operazione di lettura e WE (write enable) che le chiede una di scrittura. È da notare che, a seconda dei sistemi, la memoria è indirizzata a parole oppure a byte. Nel primo caso si tratta di calcolatori a voce, nel secondo di calcolatori a caratteri (cfr. § III-I.6). Se l'indirizzamento è a byte (caratteri), allora si pone il problema di come si susseguono i byte in memoria. Esistono in proposito due tecniche (cfr. vol. I, § III-IV.12 e segg.): in ordine diretto o inverso, detti anche rispettivamente bigendian e little-endian. Nella tecnica ordinata in modo diretto, l'indirizzo è quello del byte più significativo e la parola continua ad indirizzi di byte crescenti per quelli meno significativi, al contrario della tecnica inversa ove l'indirizzo è quello del byte meno significativo. 2. Architettura generale CPU-memoria-I/O In un sistema esiste un numero predeterminato di "bus I/O" (come in alcuni vecchi modelli di main frame) oppure uno unico (come nell'ormai classico modello a microprocessore) e su ciascun bus sono in genere connessi più dispositivi di I/O. Inoltre, esistono due modelli distinti di collegamento a livello di sistema (cfr. fig. 6.3 in § III-IV.6, cui si rinvia anche per quanto ivi descritto): − − Modello a bus distinti: esistono verso l'esterno due bus fisici distinti l'uno per la memoria, l'altro per l'I/O (nel caso dei vecchi main frame uno per la memoria, k>1 per l'I/O) (cfr. fig.6.3a); a questo modello fa ad esempio riferimento la fig. 1.2 di vol.I, § III-II.1.5. In termini di caratteristiche del processore si parla allora di "isolated I/O" (cfr. § III-IV.11). Si noti che questo modello, nato certamente con i main frame, si ritrova anche in alcuni moderni microprocessori, come nella serie 80x86. Modello a bus unico: su un unico bus sono collegati memoria e sistema di I/O (fig.6.3b); in termini di caratteristiche del processore si parla allora di "memory mapped I/O" (cfr. § III-IV.11). Tale modello, nato con il PDP 11, si ritrova in molti microprocessori moderni, come nella serie del 68000. 4 Integrazione al Testo di Fondamenti di Informatica II Il collegamento qui presentato si particolarizza nei casi concreti come accennato in fig. 2.1: l’unico bus di collegamento fra CPU, Memoria e I/O si suddivide in tre bus componenti: ♦ Bus-dati: trasferisce i dati da una unità all'altra; ♦ Bus-indirizzi: comunica l'indirizzo (di memoria o di I/O) dal quale o verso il quale il dato è indirizzato ♦ Linee di controllo: trasferiscono informazioni o indicatori per il controllo e la tempificazione delle operazioni, ad esempio i segnali RE e WE, ack e così via. Dati Indirizzi Controllo <,= > &38 ?A@B? Figura 2.1 Bus dati, bus indirizzi e bus di controllo Si ricorda che nei sistemi in cui esiste un collegamento fisico tra interfacce di I/O e memoria è anche possibile realizzare uno schema di collegamento, detto DMA (Direct Memory Access) che trasmette blocchi di dati direttamente da o verso la memoria (cfr. § III.IV.6). Un tale schema è realizzabile sia in sistemi a bus distinti che a bus unico. 3. Tempificazione del colloquio CPU-memoria Similmente a quanto accade con l'I/O (cfr. § III-IV.4), lo scambio di dati fra CPU e memoria va opportunamente tempificato. In analogia a quanto visto nel citato paragrafo, la tempificazione è detta asincrona (cfr. § III-IV.4.2) se alla richiesta di operazione di lettura (RE) o scrittura (WE) da parte della CPU, la memoria "risponde" con un segnale che indica l'avvenuta operazione: questo segnale è in genere detto ACK (acknowledge); è viceversa detta sincrona se è basata esclusivamente sull'uso del clock e prevede quindi che l'operazione in memoria avvenga in un tempo precisato. Capitolo II - Il processore e la memoria: modelli a bus 5 La soluzione asincrona è più complessa, ma ovviamente preferibile in quanto rende indipendente il progetto della memoria da quello della CPU e la possibilità di collegare ad una CPU una qualsiasi memoria. Per illustrare i dettagli della tempificazione si usano diagrammi come quello di fig. 3.1, ove è in particolare illustrata la tempificazione asincrona per una operazione di lettura. Si noti che per i segnali binari sono indicati espressamente i due valori 0 ed 1 (ad esempio, al tempo t2 5( passa da 1 a 0) mentre i valori dei bus sono indicati in generale (ad esempio, al tempo t1 il bus ADDR cambia valore). In particolare si ha: - al tempo t1 il processore pone un indirizzo sul bus apposito; al tempo t2 il processore invia alla memoria il segnale RE; al tempo t3 la memoria pone il dato letto sul bus; al tempo t4 la memoria comunica l'ACK al processore. DFEGEGHJILKMK X YGZ[ \[ ]M]^_)`a [ ZB^ jFk NPO C O bP`3c4^ _d`a [ Z3^ eFa c `A[ fAgihZ3hdY]L` DFQSR CT CU CJV C4W C Figura 3.1 Tempificazione asincrona per una operazione di lettura Si noti la particolare simbologia utilizzata in figura 3.1 per indicare lo stato ad alta impedenza in cui si viene a trovare il bus dati al di fuori dell’intervallo temporale in cui la memoria pone su di esso un dato valido. Si osservi, infine, che per i segnali di comando (RE, WE) e di ack è di regola utilizzata una tempificazione sui fronti. Nel caso del protocollo di figura 3.1, la variazione 1→0 del segnale 5( segnala alla memoria la volontà del processore di effettuare una lettura, mentre la variazione di livello 0→1 del segnale ACK segnala al processore 6 Integrazione al Testo di Fondamenti di Informatica II che la memoria ha posto un dato valido sul bus-dati (agendo così da strobe per il caricamento del registro MB del processore). 4. Architettura interna alla CPU L'esecuzione dell'algoritmo del processore, mostrato genericamente al § IIII.10, trova la sua concreta realizzazione in uno schema a bus, con il quale i diversi registri di macchina sono collegati in ingresso e/o in uscita ad uno o più bus interni ("interno" per distinguerlo dal "bus esterno", cfr. ad esempio § IIIVI.4) sui quali fluiscono i dati. In fig. 4.1 è illustrato uno schema ad unico bus di un ipotetico processore. Sull'unico bus sono collegati tutti i registri di cui alla fig. 5.1 del § III-I.5 ed inoltre il registro di stato S (cfr. § III.I.13.9) comprendente fra l'altro il registro di condizione CC (cfr. § III.I.13.8); nella figura è inoltre inserito un registro RA, "Register Address". Unità di controllo O2 O1 Rete di controllo ALU U D Unità Logico-Aritmetica PC MA S MB RA Collegamento con la memoria R1 l RI RN RU Registri generali, accumulatori, registri indice, … Collegamento con l’I/O Figura 4.1 Bus interno di una CPU Capitolo II - Il processore e la memoria: modelli a bus 7 Il registro RA è destinato a contenere l'indirizzo (ad esempio 0..7) del registro generale che definisce il registro interessato alla operazione. Il banco di registri generali si suppone infatti che operi come una memoria, realizzando le due microoperazioni R[RA]:=BUS e BUS:=R[RA]. In altri termini, il collegamento fra RA e i registri Ri è mostrato in fig. 4.2: un apposito decodificatore decodifica RA ed abilita (a seconda dei casi in ingresso o in uscita) uno dei registri verso il BUS. R0 RA BUS R k-1 Figura 4.2 Circuito di selezione per il banco di registri generali Tutte le microoperazioni di trasferimento dati attraverso le quali si effettua l'algoritmo del processore ed illustrate al § III-I.10 si realizzano attraverso operazioni di trasferimento attraverso bus di cui al § I.6 (Macchine elementari). Per alcuni esempi si vedano i paragrafi che seguono. Si noti che l'architettura esemplificata in figura è una estremamente elementare e non ottimizzata. Nelle architetture reali si ritrovano soluzioni più avanzate realizzate adottando concetti non introdotti in questa sede (p. es. pipeline, cache, etc.), introducendo nuovi registri oppure eliminandone alcuni (p. es. l'unità logico-aritmetica potrebbe operare direttamente dal BUS, effettuando l'operazione BUS:=O1 (op) BUS). 8 Integrazione al Testo di Fondamenti di Informatica II 5. Esempio di fase fetch sul bus Si esemplifica in questo paragrafo la realizzazione di una procedura fetch su una architettura a bus realizzata come in figura 4.1. 1) 3) 4) 6) BUS:= PC 2) MA:= BUS {MA:=PC} invia RE a Memoria, che pone MB:= M[MA] BUS:= MB 5) D:= BUS {D:=MB} PC:=PC+1 ottenuta semplicemente, a partire dalla (formula III.I.10.4), mettendo in evidenza il passaggio attraverso il bus delle microoperazioni MA:=PC, D:=MB. Si noti che l’ultima operazione può essere eseguita in parallelo alle precedenti (dopo BUS:=PC), le altre necessariamente in sequenza. Il modello di cui sopra si riferisce ovviamente ad un calcolatore a voce; per i calcolatori a caratteri deve evolversi così come indicato al § III.I.10.7. Soluzioni intermedie possono verificarsi nelle architetture reali. Ad esempio, nel 68000 l'indirizzamento è a byte (8 bit), una parola di 16 bit individua compiutamente una istruzione e l'accesso in memoria è appunto con parallelismo di 16 bit. Si ha allora semplicemente, in luogo di PC:=PC+1, PC:=PC+2. 6. Esempio di fase preparazione operandi sul bus La fase di preparazione degli operandi è strettamente legata alla struttura delle istruzioni, alla modifica di indirizzo ed alle tecniche di indirizzamento del processore, in una parola al linguaggio macchina dello stesso. Si sviluppa qui soltanto un esempio di un ipotetico processore, nelle seguenti ipotesi: ♦ la classe di istruzione che si esamina comprende due operandi, uno di tipo memoria, l'altro di tipo registro: ♦ l'istruzione da eseguire sia una istruzione di MOVE di un operando-origine situato in memoria verso un operando-destinazione di tipo registro; ♦ l'istruzione, che al termine della fase fetch staziona nel registro D, è composta di tre campi: ♦ D.OP che definisce il codice operativo (MOVE nell'esempio), ♦ D.M che definisce il modo di indirizzamento dell'operando-origine, che nel caso specifico si suppone essere INDIRETTO, ♦ D.R, che definisce l'indirizzo del registro-destinazione (uno degli 8 registri generali); Capitolo II - Il processore e la memoria: modelli a bus 9 ♦ l’operando-origine ha il suo indirizzo posto in memoria, all’indirizzo immediatamente seguente l’istruzione prelevata in fase di fetch; ♦ al termine della fase di preparazione dell’operando, l’operando-memoria sarà posto in MB, quello di tipo registro è identificato, in quanto in RA è posto il suo indirizzo. In altri termini, si suppone che l'istruzione si presenti come in figura 6.1, con la prima parola corrispondente a quella estratta dalla memoria nella fase fetch, la seconda ancora in memoria, ma necessaria ai fini della preparazione dell'operando. La semantica dell'istruzione è: D.OP D.M D.R A Figura 6.1. Esempio di istruzione RD.R:= M[M[A]] e cioè: il contenuto della memoria M posto all'indirizzo contenuto all'indirizzo A deve essere caricato nel registro D.R-esimo. Le microoperazioni necessarie per realizzare la preparazione dell'operandomemoria sono: 1) 3) 4) 6) 7) 9) BUS:= PC 2) MA:= BUS invia read a Memoria, che pone MB:= M[MA] BUS:= MB 5) MA:=BUS invia RE a Memoria, che pone MB:= M[MA] BUS:= MB 8) MA:= BUS invia RE a Memoria, che pone MB:= M[MA] {MB:=A} {MB:=M[A]} {MB:=M[M[A]]} Si noti in particolare che nel caso esemplificato la preparazione dell'operando avviene mediante tre accessi in memoria: ♦ il primo, che costituisce in effetti il completamento del prelievo dell'istruzione, è all'indirizzo seguente quello dell'istruzione medesima (cfr. microperazione 1) e porta in MB l'indirizzo A; ♦ il secondo, che sarebbe anche l'ultimo se l'indirizzamento fosse diretto, porta A in MA (5) e MA] in MB (6), ♦ il terzo porta M[MA] in MA (8) e M[M[A]] in MB (9). Più semplicemente, le microoperazioni necessarie per realizzare la preparazione dell'operando-registro sono: 10 Integrazione al Testo di Fondamenti di Informatica II 1) BUS:= D.R 2) RA:= BUS Si noti quanto più semplice è la preparazione dell'operando-registro rispetto a quello di tipo memoria, oltre al fatto che la memoria a registri è in generale più veloce della memoria centrale. 7. Esempio di fase esecuzione sul bus La fase execute di una istruzione è la più semplice di tutte, una volta che sia stata effettuata la preparazione degli operandi. Per esempio, per completare l'esecuzione dell'operazione di cui al paragrafo precedente è sufficiente realizzare le microoperazioni: 1) BUS:=MB 2) R[RA]:= BUS {registro-destinazione :=operando-origine} Si supponga ora che, ferma restando la tecnica di indirizzamento, l'istruzione sia una di ADD, nel significato: RD.R:= RD.R + M[M[A]] Allora la fase execute sarà: 1) BUS:=MB 2) O1:= BUS {1° registro-operando di ALU :=operando-memoria} 3) O2:= R[RA] {2° registro-operando di ALU :=operando-registro} 4) Invio di segnale di controllo ad ALU, che effettua U:=O1:+ O2 5) BUS:=U 6) R[RA]:= BUS Giova ricordare (§ 4) che gli schemi presentati in questo capitolo sono schemi elementari non ottimizzati, finalizzati didatticamente a favorire la comprensione del meccanismo di funzionamento della unità di controllo sul piano concettuale piuttosto che la sua reale tecnologia. Capitolo II - Il processore e la memoria: modelli a bus 11 8. Architettura di un modulo di memoria RAM Si ricorda (cfr. vol.II, § III-I.8) che il modello di memoria assunto si interfaccia con il processore attraverso i due registri MA (memory address) ed MB (memory buffer) ed i segnali di controllo RE (read enable) e WE (write enable) ed inoltre (cfr. vol.II, § III.5.6) che una memoria RAM è di solito composta di moduli o chip. Esamineremo in questa sede l’architettura di un singolo chip N con MA di N bit (capacità k=2 ) e parallelismo p (numero di bit di MB). Esamineremo dapprima un modulo con p=1 (un solo bit di parallelismo), estendendo poi all' occorrenza al caso p>1. 8.1 Interfaccia verso l’esterno In primo luogo giova far presente che, oltre ai segnali di cui sopra, in input al singolo modulo esiste un segnale di abilitazione generale dello stesso, tipicamente detto CS (Chip Select), la cui funzione è appunto quella di abilitare il chip: nel caso che CS non sia attivo il chip non opera e quindi se sollecitato per la scrittura (WE) non altera il contenuto di nessuna delle sue celle, se in lettura, l'uscita MB resterà neutra. Questo è importante soprattutto per quanto si vedrà al paragrafo successivo. Il bus MB è unico sia per l'input che per l'output dal modulo e l'interfaccia della memoria verso l'esterno deve provvedere a renderlo bidirezionale, traendo da questo un bus interno di input Di ed uno di output Do. Inoltre il bus MB deve essere disaccoppiato dai bus Di e Do, sia dal punto di vista elettronico sia da quello logico: a tale scopo spesso si usa un "buffer" interno al chip nel quale viene memorizzato il dato proveniente da MB prima che esso sia effettivamente scritto in memoria oppure il dato proveniente dalla memoria dopo di essere stato letto. Nel caso p=1 il buffer è costituito da un flip-flop interno mb atto a memorizzare il bit di MB corrispondente; nel caso p>1, lo schema si ripete per ogni bit. In fig. 8.1 è mostrato uno schema di riferimento per p=1, il quale opera come segue: • • • In caso di lettura (RE=1) e sempre che sia CS=1 l'interfaccia genera in sequenza due segnali: R, che memorizza il bit letto in mb, ed R', che trasferisce il dato dal buffer mb sul bus MB (l'operazione sarà meglio analizzata nei prossimi sottoparagrafi). In caso di scrittura, analogamente, l’interfaccia genera W', che memorizza in mb, e poi W che scrive in memoria. l'input di mb è multiplexato fra il lato proveniente da MB (abilitato da W') e quello dalla memoria (abilitato da R, cfr. §§ 8.2, 8.3). 12 Integrazione al Testo di Fondamenti di Informatica II • l’output di mb è demultiplexato fra il lato destinato a MB (abilitato da R') e quello destinato alla memoria (abilitato da W, cfr. §§ 8.2, 8.3). È da notare che il circuito di lettura che proviene dalla memoria sul bus Do termina con un tristate diretto verso mb e che, viceversa, il circuito di scrittura che si dirige verso la memoria con il bus Di inizia con un tristate diretto verso la memoria (cfr. figg. 8.2, 8.4). '$9(562/( &(//(',0(025,$ 0(025,$ W R n m ' ' W W’ PE R’ W’ WE R’ R C CS MB RE '$9(562/$&38 Figura 8.1 Interfaccia di un chip di memoria 8.2 Celle di memoria e loro selezione La cella di memoria, quella cioè atta a memorizzare un singolo bit, può essere logicamente schematizzata come un flip-flop con un input di abilitazione ed un terminale che ha la duplice funzione di input e output del bit (i flip-flop normali, come mb, distinguono il pin di input da quello di output, quelli di memoria li unificano per minimizzare il numero di fili che attraversa il chip); in fig. 8.2a) è schematizzata la cella di memoria. 8.2.1 Selezione lineare Le operazioni di lettura e scrittura sono rispettivamente operazioni di trasferimento del bit in ingresso da mb alla cella selezionata tramite il bus interno Di Capitolo II - Il processore e la memoria: modelli a bus 13 oppure, viceversa, dalla cella selezionata ad mb attraverso il bus di uscita Do. La selezione, se di tipo lineare, è effettuata da un decoder 1/k che, a partire dagli N bit di MA, individua una delle k=2N celle elementari. Il modello è pertanto del tutto simile architetturalmente a quello di fig. 4.2, fatto salvo il fatto che le celle di memoria sostituiscono i registri e che, attraverso apposite porte tristate il bit è prelevato oppure inviato da/verso mb (cfr. fig. 8.2b). M0 bit da scrivere MA bit letto E M k-1 abilitazione Do Di D W R Fig. 8.2. a) Cella di memoria; b) Architettura interna di un chip di memoria a selezione lineare La selezione lineare richiede di distribuire sul chip tanti conduttori di selezione quanta è la capacità del chip: nel caso, ad esempio, di un chip da 1 Mbit, 20 circa un milione di conduttori (per l’esattezza, 1M=2 = 1.048.576). Inoltre, le celle sono distribuite linearmente (si sviluppano in una sola dimensione) sull’area del chip, mentre per sfruttare al massimo il silicio sarebbe opportuno uno schema che occupasse con qualche regolarità le due dimensioni di un piano. Unico vantaggio di questa tecnica (che è in realtà soltanto una tecnica di riferimento oppure usata per memorie di piccole dimensioni) è quello di consentire una semplice realizzazione di un chip con p>1. È infatti sufficiente usare la seconda dimensione del piano per distribuirvi le p celle di una parola di memoria: i conduttori che escono dal decodificatore investono in parallelo le p celle e tutto lo schema di figura si ripete p volte, una per ciascun bit della parola. 14 Integrazione al Testo di Fondamenti di Informatica II 8.2.2 Semiselezione Molto più efficiente è una soluzione con tecnica a semiselezione basata sul seguente concetto: gli N bit dell’indirizzo si dividono in due gruppi di N/2 l’uno (supposto N pari), dei quali l’uno fa capo ad un decoder di riga, l’altro ad uno di colonna (cfr. fig. 8.3, con N=16). Le celle di memoria si dispongono in un array N/2 N/2 2 × 2 , in modo che ciascuna cella appartenga ad una riga e ad una colonna. La selezione di una cella avviene allorché ne sia stata selezionata la riga e la colonna cui appartiene. Questa è una tecnica generale per tutti i problemi di selezione o di decodifica e non soltanto per le memorie: essa riduce il numero dei conduttori da 2N a 2⋅2N/2 = 2N/2+1 (nel caso di 1 Mbit da 1.048.576 a 2048). op MA (1) po ( MA 2) x,v xs tq s x r x,w u4v us 0000 0100 0101 qr ur u4w 0001 0010 0011 {5||{ 0110 0111 1000 1010 1011 1100 1101 1110 1111 ytz Figura 8.3 Organizzazione di un modulo RAM a semiselezione In concreto, con riferimento a memorie RAM con p=1, la selezione orizzontale avviene come per lo schema a selezione lineare, estendendosi su tutta la riga (cfr. fig. 8.4), mentre la selezione verticale avviene rendendo attivo il solo bus verticale selezionato. Se ad esempio è selezionata la i-esima riga e j-esima colonna, il comportamento è il seguente: • In scrittura Di è demultiplexato sulle porte tristate di tutte le colonne, ma soltanto la colonna j lascia passare il suo valore (0 o 1) mentre tutte le altre restano neutre. Tutte le celle della riga i sono selezionate, ma soltanto Mij registra il valore mentre le altre della riga non vengono alterate (è questa una proprietà della cella: per essere riscritta deve essere selezionata e deve avere in ingresso un valore attivo). Capitolo II - Il processore e la memoria: modelli a bus 15 • In lettura tutte le celle della riga i inviano i loro valori sui rispettivi busdati di colonna, che, attraverso i tristate di lettura, sono multiplexati verso Do . Essendo soltanto il tristate della colonna j attivo, il valore di Mij viene trasferito in Do. M00 M 0q M q0 M qq Do Di R W N/2 N/2 MA Figura 8.4 Architettura di un chip a semiselezione 16 Integrazione al Testo di Fondamenti di Informatica II Nel caso esaminato della semiselezione e p>1 occorre ripetere p volte lo schema di fig. 8.4, uno per ciascun bit della parola di memoria: i bit omologhi sono raggiunti dai medesimi segnali di selezione di riga e di colonna; lo schema globale può avere uno sviluppo planare (occupando ogni bit un’area diversa della superficie) oppure spaziale (usando ad esempio chip multistrato). In figura 8.5 è mostrato lo schema di principio delle due soluzioni. a) ELW ELW ELW ELW b) ELW ELW Figura 8.5 Memorie a semiselezione con parallelismo maggiore di uno: a) schema planare; b) schema spaziale Capitolo II - Il processore e la memoria: modelli a bus 17 9. Architettura di un sistema di memoria RAM Una memoria di capacità C è tipicamente realizzata collegando opportunamente m moduli a capacità C'=C/m, con m potenza di 2. Si supponga allora che sia (C, C' ed m sono potenze di 2): c= log2C q=log2C' k= log2m c=q+k L'indirizzo complessivo MA della locazione di memoria può essere visto allora come composto di due parti: un indirizzo del modulo (k bit) ed un indirizzo nel modulo (q bit) e i diversi moduli possono essere collegati secondo lo schema di fig. 9.1: • un decodificatore 1/m decodifica l'indirizzo del modulo e abilita attraverso il chip select uno solo fra gli m moduli; • gli altri q bit dell'indirizzo sono applicati in parallelo a tutti gli m moduli: soltanto quello selezionato ne sarà influenzato; • I memory buffer di tutti i moduli sono posti in parallelo: soltanto quello abilitato produrrà il dato in uscita (gli altri danno uscita neutra) oppure recepirà il dato in ingresso. C0 CS 0 MA" k bit CS m-1 q bit MA’ C m-1 MB Figura 9.1 Collegamento di moduli di memoria per aumentare la capacità