Funzionamento CPU

di il
28 risposte

28 Risposte - Pagina 2

  • Re: Funzionamento CPU

    Nonloso93 ha scritto:


    Mettiamo il caso che io voglio indirizzare il massimo possibile teoricamente con un sistema a 32 bit, non posso fare esempio 32 bit indirizzo fisico (mettiamo che funzionano tutti) e bus dati da 32 bit. Viene il calcolo 2^32 * 32 il quale risultato viene più di 4GB che so che è lo spazio massimo che può gestire un sistema a 32 bit. Scusami ma non riesco a capire questa cosa -.-'
    Se vuoi indirizzare con 32 bit e bus dati a 32 bit, allora ci saranno 2^30 celle da 32 bit. NON puoi avere 2^32 celle da 32 bit!! Non avrebbe senso (perché dovresti avere un registro a 34 bit).
  • Re: Funzionamento CPU

    Buongiorno Andbin, chiedo scusa per il ritardo con cui rispondo ma ho avuto problemi di salute -.-'.
    Sono veramente interessato a togliermi questo dubbio e ti ringrazio tanto per l'aiuto.
    Tornando all'argomento se io utilizzo 2^30 celle e bus a 32 bit viene nel calcolo un valore sempre maggiore di quel famoso 4 GB (punto che non riesco a capire -.-') che è il massimo che si può gestire con un sistema a 32 bit.
    Marco
  • Re: Funzionamento CPU

    Nonloso93 ha scritto:


    Tornando all'argomento se io utilizzo 2^30 celle e bus a 32 bit viene nel calcolo un valore sempre maggiore di quel famoso 4 GB (punto che non riesco a capire -.-') che è il massimo che si può gestire con un sistema a 32 bit.
    Scusa ma continuo a non capire il dubbio, visto che l'ho detto ormai in tutte le salse.

    Se ci sono 32 bit di indirizzamento (registri a 32 bit x gli indirizzi), vuol dire che indirizza 2^32 byte ovvero 4294967296 byte. Ripeto, BYTE, è questa l'unità basilare e fondamentale con cui normalmente si parla e ragiona.

    Con un bus a 8 bit ci saranno 2^32 celle da 1 byte = 4294967296 byte
    Con un bus a 16 bit ci saranno 2^31 celle da 2 byte = 2147483648 * 2 = 4294967296 byte
    Con un bus a 32 bit ci saranno 2^30 celle da 4 byte = 1073741824 * 4 = 4294967296 byte

    Non cambia nulla come indirizzamento dei byte (cambiano le prestazioni, ovviamente), sono sempre 2^32 byte indirizzabili.

    Dire invece 2^32 celle da 32 bit non ha particolare senso, perché sarebbero 4294967296 * 4 = 17179869184 byte! E per indirizzare/indicare ciascun SINGOLO byte, servirebbe un registro a 34 bit. Non ha (molto) senso ..
  • Re: Funzionamento CPU

    Grazie mille!!!
    Cambiano le prestazioni in quanto avere un ampiezza della memoria uguale a quella del bus e a quella dei registri della CPU permette di svolgere le istruzioni in modo più veloce (in quanto maggiore è l'ampiezza del bus dati e maggiore è la rapidità in cui si svolgono le operazioni) giusto?:=)
    Se ciò è vero in generale le ampiezze delle celle di memoria sono fatte tenendo in conto la dimensione dei bus e dei registri della CPU?
  • Re: Funzionamento CPU

    Nonloso93 ha scritto:


    Cambiano le prestazioni in quanto avere un ampiezza della memoria uguale a quella del bus e a quella dei registri della CPU permette di svolgere le istruzioni in modo più veloce (in quanto maggiore è l'ampiezza del bus dati e maggiore è la rapidità in cui si svolgono le operazioni) giusto?:=)
    Ovviamente, a parità di clock, con un bus dati più ampio c'è una maggior quantità di byte trasferiti. Le schede grafiche (GPU) moderne hanno il loro bus dati interno verso la memoria a 128, 192, 256 (e anche più) bit. Vuol dire una quantità di byte/secondo enorme.

    Nonloso93 ha scritto:


    Se ciò è vero in generale le ampiezze delle celle di memoria sono fatte tenendo in conto la dimensione dei bus e dei registri della CPU?
    (sì e no). Certamente ci sono, ed è possibile farle, delle memorie con il bus dati "giusto" per un certo processore. Ma non è comunque quello il problema. Se un processore ha un bus dati a 32 bit e ho solo dei chip di memoria in configurazione Nx8 bit, basta mettere in "parallelo" le memorie ed accorpare i bus dati.
  • Re: Funzionamento CPU

    GRAZIE!!!:)
  • Re: Funzionamento CPU

    Ciao a tutti riapro la discussione in quanto mi sembrava tutto chiaro ma ora ho un altro dubbio. Vi riporto quanto scritto su un libro:
    "L’insieme delle istruzioni riconosciute dal processore costituiscono l’instruction set del processore e
    sono diretta conseguenza della sua architettura. Per chiarire questo aspetto consideriamo istruzioni
    macchina con un solo indirizzo aventi il seguente formato, ipotizzando istruzioni che occupano una
    parola di memoria di 32 bit:
    codice operativo=8 bit, indirizzo operando=24 bit
    L’istruzione è suddivisa in due campi di differente ampiezza per rappresentare: l’operazione da eseguire,
    identificata da un codice operativo, e l’indirizzo di memoria di un operando coinvolto nell’istruzione.
    Il set di istruzioni macchina e il formato stesso delle istruzioni riflettono l’architettura del processore
    perché, per esempio, aver specificato che servono 8 bit per il codice operativo, significa che il set
    di istruzioni macchina è composto da non più di 2 8 = 256 istruzioni.
    Allo stesso modo si può dire che 24 bit per l’indirizzo dell’operando permettono di indirizzare una
    memoria con al massimo 2 24 = 16×2 20 = 16 Mega parole di memoria. Questo fatto si esprime anche
    dicendo che il processore permette di indirizzare uno spazio di memoria di 16M parole."
    Quindi cosa vuol dire che dei 32 bit alcuni di essi sono destinati per riconoscere le istruzioni (in questo caso 8 bit) e quindi dei 32 bit solo una parte sono utilizzati per indirizzare la memoria (in questo caso 24)
    Grazie a tutti
    Marco
  • Re: Funzionamento CPU

    Nonloso93 ha scritto:


    consideriamo istruzioni
    macchina con un solo indirizzo aventi il seguente formato, ipotizzando istruzioni che occupano una
    parola di memoria di 32 bit:
    codice operativo=8 bit, indirizzo operando=24 bit
    L’istruzione è suddivisa in due campi di differente ampiezza per rappresentare: l’operazione da eseguire,
    identificata da un codice operativo, e l’indirizzo di memoria di un operando coinvolto nell’istruzione.
    Il set di istruzioni macchina e il formato stesso delle istruzioni riflettono l’architettura del processore
    perché, per esempio, aver specificato che servono 8 bit per il codice operativo, significa che il set
    di istruzioni macchina è composto da non più di 2 8 = 256 istruzioni.
    Allo stesso modo si può dire che 24 bit per l’indirizzo dell’operando permettono di indirizzare una
    memoria con al massimo 2 24 = 16×2 20 = 16 Mega parole di memoria.
    Guarda che lo scenario che hai appena riportato è assolutamente molto "ipotetico", teorico. E giusto perché tu lo sappia, non è nemmeno particolarmente "realistico", perché negli instruction-set dei processori reali, sono relativamente poche le istruzioni che hanno davvero bisogno di un indirizzo "immediato" mentre il resto delle istruzioni usa solo uno, due (o più) registri. Quindi raramente (anzi poco probabilmente) ci sarebbe proprio questa netta divisione di bit sulla istruzione.

    Nonloso93 ha scritto:


    Questo fatto si esprime anche dicendo che il processore permette di indirizzare uno spazio di memoria di 16M parole."
    Se come dice all'inizio "parola di memoria di 32 bit", allora si potrebbe forse presupporre che il processore NON sia in grado di indirizzare singoli byte ma solo appunto una "parola" (di 32 bit). Facendo questa supposizione, allora vuol dire che con 24 bit indirizza effettivamente 16M parole, quindi il bus dati sarà ragionevolmente a 32 bit e il bus indirizzi a 24 bit.

    P.S. E ripeto: è tutto vagamente ipotetico ....
  • Re: Funzionamento CPU

    Vediamo se ho capito:
    Indirizzo immediato ovvero che non utilizza i registri ma il dato è contenuto nell'istruzione stessa ? cioè in questo caso come avviene una somma, non si utilizza la alu?
    Quindi la maggior parte delle istruzioni non ha il codice operativo e sfrutta i registri utente per fare le operazioni?(quindi sfrutta tutti e 32 i bit, potendo indirizzare 32 GB)
    quindi esempio se devo fare una somma tra A e B , si caricherà A in un registro B in un altro e poi l'alu fa la somma?(nel caso non si utilizza l'indirizzo immediato)
    --------
    Vorrei approfondire questo argomento, sapresti suggerirmi qualche sito/libro?
    Grazie
  • Re: Funzionamento CPU

    Nonloso93 ha scritto:


    Indirizzo immediato ovvero che non utilizza i registri ma il dato è contenuto nell'istruzione stessa ?
    Sì "valore immediato" si intende che è (in qualche modo) integrato già nella istruzione.

    Nonloso93 ha scritto:


    cioè in questo caso come avviene una somma, non si utilizza la alu?
    La ALU ovviamente sì, si utilizza per tutte le operazioni matematiche/logiche.

    Nonloso93 ha scritto:


    Quindi la maggior parte delle istruzioni non ha il codice operativo e sfrutta i registri utente per fare le operazioni?
    Tutte le istruzioni hanno una parte (un tot di bit) per l'opcode, che indica quale operazione è (add, sub, and ecc...).
    Quello che dicevo prima è che l'ipotesi iniziale, cioè che TUTTE le istruzioni hanno sempre un 24 bit di indirizzo immediato, è poco realistica perché nei processori reali NON è così.

    Nonloso93 ha scritto:


    Vorrei approfondire questo argomento, sapresti suggerirmi qualche sito/libro?
    Visti i (tanti/troppi) dubbi, credo che forse ti sarebbe molto utile vedere in concreto delle architetture e instruction set di alcuni micro-processori/controllori REALI. Non devi necessariamente andare su "bestie" potenti come gli ARM a 64 bit. Basta che prendi la documentazione di processori "gloriosi" come lo Z80, i 680x0 oppure i microcontrollori della Microchip (i PIC e gli AVR acquisiti da Atmel). Ce ne sono tantissimi, anche di altre aziende.
  • Re: Funzionamento CPU

    Ok quindi le istruzioni sono generalmente più grandi di 32 bit, giusto? e come fa un sistema a 32 bit a leggere esempio una istruzione più grande?
    Perfetto grazie mi studierò lo z80, sperando di capire tutto!!!
    Grazie ancora,
    Marco
  • Re: Funzionamento CPU

    Nonloso93 ha scritto:


    Ok quindi le istruzioni sono generalmente più grandi di 32 bit, giusto?
    No. Dipende anche dalla architettura del processore. Ad esempio nei processori x86 dei PC le istruzioni sono di lunghezza variabile, occupano da 1 a 15 byte. Ci sono un sacco di byte di "prefisso" che sono utilizzabili per cambiare il senso della istruzione oltre a svariati modi di indirizzamento e operandi vari.

    Nei microcontrollori invece si tende a fare gli istruction set che siano più compatti e "regolari", tipo es., istruzioni di 1 o 2 "parole" (parola che potrebbe essere es. di 12 o 16 bit). In modo che sia anche molto facilmente prevedibile e calcolabile quanti clock impiega ciascuna istruzione.

    Quello che avevi riportato prima "aver specificato che servono 8 bit per il codice operativo, significa che il set
    di istruzioni macchina è composto da non più di 2 8 = 256 istruzioni.
    ", in realtà non è detto che sia per forza così. Sì, con 8 bit ci sono 256 combinazioni possibili ma ci potrebbero essere dei valori speciali es. 0xF0 che "apre" la possibilità di ricevere una seconda parola con altre informazioni (opcode più specifico e/o altri operandi).

    Nonloso93 ha scritto:


    e come fa un sistema a 32 bit a leggere esempio una istruzione più grande?
    Facendo più fetch in sequenza dalla memoria/cache.

    Nonloso93 ha scritto:


    Perfetto grazie mi studierò lo z80, sperando di capire tutto!!!
    Dallo Z80 purtroppo NON capirai "tutto". Inizierai a capire meglio solo guardando più architetture di processori, non solo uno.

    EDIT: Ah, già, ecco: Zilog Z80 CPU User Manual http://www.zilog.com/docs/z80/UM0080.pdf
  • Re: Funzionamento CPU

    Grazie ancora, avrei ancora domande ma mi metto prima a studiare e poi nel caso torno.
    Marco
  • Re: Funzionamento CPU

    Nonloso93 ha scritto:


    Grazie ancora, avrei ancora domande ma mi metto prima a studiare e poi nel caso torno.
    Ok, comunque cerca in rete anche il manuale Z80 della SGS-Thompson (non esiste più, è diventata STMicroelectronics), perché espone la tabella degli opcode in maniera molto più leggibile rispetto a Zilog. Qualcosa (anche magari scannerizzato) si dovrebbe trovare come pdf.
Devi accedere o registrarti per scrivere nel forum
28 risposte