Bus dati di I/O, bus indirizzi e registri interni

Il processore per molti è un pezzo silicio che fa andare il computer, ma all'interno nasconde tante cose. In questo primo articolo affrontiamo il tema della frequenza e delle cache.

Avatar di Tom's Hardware

a cura di Tom's Hardware

Bus dati di I/O, bus indirizzi e registri interni

Bus dati di I/O

Due delle caratteristiche più importanti di un processore sono la velocità e l'ampiezza dei bus dati esterni. Questi definiscono la velocità con cui un dato si può spostare all'interno o esterno del processore.

I dati in un computer sono inviati come informazioni digitali rappresentati come 1 e 0 tramite i segnali elettrici. Si può aumentare la quantità di dati inviati (bandwidth) incrementando il ciclo di tempo o il numero di bit inviati alla volta, o entrambi. Negli anni i bus dati del processore sono passati da 8 bit a 64 bit di ampiezza. Più collegamenti abbiamo, più bit possiamo inviare nello stesso intervallo: tutti i processori più moderni hanno bus dati ampi 64 bit (8 byte), e perciò possono trasferire 64 bit di dati alla volta da e verso il chipset della motherboard o la memoria di sistema.

Un buon modo per comprendere come si muovono le informazioni è immaginare un'autostrada e il traffico che si muove su di essa. Per far aumentare il traffico (far muovere più auto in un determinato tempo) possiamo aumentare la velocità delle auto, aggiungere più corsie o entrambe le cose.

Con l'evoluzione dei processori sono state aggiunte più linee. Potete pensare a un chip a 8-bit come un'autostrada a singola corsia dato che passa 1 byte alla volta (1 byte= 8 bit). I chip a 16 bit, con 2 byte che si muovono alla volta, ricordano a un'autostrada a due corsie. Con quattro linee in ogni direzione abbiamo un bus dati a 32 bit, che sposta 4 byte alla volta. Il bus dati a 64 bit è come una strada a otto corsie da e verso il chip.

Dopo aver raggiunto bus ampi 64 bit i progettisti dei chip hanno scoperto che non era possibile aumentare ulteriormente la velocità, perché era troppo difficile sincronizzare tutti i 64 bit. Ma tornando a un minor numero di linee era possibile aumentare la velocità dei bit - vale a dire riducendo il ciclo di clock - in modo da consentire larghezze di banda superiori. Per questo motivo molti nuovi processori hanno bus dati ampi solo 4 o 16 bit, eppure offrono larghezze di banda maggiori rispetto ai precedenti bus a 64 bit.

Un altro miglioramento nei nuovi processori sta nell'uso di bus multipli separati per operazioni differenti. Il progetto tradizionale dei processori richiede che tutti i dati passino da un singolo bus, mentre i nuovi processori hanno bus fisici separati per dati da e verso il chipset, memoria e slot grafico.

Address Bus

L'address bus è un insieme di fili che trasportano l'informazione che descrive la locazione di memoria, nella quale il dato è stato inviato o da cui il dato è stato recuperato. Come con il bus dati, ogni filo in un address bus trasporta un singolo bit d'informazione. Questo singolo bit è una sola cifra nell'indirizzo: più fili (cifre) usate per calcolare questi indirizzi, maggiore è il numero totale delle "address location". La dimensione - o l'ampiezza - dell'address bus indica anche la quantità massima di RAM che un chip può gestire.

L'analogia dell'autostrada fatta in precedenza può far capire come s'inseriscono gli address bus in questo discorso. Se il bus dati è l'autostrada e la dimensione del bus dati è equivalente al numero di corsie, l'address bus si riferisce al numero civico o indirizzo. La dimensione dell'address bus è equivalente al numero di cifre nell'indirizzo di casa. Per esempio, se vivete in una strada nella quale l'indirizzo è stato limitato a un numero a due cifre - base 10 - non ci possono essere più di 100 indirizzi distinti (00-99) per quella strada (102). Aggiungete un'altra cifra e il numero di indirizzi disponibili sale a 1000 (000-999), o 103.

I computer usano il sistema di numerazione binaria (base 2), quindi un numero a due cifre fornisce solo quattro indirizzi unici (00, 01, 10 e 11), calcolati come 22. Un numero di tre cifre fornisce solo otto indirizzi (000-111), che è 23. Per esempio, i processori 8086 e 8088 usavano un bus address a 20 bit per calcolare un massimo di 220 - o 1,048,576 byte (1MB) - di "address location". La seguente tabella descrive le capacità d'indirizzamento della memoria dei processori.

AMD/Intel 64-bit
Address Bus 40-bit
Byte 1,099,511,627,776
KiB 1,073,741,824
MiB 1,048,576
GiB 1024
TiB 1

Il bus dati e l'address bus sono indipendenti e i progettisti del chip possono usare la dimensione che vogliono per ciascuno. Solitamente i chip con bus dati più ampi hanno address bus più grandi. La dimensione dei bus può fornire un'importante informazione circa la potenza del chip, misurata in due modi. La dimensione del bus dati indica la capacità del chip di spostare l'informazione, e la dimensione dell'address bus vi dice quanta memoria può gestire il chip.

Registri interni (bus dati interno)

La dimensione dei registri interni indica quanta informazione può gestire il processore in un dato momento e come si muove all'interno chip. È qualcosa che viene definito "bus dati interno". Un registro è una cella all'interno del processore; ad esempio, il processore può aggiungere numeri in due registri differenti, immagazzinando il dato in un terzo registro. La dimensione del registro determina la dimensione del dato sul quale il processore può operare. La dimensione di un registro descrive anche il tipo di software o comandi e istruzioni che un chip può eseguire.

I processori con registri interni a 32 bit possono eseguire le istruzioni a 32 bit che elaborano blocchi di dati a 32 bit, ma i processori con registri a 16 bit non possono fare lo stesso. I processori dal 386 al Pentium 4 usano registri interni a 32 bit e possono essenzialmente far girare sistemi operativi e software a 32 bit. Il Core 2, Athlon 64 e i processori più recenti hanno registri interni sia a 32 bit che a 64 bit, i quali possono eseguire sistemi operativi e applicazioni a 32 bit così come le versioni più recenti a 64 bit.