# Assembly/Organizzazione di sistema/Componenti base di sistema/System Bus

Assembly
Copertina Tutti i moduli · Sviluppo
* IntroduzioneAssembly/Introduzione
** Perché non studiare l'AssemblyAssembly/Introduzione/Perché non studiare l'Assembly
** Perché studiare l'AssemblyAssembly/Introduzione/Perché studiare l'Assembly
* Rappresentazione datiAssembly/Rappresentazione dati
* Algebra Booleana
* Organizzazione di sistema (tanta noiosa teoria)
** Componenti base di sistema
** Il tempo del Sistema
** La famiglia 80x86
** Input/Output
* Organizzazione e accesso alla memoria
** Introduzione
** Organizzazione della memoria in un x86
** Organizzazione dei segmenti in un x86
** Indirizzi di memoria in un x86
** Registri di segmento in un x86
** Metodi di indirizzamento di un x86
** L'istruzione MOV
** Commenti finali sull'istruzione MOV
* ConvenzioniAssembly/Convenzioni
    Indice
Modifica il sommario

## Introduzione

Il Bus di sistema (o System Bus) connette i vari componenti di una VNA. Il System Bus è l'insieme di tutti i Bus presenti nel sistema. L'80x86 ha tre Bus:
* Il Bus Dati (o Data Bus)
* Il Bus degli indirizzi (o Address Bus)
* Il Bus di controllo (o Control Bus)
Un Bus è un insieme di fili elettrici attraverso i quali passano i segnali elettronici per la comunicazione fra tutti i componenti della macchina. Questi Bus variano da processore a processore. Comunque ogni Bus porta lo stesso tipo di segnale, qualunque sia il processore. Per esempio il Bus Dati potrà essere diverso tra l'886 e il 386, ma il suo scopo è sempre quello di trasportare dati.
I processori 80x86 usano i TTL Logic Levels. Ossia ogni filo di un Bus usa un determinata tensione per rappresentare 0 oppure 1. Generalmente quando ci si riferisce ai bit, si parla di bit 0 e bit 1, e non di 0v e 5v, poiché la tensione cambia da processore a processore, specialmente nei portatili.

## Il Bus Dati

I processori 80x86 utilizzano il Bus Dati per trasportare dati (ovviamente) da un componente all'altro del computer. La dimensione (intesa come numero di fili) del bus varia da processore a processore. Questo valore viene utilizzato per classificare il processore. Sui processori 80x86, il System Bus, contiene 8, 16, 32 o 64 fili. Avere un bus a 8 linee, non significa che il processore non possa gestire Word o DWord o QWord. Significa solo che il processore potrà prelevare solo 8 bit alla volta dalla memoria. In un processore a 64 linee, potrà prelevare 64 bits (8 bytes) alla volta. Questo processore, quindi, sarà molto più veloce. La dimensione del Bus Dati influenza le prestazioni del sistema più di qualunque altro bus. Avrete certamente sentito parlare di processori a 32bit o 64bit. Questi valori, sono dati appunto dalle dimensioni del bus dati.

## Il Bus degli indirizzi

Come abbiamo detto, il Bus Dati in un processore della famiglia 80x86 sposta informazioni tra una particolare locazione di memoria o un dispositivo di I/O, e la CPU. L'unica domanda che il processore si pone è, “Quale locazione di memoria o dispositivo di I/O?”. Il Bus degli indirizzi risponde a questa domanda. Per differenziare le locazioni di memoria ed i dispositivi di I/O, all'avvio del PC, il BIOS, assegna a ciascuna locazione di memoria o dispositivo di I/O un identificatore sequenziale. Quando un programma chiede l'accesso ad una (o più) particolare locazione di memoria o di I/O, il processore, "scrive" l'indirizzo univoco sul Bus Indirizzi, che appunto indirizzerà il Bus Dati su una precisa locazione.
Con un solo filo di Bus Address, il processore poteva creare solo due locazioni: una alla quale era assegnata il valore zero e l'altra a cui era assegnata il valore uno. Con n linee, il processore può fornire 2$^n$ indirizzi univoci (dato che ci sono 2$^n$ combinazioni di valori in un numero binario di n bit). Quindi il numero di bit del Bus degli indirizzi determinerà il massimo numero di locazioni di memoria ed I/O indirizzabili. I primi processori x86, per esempio, fornivano Bus Indirizzi di soli 20 bit. Perciò potevano accedere a sole 1,048,576 (o 2$^{20}$) locazioni di memoria (quindi 1MB). Bus più grandi possono accedere a memorie più grandi. I Pentium accedono alla memoria con 32 fili di Bus Address, quindi 4GB indirizzabili. I Pentium Pro e i Core Duo e Quad Core, hanno Bus Address a 36 fili, quindi 64 GB di memoria indirizzabile. Già si pensa a Bus Address a 48 fili per oltre 100 mila GB di dati. Questo avverrà quando i programmatori penseranno che 64 GB di RAM sono pochi per i loro programmi esattamente come lo è ora 1 solo MB. E pensare che 30 anni fa, si pensava che 1MB di memoria, fosse sufficiente a tutto...

## Il Bus di Controllo

Sul Bus di Controllo, non passano dati e indirizzi, ma viene utilizzato per chiarire le operazioni della CPU. Ad esempio, abbiamo visto che attraverso il Bus Dati, passano i dati letti o scritti da/su una locazione di memoria indicata sul Bus Indirizzi. Ma una volta arrivato alla locazione, il processore si chiede "Devo leggere o scrivere?". Due linee del Bus di controllo, chiamate Read e Write (dette anche linee RD/WR), specificano questo tipo di stato. Quando tutte e due le linee sono settate a 1, il processore è fermo (una situazione estremamente rara), se invece la linea Read è settata a 0, il processore sta leggendo, se la linea Write è settata a 0, il processore sta scrivendo. Abbiamo poi i fili MEM/IO, che indovinate un po', specificano se il processore sta leggendo/scrivendo da memoria o dispositivi I/O. Esiste anche il filo del clock. La linea degli interrupt e altri. Questi elencati sono i più importanti.