Sartomiki.net

  • Aumenta dimensione caratteri
  • Dimensione caratteri predefinita
  • Diminuisci dimensione caratteri
Home Cronologia Sistemi a microprocessori BUS e segnali di controllo

BUS e segnali di controllo

E-mail Stampa PDF
Valutazione attuale: / 0
ScarsoOttimo 

BUS e Bridge
A seconda del sistema in analisi (Desktop o Server), si hanno diverse configurazioni del BUS. In linea generale si può dire che in un pc esistono diversi BUS a velocità differenti. Essi sono organizzati secondo una gerarchia dal più veloce (più vicino al processore), al più lento (più vicino alle periferiche). Avere una gerarchia di BUS porta numerosi vantaggi, in quanto se ce ne fosse solo uno bisognerebbe gestire con lo stesso BUS transazioni lente e veloci (tutte dovrebbero aspettare i tempi delle più lente). Un tempo i PC avevano un solo livello di BUS, poichè i tempi di accesso alla memoria e quelli di esecuzione erano comparabili, oggi, invece non è più così. Per collegare i diversi livelli di bus esistono delle specie di router, detti bridge, con il compito di smistare i pacchetti (conversione). Nella pratica esistono in un sistema Desktop principalmente due bridge:
-North Bridge, che si occupa di gestire le memorie dinamiche (RAM, cache, VGA). Il fatto che RAM e cache si trovino sullo stesso BUS, implica che esse non possano trasferire dati direttamente, ma solo quando il BUS non è occupato dal processore.
-South Bridge, che comunica con il NorthBridge e gestisce un certo numero di interfacce (USB, IDE, Serial ATA).
-Normalmente a questi due bridge si allinea anche il Super I/O, che attraverso un'interfaccia LPC, comunica con le interfacce più datate (seriale, parallela, floppy…).
Le prestazioni di un BUS dipendono quindi non solo dal parallelismo del data BUS (DBUS) e dal clock, ma anche dalla velocità dei dispositivi che lo utilizzano. Ad esempio al BUS PCI si affacciano solo i dispositivi coerenti con la sua velocità, mentre quelli più lenti si affacciano all'ISA (gestito attraverso un DMA).
Per quanto riguarda i sistemi Server essi hanno un numero maggiore di livelli di cache, collegati direttamente al processore o alle RAM. Il processore poi comunica tramite un bridge al BUS di sistema e tramite altri bridge alle interfacce LAN.
La capacità di trasferimento dei BUS si esprime in MBps (MegaByte al secondo). Il numero di bit del DBUS, che comunica con le cache è molto maggiore del numero di bit con cui lavora il processore. Infatti questi bit sono usati per l'aggiornamento della cache, non per il normale utilizzo della CPU. Ad esempio nel IA-32 il BUS non è a 32bit, ma ne ha di più.

Cicli di BUS
Un ciclo di BUS (Host BUS) è una sequenza di operazioni logiche che avvengono in istanti di tempo successivi, nella quale il microprocessore comunica con la memoria, i dispositivi di I/O e l'interrupt controller. Ogni ciclo di BUS è un'entità atomica, nel senso che non si può bloccare una volta iniziato. A seconda della CPU, un ciclo di BUS può essere di 2/4 cicli di clock (segue quindi un protocollo semisincrono). Il ciclo di BUS è sempre composto da 4 fasi (sull'address bus viene scritto l'indirizzo e successivamente sul data BUS viene messo il dato; il primo step dura un tempo T1, il secondo T2+T3+T4.). Nell'8086 il ciclo di BUS on-chip corrisponde a quello del bus esterno ed è pari a 4 periodi di clock.
Ci sono principalmente 4 tipi di ciclo di BUS nell'8086 (nel Pentium ne esistono altri tipi):
-Ciclo di READ da memoria.
-Ciclo di WRITE da memoria.
-Ciclo di READ da I/O.
-Ciclo di WRITE da I/O.
Se nessun dispositivo utilizza il BUS ci si trova in uno stato di idle. Quando il BUS è in questo stato è utilizzabile da altri dispositivi.
Un Ciclo di WAIT è un periodo di tempo in cui si ritarda la fine di una delle operazioni precedenti.
I tempi in gioco durante un ciclo di lettura da memoria sono:
-T1, in cui viene scritto sull'Address BUS (ABUS) l'indirizzo.
-T2, in cui la CPU forza sul data BUS (DBUS) lo stato di Z.
-T3, T4, in cui la memoria scrive il dato sul data BUS.
I tempi in gioco durante un ciclo di scrittura da memoria sono:
-T1, in cui viene scritto sull'Address BUS l'indirizzo.
-T2, in cui la CPU scrive il dato sul data BUS.
-T3, T4, in cui la memoria legge e memorizza presente sul data BUS.
I cicli di Idle vengono inseriti dalla CPU in due casi:
-Quando non sono necessari nuovi dati.
-Quando la coda di prefetch è piena e non è quindi possibile accodare nuove istruzioni.
I cicli di WAIT sono richiesti dalla memoria nel caso in cui non sia sufficientemente veloce a leggere o a scrivere, tramite il segnale READY. La CPU provvede a inserire prima dei tempi T3 e T4 dei wait states.
Il DMA gestisce i trasferimento da I/O in memoria senza passare dalla CPU. In questo modo è possibile caricare dei dati sulla cache di secondo livello da DRAM, senza interpellare la CPU.

BUS di sistema
Questi BUS collegano alcuni moduli con il PCI controller, che a sua volta si interfaccia con l'HOST BUS. I BUS di sistema interconnettono anche il DMA contoller e gli interrupt. In questo BUS le modalità di gestione dei segnali e la temporizzazione sono differenti rispetto all'HOST BUS, ed è quindi necessario il PCI controller, con il compito di compensare queste differenze. Ad esempio il BUS di sistema (PCI) lavora a circa 33/66MHz, rispetto all'HOST BUS che lavora a 400MHz. Per effettuare questa compensazione il PCI controller utilizza dei buffer di prefetching e di posting, in modo tale da immettere in modo veloce i dati sull'HOST BUS e da permettere alla CPU di immettere i dati sul PCI in modo sincrono.
Tutti i BUS di sistema moderni sono configurati in modo da gestire dinamicamente la configurazione (plug and play), dando ad ogni dispositivo collegato delle caratteristiche in fase di avvio (le direttive sono date dal BIOS). Per mandare la configurazione in modo istantaneo, ad ogni modulo è associato un buffer di 256B (diviso in 32bit), in cui sono scritte tutte le caratteristiche del modulo stesso.
Nei BUS di sistema è presente un CLOCK, che ha il compito di dare la temporizzazione ai dispositivi collegati.
Il PCI è il BUS di sistema più utilizzato ed è munito di 4 linee di interruzione a 4 livelli. In più ha dei meccanismi di supporto alla cache e ha la possibilità di essere esteso da 32b a 64b.
Il PCI BUS Arbiter ha lo scopo di gestire l'arbitraggio del PCI. Il meccanismo prevede che ogni modulo abbia due segnali distinti per ogni dispositivo. Con il REQUEST ogni dispositivo è in grado di richiedere all'arbitro l'uso del BUS e con il GRANT ogni dispositivo è in grado di capire quando la sua richiesta è stata approvata.

Segnali e temporizzazione del Pentium
I segnali principali per la gestione dei BUS di sistema sono:
-CACHE# se è attivo insieme a KEN# viene esteso a CACHE Line Fill un read/fetching cycle, altrimenti verrà avviato solo un ciclo di Burst.
-KEN# segnala che il ciclo è cacheble. Non può essere attivo se si sta eseguendo un ciclo di I/O
-BRDY# segnala se il device indirizzato ha completato l'accesso in Burst Mode
-R/W# Indica se si tratta di un ciclo di lettura/scrittura
-C/D# indica se si tratta di Code o Data
-IO/M# indica se si sta comunicando con un dispositivo I/O oppure con una memoria
-LOCK# indica che nel corrente ciclo di BUS si sta svolgendo un'istruzione con prefisso LOCK. Conseguentemente il BUS non può essere utilizzato da un altro potenziale master.

I segnali di comunicazione con il DMA controller sono:
-HOLD indica che un dispositivo vuole utilizzare il DMA. Infatti quando un dispositivo vuole acquisire il controllo del bus, porta il segnale di HOLD a 1. A questo punto il processore, dopo avere terminato l'istruzione corrente, pone nello stato Z i segnali dell'Address BUS e i segnali di controllo, fino a quando il segnale non torna a 0.
-HLDA viene attivato per indicare che è pronta la comunicazione, dopo aver messo in Z-state l'interfaccia dell'address bus e i segnali di controllo

I segnali di comunicazione con l'interrupt controller sono:
-INTR(in) una richiesta di interrupt da un dispositivo esterno.
-INTA(out) richiesta di interrupt accettata e temporizzazione del trasferimento del codice di interrupt.
-NMI interrupt non mascherabile.

I segnali di comunicazione con l'Address BUS sono:
-ADS# Segnale che durante il primo colpo di clock segnala che un indirizzo è pronto sull'Address BUS. Definisce l'inizio di un ciclo di BUS e permette a tutti i dispositivi che si affacciano sul BUS di sincronizzarsi.
-A31:A2 linee che identificano una QuadWord
-BEn#-BEo# indica il Bank Enable, vengono quindi selezionati i byte interessati nel trasferimento da una determinata istruzione. Da un punto di vista logico la memoria è vista come una sequenza di Byte, con indirizzi crescenti, anche se in realtà da un punto di vista fisico la memoria è organizzata in banchi. I segnali BEi permettono di selezionare il banco fisico a cui corrisponde un determinato indirizzo logico. Nell'8086 questo segnale ha i che varia da 0 e il numero di byte di paralellismo del data BUS e definisce la dimensione e l'allineamento del tipo trasferito. In questo modo con solo BE0 attivo si trasferirà un Byte, con anche BE1 2 Byte...

I segnali di comunicazione con il Data BUS sono:
-READY sincronizza la CPU con l'esterno. Nel caso sia attiva l'istruzione di WAIT la CPU attende che READY non sia attivo prima di eseguire l'istruzione successiva. Se questo segnale risulta a 0 il processore inserisce dei cicli di idle.
-D63:D0 linee di dati
-DP7:DP0 linee con codice di parità (1b per ogni Byte)

I segnali di comunicazione con la cache sono:
-HIT# viene attivato nel caso di Cache Hit
-HITM# viene attivato nel caso di Cache Hit con una linea modificata
-PHIT# e PHITM#: Hit privata.

Bus Cycle del Pentium
Nel Pentium esistono due tipi di ciclo di BUS principali:
-Single transfert, con il quale si trasferisce un solo elemento
-Burst cycle (detti anche 2-1-1-1, che sono il numero di colpi di clock necessari al trasferimento), con il quale si trasferiscono gruppi di elementi (4*64 bit). Questo tipo di ciclo è usato nel caso di Cache Line Fill o di Write Back da cache a memoria. Per migliorare le prestazioni si può aumentare il parallelismo della CACHE line (anche se causa problemi nell'architettura) e il numero di cicli (ma causa un tempo di inattività della CPU maggiore). Il primo ciclo, necessita sia della trasmissione dell'indirizzo, sia del dato, ma, siccome si tratta di indirizzi contigui, gli altri cicli non richiederanno la trasmissione dell'indirizzo. Per non provocare errori è necessario utilizzare memorie Fast Operative. I cicli di Burst possono avvenire per tre motivi:
--uno snooping esterno rileva una HIT in una linea modificata nella cache interna
--uno snooping interno rileva una HIT in una linea modificata nella cache interna
--una linea modificata deve essere rimossa per fare spazio ad una nuova cache line.
Esistono altri tipi di cicli per applicazioni specifiche (spegnimento, halt, flush…).


blog comments powered by Disqus
 

http://sartomiki.net/modules/mod_fuofb/assets/it/find-us-on-facebook-1.png

Follow me

Amici

Chi è online

 8 visitatori online

Siti amici

Web4Web.IT - Low Cost Hosting

Notizie flash

Stiamo lavorando per voi... A breve saranno aggiunte nuove pagine sul sito. Per il momento oltre a questo sito in costruzione puoi visitare i miei sottodomini: http://catene.sartomiki.net e http://fasi.sartomiki.net. STAY TUNED!

PUBBLICITA'