Massima memoria indirizzabile

di il
10 risposte

Massima memoria indirizzabile

Ciao a tutti, ho un dubbio sul seguente esercizio:

Un’architettura è caratterizzata da un ADDRESS-BUS di 8 bit e un CONTROL-BUS di 4 bit. Considerando una memoria con parallelismo 8bit, calcolare la massima quantità di memoria indirizzabile.

io ho fatto: 2^(8) * 1 byte= 256 byte

è giusto? il dato del control bus non serve ai fini del calcolo?
se inoltre qualcuno potesse darmi delucidazioni più approfondite sulle formule/ teoria alla base di questo tipo di esercizi glie ne sarei grato.
Le slide e il libro su cui studio non trattano questa parte.

10 Risposte

  • Re: Massima memoria indirizzabile

    Sì, ok
  • Re: Massima memoria indirizzabile

    oregon ha scritto:


    Sì, ok
    grazie... almeno intanto ho la conferma
  • Re: Massima memoria indirizzabile

    ...la risposta è in realtà... dipende
    ai tempi eroici si sono studiati metodi tra i più bizzarri per aumentare la memoria indirizzabile, ad esempio con la mitica segmentazione della modalità reale intel.
    trattandosi di un esercizio suppongo didattico, la risposta tendenzialmente è 2^(larghezza bus indizzi)
    MA se si adottano strategie più o meno "strane", potresti usare il control bus (o parte di esso) come ulteriore "finto" selettore, fino a un massimo di 2^ (8+4)*8 bit

    Chiaramente stiamo ipotizzando di volerci complicare (molto) la vita, ma nei processori reali, cioè venduti in milioni di pezzi, s'è visto anche di peggio
  • Re: Massima memoria indirizzabile

    Ovviamente è una questione prettamente didattica, di base, sui processori. E' evidente che si possono adottare mille metodi di indirizzamento a "banchi" controllati in mille modi, ma non è assolutamente il caso.
  • Re: Massima memoria indirizzabile

    oregon ha scritto:


    Ovviamente è una questione prettamente didattica
    sì, a tal proposito: l'unica formula che conosco per calcolare la massima memoria indirizzabile è =2^(Abus) * Dbus
    dove Abus= addressbus e Dbus=Databus... ma quindi Data bus e parallelismo sono la stessa cosa?
    grazie
  • Re: Massima memoria indirizzabile

    "parallelismo" non significa nulla (in realtà), o meglio ha tanti significati dipendenti dal contesto.
    nell'ambito della didattica elementare il bus dati accede con un certo grado di "parallelismo" (che poi significa bus width) alla memoria, e non è detto che ciò corrisponda all'architettura interna.

    di nuovo la storia ha provato (processore Intel 8088, quello del primo PC IBM per capirci) che non necessariamente c'è un'identità "esterna" e "interna" (8/16 bit nel caso della CPU Intel).

    In sostanza una CPU (* anche qui ci sarebbe molto da dire su cosa sia una "CPU", perchè in realtà c'è il memory controller, che può essere integrato o meno eccetera) con databus a 8 bit legge e scrive 8 bit alla volta (verso la RAM).
    Quindi se può indirizzare tot celle, ognuna delle quali "larga" 8 bit, avrà una memoria indirizzabile di (tot celle)*8 bit.

    Se invece è in grado di leggere-scrivere, poniamo, 16 bit alla volta, allora la memoria sarà doppia, perchè saranno (tot celle)*16 bit, poi 32 e oggi 64 bit (128 e 256 per certe CPU da scheda video).

    Accade inoltre (oggi sempre meno frequentemente, restano delle vestigie in poche applicazioni micro-embedded), come accennato, che una CPU che funziona internamente con registri a 16 bit (poniamo), legga-scriva in "blocchi" (cioè con parallelismo) databus di 8 bit.
    Per leggere un singolo registro (16 bit nel nostro caso) dovrà quindi "magicamente" avvenire una duplice lettura: 8 bit alla prima "mandata", più altri 8 la seconda (questo avveniva mediante logica esterna alla CPU, cioè con un altro integrato/i)
    Anzi, per risparmiare ancora complessità si sono multiplexati parte del bus indirizzi con quello dati


    Essenzialmente la CPU ha un bus indirizzi, cioè per capirci 20 piedini (quindi 2^20 = 1.048.576 parole) fisici per generare gli indirizzi.
    Ma di questi alcuni possono fungere sia da databus che addirittura come bus di I/O.
    Se ti stai chiedendo il perchè di questa strategia, la risposta è banale: costi e riduzione della complessità.
    Cioè "paghi" con rallentamenti avere meno pin, meno linee, meno tutto.


    Ai "tempi" (cioè inizio anni '80) la memoria a 8 bit era molto meno costosa di quella a 16 bit, quindi IBM ebbe la pensata-genialata di usare una CPU a 16 bit interni (quello che oggi è diventata la linea pentium/core/sticazzi, insomma i3, i5, i7 eccetera, anche se ci sarebbe lo spiegno del merge delle estensioni a 64bit AMD) con un databus a 8 bit, proprio per interfacciare chip di memoria meno costosi.
    Ovviamente questo rallenta l'accesso alla memoria (parallelismo a 8 bit anzichè 16), ma a quei tempi ciò fu ritenuto vantaggioso.
    Altrettanto ovviamente, poco dopo, usarono la versione con bus dati a 16 bit (8086, poi 80186) e memorie a 16 bit.

    -------------
    Riassunto dello spiegone:
    - per la versione didattica-elementare il bus dati è composto da tante linee ognuna delle quali "porta" un bit. Quindi 8 linee=8bit; 32 linee=32bit=4byte e la CPU può indirizzare, leggere-scrivere (nell'esempio) 1 byte o 4 alla volta.

    - per la versione reale: è successo e succede di tutto, dove si ebbero CPU che internamente funzionavano a 16 bit, ed esternamente a 8, perchè qui "comanda" la RAM. Cioè se hai una RAM con un bus a 8 bit dovrai progettare un sistema che lavora a 8 bit.
    E' successo di tutto e di più anche con vari tentativi negli ultimi 30 anni che non ti enumero

    - corollario magari vagamente più utile (anche se superbanalizzato). Hai mai sentito di CPU con controller di memoria dual-channel (triple/quadruple) e utilizzo di banchi RAM in coppia (terzetti/quadripletti) ?
    Essenzialmente dato un modulo di memoria che trasferisce, ad esempio, 32 bit alla volta, mentre hai una CPU che sarebbe in grado di lavorare con 64 bit, cosa si fa?
    Si mettono due banchi DIMM, e poi la CPU leggerà "una mezza parola" (cioè 32 bit) dal banco1, e contemporaneamente l'altra mezza parola (cioè gli altri 32 bit) dal banco2.
    In teoria quindi hai raddoppiato la banda di trasmissione della RAM (* nel caso DDR-Intel sono 64 bit per banco RAM, 128 in totale per dual).
    Ovviamente qui ci andrebbe un superspiegone su come funziona in realtà, cosa succede all'interno della CPU con i vari livelli cache, i TLB e gli (per semplificare) sticazzi.
    Spero che dal superspiegone avrai una (sia pur vaga idea) del perchè si consigli per le CPU casarecce di montare le DIMM in coppia, per avere un "dual channel" verso la RAM
  • Re: Massima memoria indirizzabile

    PS ovviamente non ho intenzione di descrivere esattamente come funziona il dual channell Intel, visto che le CPU moderne hanno tipicamente 64 linee di databus, nè tutto il pippone sulla sincronizzazione con le transazioni DDR2/3/4/5/6/7..., ho cercato di fare la versione ad usum delphini

    Giusto un "flash": con le ultime revisioni di Core la Intel ha introdotto, oltre al dual channel "normale" (cioè due canali da 64 bit ognuno verso due DIMM identiche, accedute in modo "interleaved"), la mitica IntelFlex Memory Technology Mode, che in sostanza serve per dare un accesso dual channell con moduli di dimensione diversa (es. una DIMM da 4GB e una da 8GB).
    Nel mondo "normale" servirebbero due DIMM identiche (diciamo 4G+4G), ma questo (nell'esempio) darebbe un totale di 8GB invece di 12GB.
    Ebbene gli ingegneri Intel si sono inventati un accesso misto: per i primi 4GB (nell'esempio) gli accessi saranno in paralleli, per i 4GB "più alti" della DIMM più grande, sequenziali.

    Leggendo i datasheet Intel si trovano centinaia di "trucchetti" del genere, d'altronde sono un 40 anni abbondanti che "limano" all'inverosimile per migliorare dove possono.

    Suggerisco (trattandosi di documentazione pubblica facilmente reperibile) di leggersi qualche PDF datasheet delle CPU Intel.
    Ci sono le versioni dettagliate, superspecialistiche (troppo, anche per quelli come me), ma i primi 2 o 3 libri sono spesso molto interessanti e facilmente (!) comprensibili
  • Re: Massima memoria indirizzabile

    +m2+ ha scritto:


    Riassunto dello spiegone:
    - per la versione didattica-elementare il bus dati è composto da tante linee ognuna delle quali "porta" un bit. Quindi 8 linee=8bit; 32 linee=32bit=4byte e la CPU può indirizzare, leggere-scrivere (nell'esempio) 1 byte o 4 alla volta.
    grazie dell' ampia spiegazione, anche se eccede largamente le richieste per la preparazione all' esame che darò è stato utile farmi un idea delle applicazioni reali dell' argomento.
  • Re: Massima memoria indirizzabile

    ifThisThenThat ha scritto:


    +m2+ ha scritto:


    Riassunto dello spiegone:
    - per la versione didattica-elementare il bus dati è composto da tante linee ognuna delle quali "porta" un bit. Quindi 8 linee=8bit; 32 linee=32bit=4byte e la CPU può indirizzare, leggere-scrivere (nell'esempio) 1 byte o 4 alla volta.
    grazie dell' ampia spiegazione, anche se eccede largamente le richieste per la preparazione all' esame che darò è stato utile farmi un idea delle applicazioni reali dell' argomento.
    Vabbè lo so, ma almeno (spero) ti sia vagamente rimasto che "dual channel" significa usare DUE DIMM con un certo databus (64bit per le "vere" DDR) per "fingere" di averne uno da 128 aumentando la banda trasmissiva.

    Capendo quindi, almeno a grandi linee, il perchè si fa

    Poi per il resto... in bocca al lupo!

    PS e risparmio la memoria delle CPU non-x86, tipo Motorola, MIPS, Power
  • Re: Massima memoria indirizzabile

    E infine, il "pippone finale": esistono sistemi con PIU' CPU, e quindi PIU' slot DIMM connessi ai rispettivi memory controller (quasi sempre integrati), nel caso Intel normalmente 2 o 4 CPU. Anche 8 in certe architetture blade-like.

    Lì succede di tutto, ovvero ti ritrovi con 16 o anche 192 slot di memoria, acceduti dalle varie CPU in competizione tra di loro.
    Sì, hai letto bene, 192 SLOT di memoria, per fino a 24TB di RAM
    https://www.supermicro.com/products/system/7U/7088/SYS-7088B-TR4FT.cfm

Devi accedere o registrarti per scrivere nel forum
10 risposte