Sezione

Indirizzi Base Registri Interni
Area Comunicazione BIOS Funzioni BIOS Funzioni DOS
Prefazione Capitolo 1 Capitolo 2 Schede
Libreria ASM Libreria MAC Palestra Progetti ASM
Info Download INDICE

Capitolo 1

Home » Programma il Computer » Tutorial Assembly

Capitolo 1 - Il processore - Il Debugger

  Il Processore e il Debugger

I BUS DEI PROCESSORI 4/6 [9 di 60] 

    

  Aggiornato  4 aprile 2006
    Il Bus degli INDIRIZZI con la Memoria
     
bulletAdesso è il momento di entrare nel merito; non ci è ancora chiaro come possa un numero esadecimale individuare senza ambiguità una locazione di memoria o una periferica...

      

bulletNel primo caso l'immagine è forse più evidente: ogni dispositivo di memoria è formato da una pila di cassetti (locazioni) uno sotto l'altro, disponibili a contenere 8 bit (un byte) ciascuno.
bulletPer accedere ad una di queste locazioni si usano le linee del Bus Address e, poichè ciascuna di esse può assumere un livello logico binario è facile pensare che:
bulletcon una linea d'indirizzo (ADD0) potremo localizzare 2 celle di memoria,  la prima quando la linea vale 0 e la seconda quando vale 1.
bulletcon 2 linee (ADD0 e ADD1) si potranno controllare 4 celle di memoria,  la prima con ADD0=0 e ADD1=0, la seconda con 01, la terza con 10 e l'ultima con 11.
bulletIl meccanismo si può facilmente generalizzare: con 3 linee le celle saranno 23=8 e con n linee potremo controllare 2n locazioni

      

bulletDunque la massima dimensione della memoria indirizzabile dipende dalla quantità di fili disponibile nel bus address... Più alto è questo numero, maggiore è il numero di locazioni di memoria controllabili, in lettura o in scrittura, da parte della CPU.

      

bulletPer fissare le idee possiamo considerare il bus address dell'8086.
bulletQuando questo processore venne presentato, con le sue 20 linee d'indirizzo assicurava la disponibilità di 1 Mega di memoria, per l'esattezza 220=1.048.576 locazioni.
bullet La cosa faceva faville! Qualunque altro computer precedente poteva disporre al massimo di 64k (216=65536 locazioni) di memoria. Sembrava che il problema fosse risolto per sempre.... Sembrava!

      

bulletBen presto questa disponibilità si sarebbe rivelata assolutamente insufficiente, così come l'aumento a 16 Mega (=224), assicurato dall'aggiunta di altre 4 linee di indirizzo, con l'avvento di '286 e '386.
bulletI moderni processori dispongono di 36 linee d'indirizzo e i potenziali 65536 Mega (=236) garantiti sono per ora sufficienti.

      

bulletNelle configurazioni che vanno di moda oggi la quantità normale di ram installata è di 128M con tendenza ai 256M (raramente ne viene installata in misura maggiore, se non in presenza di centri di calcolo particolarmente bisognosi, come server o work station industriali).
bulletIl futuro ci riserverà certamente bus address ancora più capaci: le architetture già prevedono una probabile espandibilità a 48 linee...

      

bullet I processori della famiglia 80x86 hanno visto aumentare velocemente nel tempo anche la dimensione di questo bus; vediamo il dettaglio (anno 2002):

      

Processore Data Address Size Dimensione Max Memoria
8088 20  bit 220 =  1  Mbytes
80188 20  bit 220 =  1  Mbytes
8086 20  bit 220 =  1  Mbytes
80186 20  bit 220 =  1  Mbytes
80286 24  bit 224 = 16  Mbytes
80386SX 24  bit 224 = 16  Mbytes
80386EX 25  bit 225 = 32  Mbytes
80386DX 32  bit 232 =  4  Gbytes
80486 32  bit 232 =  4  Gbytes
Pentium 32  bit 232 =  4  Gbytes
Pentium II 36  bit 236 =  64 Gbytes
Pentium III 36  bit 236 =  64 Gbytes
Pentium IV 36  bit 236 =  64 Gbytes

      

Suggerimento Il bus address è nato per indirizzare (come fa capire il suo nome..) cioè per consentire al processore di chiamare in causa una ben precisa locazione di memoria, ma anche una determinata periferica; il numero dell'indirizzo, posto sul bus, arriva di norma sia alla prima che alla seconda, ma solo una delle 2 risponderà al processore! Come è possibile?

      

bulletLa cosa non ha nulla di magico: insieme al bus address, si fa pervenire ad entrambe un filo di controllo. Se il livello presente su di esso è 1 sarà la memoria ad intervenire, mentre se 0 sarà il dispositivo di I/O.
bulletQuesta tecnica è praticata fin dai primi processori che, con un secondo filo di controllo (o con 2 fili distinti) possono far sapere a chi riceve l'indirizzo se deve dare (read) o ricevere (write) dati.

      

bulletSul processore 8086 la prima linea di controllo si chiama MEM/IO (MEMoria o Input/Output) e le altre 2 RD e WR (entrambe attive basse); combinando tra loro questi segnali (con opportuni piccoli circuiti, detti di decodifica) viene evitato ogni conflitto e il processore potrà disporre a suo piacere o dell'una o dell'altro, in lettura o in scrittura.

      

bulletMa chi si incaricherà di suggerire al processore i valori logici con cui impostare le linee di controllo e dove prenderà il numero binario da mettere sul bus address?

      

bulletUna delle magie dei processori è quella di interpretare ed eseguire i programmi... Basterà quindi costringerlo ad eseguire l'istruzione giusta.
bulletDi solito la lettura o la scrittura di una locazione di memoria si realizza facendo eseguire l'istruzione MOV; spetta alla posizione degli operandi stabilire il flusso dei dati.
bulletL'istruzione MOV è una tra le più varie e multiformi; fissiamo le idee con un paio tra i numerosi possibili esempi, lasciando al lettore la possibilità di cimentarsi con altri.

      

bulletNelle descrizioni seguenti sono citati concetti (come indirizzo fisico o registri) che non ti sono ancora noti, ma il senso delle operazioni sembra accettabile.
bulletAnche se il tono della trattazione è decisamente tecnico (e ti sarà chiaro solo al termine di questo paragrafo dedicato al processore...) desidero proportelo lo stesso, per darti la possibilità di confrontarti con la reale sequenza di eventi che si susseguono nelle operazioni di lettura scrittura e della sua memoria.
bulletl'istruzione MOV AL,ES:[DI] si legge così: metti in AL il contenuto della locazione puntata da ES:DI.
bulletsi tratta dunque di un'operazione di lettura di memoria.
bulletobbliga il processore a scrivere sul bus address l'indirizzo fisico ottenuto combinando il contenuto dei suoi 2 registri ES e DI.
bulletnon appena l'indirizzo è stabile il processore mette MEM/IO a 1 e RD a 0, obbligando la memoria a copiare sul bus dati il contenuto della locazione puntata dall'indirizzo predisposto sul bus address (come vedi i 2 bus sono e hanno compiti diversi!)
bulletil processore si mette in attesa sul bus dati per catturare l'informazione in arrivo e, non appena è disponibile, la scrive nel suo registro AL.
bulletse il processore fosse un 8086 e il contenuto dei suoi registri fosse ES=B800H e DI=0000H, sul bus address verrebbe posto l'indirizzo fisico B8000H (appunto a 20 bit) e sul bus dati (e poco dopo, in AL) verrebbe a trovarsi il byte (8 bit) contenuti nella prima locazione della RamVideo destinata alla gestione del Modo Testo.
bulletl'istruzione MOV DS:[SI], AL si legge così: metti nella locazione puntata da DS:SI il contenuto del registro AL.
bulletsi tratta dunque di un'operazione di scrittura di memoria.
bulletobbliga il processore a scrivere sul bus address l'indirizzo fisico ottenuto combinando il contenuto dei suoi 2 registri DS e SI.
bulletpoichè il dato gli appartiene (provenendo da un suo registro, AL) il processore lo copia immediatamente sul bus dati, a disposizione della memoria
bulletdopo qualche istante (non appena indirizzo e dato sono stabili) il processore mette MEM/IO a 1 e WR a 0, obbligando la memoria a prelevare il dato dal bus dati e a copialo nella locazione puntata dall'indirizzo predisposto sul bus address.
bulletse il processore fosse un 8086 e il contenuto dei suoi registri fosse DS=1234H e SI=0000H, sul bus address verrebbe posto l'indirizzo fisico 12340H (sempre a 20 bit) e sul bus dati (e poco dopo, anche dentro la locazione) verrebbe a trovarsi il byte (8 bit) contenuto nel registro AL.

    

Pagina Precedente Capitolo 1 Pagina Successiva I BUS DEI PROCESSORI 4/6   Torna alla Home  del Capitolo1 del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
9 di 60
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60

    

CAP. 1 » 1. Processore 80x86 2. Istruzioni 80x86  3. Debug  4. La Grande Libreria
TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati