BUS DI CPU
. Mezzalama - M. Rebaudengo - M. Sonza Reorda
Politecnico di Torino
Dip. di Automatica e Informatica
1
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
Ciclo di Bus
È la sequenza di eventi attraverso la quale la CPU comunica con la
memoria, con un dispositivo di I/O, con l’Interrupt Controller.
In funzione dei processori può essere costituito da 2 o 4 cicli di clock di
sistema.
Internamente esistono sempre 4 periodi
Si compone di almeno 4 fasi, denominate T1, T2, T3, T4.
• T1: sull’address bus viene scritto l’indirizzo
• T2, T3, T4: sul data bus viene messo il dato.
Se la CPU non deve accedere all’esterno, i segnali di controllo del bus
sono inattivi ed i relativi piedini sono in alta impedenza.
Se nessun altro dispositivo utilizza il bus, questo si trova allora nello
stato di idle.
2
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
Ciclo di Bus
Nel 8086 il ciclo interno (4 CLK) è identico al ciclo esterno
di bus
Nei processori tipo pentium o nei bus di sistema (es. PCI) il
ciclo di bus è di 2 CLK
Ad esempio nel bus del pentium (host bus o memory bus) a
100MHz il trasferimento avviene in 2 CLK, cioè in 20ns.
In generale si indica la capacità di trasferimento del bus
espressa in MBps (Mega Byte per secondo)
Esempio: pentium con DBUS a 64 bit e 100MHz si ha:
(64/8)*100M/2 = 400MBps
Essendo 2 i periodi di clock per ciclo di bus
3
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
PCI CLK = 66MHz, 32 bit DBUS
AGPx4 = &&MHz x 4
4
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
Ciclo di Lettura
• T1: sull’address bus viene scritto l’indirizzo
• T2: la CPU forza sul data bus il valore Z
• T3, T4: la memoria scrive il dato sul data bus.
5
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
Ciclo di Scrittura
• T1: sull’address bus viene scritto l’indirizzo
• T2: la CPU scrive il dato sul data bus
• T3, T4: la memoria legge il dato dal data bus.
6
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
Cicli di Idle
Vengono inseriti dalla CPU quando necessario, ossia
quando:
• la CPU non necessita di nuovi dati e
• la coda interna delle istruzioni è piena, e non può essere
eseguita alcuna fase di prefetch.
7
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
Cicli di Wait
Se la memoria non è sufficientemente veloce, lo segnala alla
CPU, e questa inserisce tra T3 e T4 una serie di stati di
attesa (wait states) fino a che la memoria risponde.
Per comunicare all'8086 la necessità di uno o più cicli di
wait, la memoria esterna invia un segnale sul pin READY.
8
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
Ciclo di Bus
T1
T2
T3
T4
T1
T2
T3
T4
Bus Cycle
Address
9
Buffer
Data
Address
Buffer
Data
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
Connessione Maximum-Mode
8289
Bus
Arbiter
S2
S1
S0
8086
8288
Bus
Controller
Segnali di
Controllo
Bus Multibus
DEN
DT/R*
ALE
A0-A19
D0-D15
BHE*
RD*
Ready
QS1, QS0
10
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
Segnali di stato
11
S0*
S1*
S2*
0
0
0
Interrupt Acknowledge
0
0
1
Read I/O Port
0
1
0
Write I/O Port
0
1
1
Halt
1
0
0
Instruction Fetch
1
0
1
Read Memory
1
1
0
Write Memory
1
1
1
Inactive - Passive
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
Segnali di Controllo (I)
ALE: il fronte di salita segnala durante T1 che
sull’address bus è pronto un indirizzo.
IO/M*: indica se il ciclo di bus fa riferimento alla
memoria o a un dispositivo di I/O; questo segnale è
complementato nell'8088.
DT/R*: indica se si tratta di un ciclo di lettura o scrittura.
12
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
Segnali di Controllo (III)
RD* e WR* segnalano la direzione del trasferimento e
forniscono le relative informazioni temporali.
WR* segnala che il dato è pronto sul data bus e può essere
prelevato dalla memoria.
DEN* (Data Enable) segnala al dispositivo esterno che può
mettere sul data bus il dato durante le operazioni di lettura.
13
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
HOLD e HLDA
Costituiscono l’interfaccia verso il controllore di DMA.
Quando un dispositivo desidera acquisire il controllo del
bus, porta a 1 il segnale HOLD.
A questo punto il processore, terminato il corrente ciclo di
bus, pone in alta impedenza i segnali AD0-AD7, A8-A15,
A16/S3-A19/S6, SS0*, IO/M*, DT/R*, RD*, WR*, DEN* e
INTR e forza a 1 il segnale HLDA.
Quando il dispositivo rilascia il bus, riporta a 0 il segnale
HOLD.
14
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
Segnali di Interrupt
Sono:
• INTR (input): richiesta di interrupt da parte di un
dispositivo esterno
• INTA* (output): accettazione della richiesta da parte
della CPU, e temporizzazione del trasferimento del
codice di interrupt
• NMI (input): richiesta di interrupt non mascherabile.
15
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
READY
READY rappresenta un segnale di sincronizzazione con
l'esterno.
All'esecuzione dell'istruzione WAIT, il processore testa il
segnale READY e, se vale 1, inizia ad eseguire dei cicli di
idle; quando READY torna a 0, il processore esegue
l'istruzione successiva alla WAIT.
16
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
BHE
Nell’8086 il segnale BHE* (Bank Enable High) durante T1
determina, insieme con A0, la dimensione e l’allineamento del
tipo trasferito:
17
BHE*
A0
0
0
Parola Intera
0
1
Byte superiore da/per indirizzo dispari
1
0
Byte inferiore da/per indirizzo pari
1
1
Nulla
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
Segnali di Stato della Coda
I segnali QS0 e QS1 segnalano all’esterno che tipo di dato è
stato appena estratto dalla coda:
18
QS0
QS1
0
0
Nulla
0
1
Primo Byte
1
0
Coda Vuota (istruz. di salto)
1
1
Byte successivo al primo
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
LOCK*
Indica che un’istruzione con il prefisso LOCK e’ in corso di
esecuzione e conseguentemente il bus non puo’ essere
utilizzato da un altro potenziale master.
19
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
Request/Grant
Nei sistemi multiprocessore, sono utilizzati per eseguire il
passaggio del controllo del bus da un processore ad un
altro.
20
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
PENTIUM
DMA
INTERRUPT
L1/L2 cache
Control (MESI)
MULTIPROC.
SYNCR
ABUS (A31-A3, BE7-BE0)
DBUS (64 bit)
BIT PARITA’ (DP/-DP0)
ADS
Stato (D/C, W/R,M/IO)
READY
21
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
22
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
PENTIUM BUS CYCLE
Nel pentium esistono due tipi di cicli:
•single transfert: trasferimento di un solo dato
•Burst cycle: trasferimento di 4*64 bit (32 byte) effettuato
per aggiornamento della L1 cache nei casi di cache miss
23
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
CICLO DI BUS CON DATA BUS A 32 BIT
(ciclo lettura)
Con bus a 32 bit, ABUS è costituito dai seguenti
segnali:
A31-A2
BE3-BE0 (4 byte)
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
24
CICLO DI BUS CON DATA BUS A 32 BIT
(ciclo scrittura)
25
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
CICLO DI BUS CON DATA BUS A 32 BIT
(ciclo scrittura con wait)
26
M.MezzalamaM. Rebaudengo, M. Sonza Reorda
Scarica

document