IDE (Integrate Drive Electronics)
EIDE (Enhanced Integrate Drive Electronics)
Ultra ATA (Advanced technology attachment)
PIO Mode (Programmed Input/Output Mode)
Atapi (AT Attachement Packed Interface)
SCSI (small computer system interface)
Vesa local bus (Video Electronics Standards
Association)
Pci (peripheral Component interconnect)
AGP (Accelerated Graphics Port)
I
vantaggi della tecnologia AGP
![]()
IDE (Integrate Drive Electronics)
Interfaccia con controller separato dal disco:
| PC-XT bus 8 bit | ST-506/412 (Seagate Tecnology): 127 Mbyte max. | |
| PC-AT bus 16 bit (ISA): | Western Digital 1003 compatibile ST-506 max due h/d. | |
| ESDI compatibile ST-506 |
Interfaccia con controller integrato sul
disco: IDE (1986 WD e Conner)
Compatibile WD1003 gestisce due hard disk con capacità 528 Mbyte
e DTR di 5 Mbyteps. Memoria cache e coprocessore per la gestione
del controller. Linnovazione di questo standard fu quella
di spostare la maggior parte delle funzioni, svolte fino ad
allora dal controller, direttamente a bordo del disco fisso, con
due grandi vantaggi: estrema facilità dinstallazione e di
gestione del disco, il quale non richiedeva più una costosa
scheda di pilotaggio. Esiste comunque una scheda da inserire nel
bus, ma si tratta unicamente di un'interfaccia di transito a cui
si possono collegare due dischi IDE. Questo elevato livello d'integrazione
riduce la distanza che i segnali elettrici devono percorrere e
semplifica la costruzione della scheda da montare sul bus (la cui
componentistica spesso è anche integrata direttamente sulla
scheda madre). All'inizio degli anni Novanta i dischi IDE hanno
rimpiazzato i dischi ESDI (Enhanced Small Device Interface) che
avevano acquisito un'ampia diffusione sui PC alla fine degli anni
Ottanta. Un disco IDE con interfaccia a otto bit arriva a una
velocità di trasferimento massima di 3.3 Mbyteps, che
raddoppiano se si passa a 16 bit. Un disco ESDI con interfaccia
verso il bus a 10 MHz arrivava a 1.25 Mbyteps, mentre con un'interfaccia
a 20 MHz arrivava a 2.5 MByte al secondo. Il protocollo soffre,
però, di alcune limitazioni: la capacità, a causa dei suoi
parametri (1024 cilindri, 16 testine, 63 settori) che non può
gestire dischi con più di 538 Mbyte. In secondo luogo, la
nascita di nuove architetture di bus (PCI) fa sì che il
protocollo non è più in grado di soddisfare lenorme
flusso di dati che tali architetture generano.
EIDE (Enhanced Integrate Drive Electronics)
Nel 1993 WD propose un nuovo protocollo che superava in modo totale le suddette limitazioni, pur mantenendo una totale compatibilità con il precedente. Una versione migliorata dell'interfaccia IDE per le unità a disco, che porta la dimensione del disco rigido oltre il precedente limite di 504 Mbyte per arrivare fino a 8.4 Gbyte (1024 cilindri, 256 testine, 63 settori); inoltre aumenta abbondantemente la velocità massima di trasferimento portandola a un massimo teorico di 13.3 Mbyteps con una frequenza di 13.3 MHz (è previsto il passaggio a 16.7 Mbyte teorici con una frequenza di 16.7 MHz e poi a 33 Mbyteps con 33 MHz di frequenza). L'interfaccia EIDE consente di governare fino a quattro unità (hard disk, CD-ROM, streamer) per PC (contro le due ammesse dall'IDE tradizionale). La velocità dipende dalla periferica più lenta legata al canale. Per questo motivo su un canale si mette il CD-ROM perché più lento dei dischi fissi, sul secondo canale si mettono i due dischi fissi, un master ed uno slave.
Ultra ATA (Advanced technology attachment)
Protocollo introdotto da Seagate e Quantum
in grado di pilotare due dischi di 1080 Mbyte ciascuno, con un
data transfer rate di 16.6 Mbyteps, sono compatibili con lo
standard Enhanced IDE.
Ultra DMA/33 questo protocollo consente di ottenere un DTR
di 33 Mbyteps, 5400 rpm.
Ultra DMA/66 questo protocollo consente di ottenere un DTR
di 66 Mbyteps, 7200 rpm.
PIO Mode (Programmed Input/Output Mode)
Protocollo di trasferimento dei dati da e verso il disco fisso, nella quale l'hard disk è visto dalla CPU come un indirizzo logico di memoria al quale accedere attraverso linterfacciamento con il controller. PIO mode 4: costituisce un'evoluzione del protocollo PIO mode 3 già usato negli EIDE standard alias Fast ATA 2. Arriva a una velocità di 16.6 Mbyteps rispetto agli 11.1 Mbyteps del PIO mode 3.
Atapi (AT Attachement Packed Interface)
È un protocollo simile IDE/ATA indirizzato a periferiche diverse dagli hard disk.
SCSI (small computer system interface)
Sviluppata da SHUGART Associates: questa
interfaccia trova le sue origini nella tecnologia dei mainframe,
ora, nel mondo dei PC è addirittura in concorrenza con la
diffusissima ESDI ( Enhanced Storage Device Interface ). SCSI
significa interfaccia per piccoli sistemi di elaborazione ma come
si capirà esplicitamente nel prosieguo il termine piccolo si
riferirà solamente alle dimensioni di questa interfaccia. Prima
di parlare esplicitamente della SCSI è necessario spiegare perché
è nata; per migliorare il funzionamento dell'intero sistema è
necessario migliorare la comunicazione tra l'unità centrale e le
diverse periferiche. Questa è la filosofia che ha spinto i
progettisti hardware a concentrare le proprie forze sulla
periferia del sistema. Un grosso passo avanti lo si è fatto con
l'introduzione della tecnologia VLSI (Very Large Scale
Integration) che ha significato progettare dispositivi periferici
muniti di un piccolo cervello. Avere periferiche intelligenti
diverse significa però guai nelle comunicazioni tra di loro e
con la CPU. A questo punto nasce l'esigenza di un BUS di I/O (uno
slot) in grado di comunicare con tutte le periferiche, un
cosiddetto BUS standard. Nasce così lo standard SCSI dell'ANSI (American
National Standard Institute) nel 1982, che verrà poi rivisto nel
1986 ed infine migliorato con la nuova SCSI-2 nel 1990 .
CARATTERISTICHE
Il grande vantaggio di un'interfaccia SCSI, come già
accennato, è quello di permettere lo scambio dati tra computer e
periferiche. Si possono così collegare i più svariati
dispositivi (dischi, nastri, CD-ROM, stampanti, scanner, streamer,
DAT,...) anche con modalità di accesso diverse (random,
sequenziali, ottiche). Il bus di I/O unico rende in pratica ogni
dispositivo indipendente come funzionamento dagli altri. Gli
unici vincoli sono a questo punto costituiti dal numero di
dispositivi collegabili e dalla lunghezza del collegamento. Il
numero massimo di dispositivi è 8 (sette più il PC, ma con il
WIDE SCSI si arriva fino a 15 unità con 68 pin); il controllo
viene fatto tramite tre switch collocati sulle periferiche che
determinano un indirizzo binario (ID) che va da 000 a 111 (da 0 a
7) e che contraddistingue univocamente ogni periferica. I
dispositivi periferici sono collegati in cascata tramite cavi con
connettori. La lunghezza del collegamento dipende dalla modalità
di trasmissione elettrica del segnale: se si adotta la
trasmissione single-ended, l'informazione viaggia su un unico
filo che ha per riferimento terra, la lunghezza può essere fino
a 6 metri. Se si adotta la trasmissione differenziale, l'informazione
è ricavata dalla d.d.p. tra due segnali che viaggiano su due
fili, si può arrivare fino a 25 metri. Naturalmente la
trasmissione differenziale è più costosa della precedente.
Grazie all'interfaccia SCSI possono dialogare due dispositivi: l'unità
che comanda le operazioni è detta sorgente (initiator), quella
che segue gli ordini è chiamata destinataria (target). Per la
SCSI tutti e 8 i dispositivi sono uguali, compresa la CPU, così
ogni dispositivo può essere sorgente o destinatario. La cosa più
importante è l'indirizzo di identificazione perché è
attraverso esso che l'interfaccia gestisce i conflitti. Se due
dispositivi richiedono allo stesso tempo l'utilizzo del bus la
SCSI soddisfa prima quello con indirizzo più alto; è quindi
importante mettere in modo corretto questi indirizzi (CPU = 7!).
CARATTERISTICHE COSTRUTTIVE
Il bus SCSI è governato da una serie di componenti
elettronici (e spesso anche da un microprogramma) di controllo
che rendono il bus intelligente. Il bus è parallelo e il
controllore è attualmente implementato su un unico chip, al
contrario di quello che avveniva in passato quando c'era bisogno
di una scheda e quindi di uno slot libero. Il cavo prevede, per
il modello più usato, 50 fili conduttori e quindi porte a 50 pin
del tipo:
| a vaschetta per collegamenti esterni; | |
| flat cable per collegamenti interni; | |
| DB25 femmina solo per Apple Macintosh Plus. |
Standard elettrico:
| 30 masse; | |
| 8 linee dati + 1 per la parità; | |
| 9 linee di controllo; | |
| 1 linea di alimentazione; | |
| 1 linea non utilizzata. |
Attualmente è possibile trovare anche cavi
con 25 fili intrecciati (twistati) e quindi porte di 25 pin. La
trasmissione logica dei dati avviene tramite un parallelismo di 8
bit più un nono che controlla la parità. È necessario che ai
due estremi della cascata siano presenti dei resistori dell'ordine
di centinaia di ohm per evitare fenomeni di riflessione che
altrimenti si verificherebbero dovuti a differenze di impedenza
sul mezzo trasmissivo. La modalità temporale di trasmissione è
generalmente asincrona anche se esiste un'opzione per la
trasmissione sincrona. Per il controllore del bus è prevista una
frequenza massima di clock di 10 MHz, il che corrisponde ad una
velocità di scambio dati (data-rate) di 10 Mbyteps. (10 * 1 byte).
è oltremodo utile specificare che normalmente, nella
trasmissione asincrona i valori abituali raggiungono al massimo 1.5-2
Mbyteps; tale velocità è però tutt'altro che disprezzabile,
infatti solo i moderni hard-disk superano questo limite ma per
loro è già pronta la SCSI-2 o la trasmissione sincrona che
permette un data-rate abituale di 5 Mbyteps.
I COMANDI
L'architettura SCSI permette comandi distribuiti su otto
distinte fasi: quattro riguardano il controllo del bus mentre le
altre quattro si riferiscono al trasferimento dei dati.
Le quattro fasi in cui il sistema si può trovare riguardanti il
controllo del bus sono:
Le quattro fasi di trasferimento informazioni sono:
Grazie alla tecnologia SCSI si possono
evitare i tempi morti se i dispositivi periferici sono muniti di
un proprio buffer; infatti se il buffer di una stampante, per
esempio, è pieno, questa si scollega dal bus lasciandolo libero
per nuove operazioni; quando avrà terminato tutto il lavoro in
coda (buffer vuoto) con una ri-selezione potrà completare il suo
processo. La SCSI è molto utilizzata nei sistemi multitasking
perché, prima di tutto, opera su indirizzi logici e quindi non
necessita di continui controlli, ma soprattutto perché il
collegamento avviene tramite cavo multiflora il che significa che
un destinatario può ricevere dati da un qualsiasi sorgente o da
più sorgenti.
RELAZIONI SCSI-PC
Fino a qualche tempo fa la SCSI era solo utilizzata dagli
Apple Macintosh, così, quando IBM ha annunciato che avrebbe
inserito l'interfaccia SCSI sui suoi nuovi PC, la notizia ha
fatto scalpore. Fino ad ora veniva utilizzata l'interfaccia ST-506
per la gestione di dischi rigidi mentre si pensava che le
stampanti non avessero bisogno di una particolare interfaccia
potendosi collegare a porte seriali o parallele. Per questo
motivo la SCSI era considerata inutile, ma l'avvento delle nuove
CPU 386 e 486 e con la necessità di implementare nuove
periferiche intelligenti come una stampante laser o come una CD-ROM,
che oggi si stanno inserendo in tutti i campi, la situazione è
cambiata radicalmente in quanto, ora, la SCSI è la tecnologia
migliore per queste innovazioni. A favore di essa ha anche
giocato la nascita di SCSI-2 che ha migliorato velocità e bit di
parallelismo. I problemi che nascono riguardano soprattutto la
gestione dei dischi; infatti i PC IBM compatibili utilizzano l'indirizzamento
fisico mentre la tecnologia SCSI impone l'indirizzamento logico.
Il problema non ha ancora trovato una soluzione accettabile; si
sta agendo per via software. è infatti stato creato un emulatore
di nome ATA (AT bus Attachment) per i PC con bus ISA e EATA (Enhanced-ATA)
per quelli con bus EISA. La Microsoft ha inoltre annunciato una
soluzione che dovrebbe essere lo standard per la stesura dei
driver per dischi SCSI, essa prende il nome di ASPI. In
conclusione si può senza ombra di dubbio affermare che l'interfaccia
SCSI sarà la tecnologia del futuro soprattutto perché il
crescente interesse per il multimediale farà aumentare l'utilizzo
di periferiche come CD-ROM o scanner, e quello di sistemi
operativi operanti in multitasking. Oggi con lo SCSI III su bus
PCI si gestiscono 16 unità di I/O a 40 Mbyteps.
| TIPO DI INTERFACCIA | BUS DI I/O |
| PROTOCOLLO DI INTERFACCIA | DA PARI A PARI |
| BIT DI PARALLELISMO | 8 (SCSI) ; 16 (SCSI-2) |
| SCHEMA DI CONNESSIONE | CASCATA |
| LUNGHEZZA MAX COLLEGAMENTO | 6 m (S-E) ; 25 m (diff.) |
| NUMERO MAX DISPOSITIVI | 8 |
| TRASMISSIONE ASINCRONA | 2 MHz (2 Mbyteps) |
| TRASMISSIONE SINCRONA | 5 MHz (5 Mbyteps) |
| TRASMISSIONE SCSI-2 | 10 MHz (20 Mbyteps) a 16 bit |
| 40 MHz a 32 bit |
ASPI (ADVANCED SCSI PROGRAMMING INTERFACE)
Sviluppato da Adaptec definisce uno standard software per consentire un accesso al bus SCSI indipendentemente dalla scheda. Due possibili casi: il PC è già dotato di un hard disk IDE dal quale effettua il bootstrap, basta caricare in CONFIG il driver ASPI che gestisce la SCSI; invece se il PC utilizza il disco SCSI per effettuare il bootstrap, cè una ROM a bordo della scheda con la convenzione che il disco C è SCSI#0 ed il D è SCSI#1, ciò comporta l'intercettazione dell'INT 13H del BIOS. Le cose sono complicate perché non esiste un interrupt riservato alla SCSI, ciò ha provocato un groviglio di incompatibilità tra schede.
| Proposta di lavoro N° 1 |
Controllare se la scheda SCSI è dotata o meno di driver ASPI, quindi eseguire una scansione del bus SCSI elencando le periferiche collegate, infine leggere un settore da una di queste periferiche direttamente via SCSI scavalcando DOS e BIOS.
#include <stdio.h>
#ifdef __SMALL__
#error Unsupperted memory model
#endif
// alcuni dei comandi ASPI
#define HA_INQUIRY 0 // Quante interfacce SCSI nel PC?
#define GET_DEV_TYPE 1 // Tipo di dispositivo
#define EXEC_SCSI_CMD 2 // Esegui comando SCSI (di I/O )
#define ABORT_SCSI_CMD 3 // Interrompi comando SCSI
#define RESET_SCSI_DEV 4 // Inizializza dispositivo
#define SET_HA_PARAM 5 // Imposta parametri dell' interfaccia
SCSI
// messaggi restituiti dal driver ASPI nella variabile SRB.Status
#define SCSI_IN_PROGR 0 // comando SCSI in esecuzione
#define SCSI_END_OK 1 // comando SCSI terminato Ok
#define SCSI_H_ABORT 2 // comando SCSI interrotto da programma
#define SCSI_END_ERR 4 // comando SCSI terminato con errori
#define BAD_SCSI_REQ 0x80 // comando SCSI non legale
#define BAD_HA_NUM 0x81 // erroneo numero di Host Adapter
#define NO_SCSI_DEV 0x82 // Il dispositivo non è collegato
// bit impiegati per definire i ReqFlags di un EXEC_SCSI_CMD
#define DIR_BY_CMD 0x00 // la direzione stabilita dal cmd SCSI
#define DIR_INPUT 0x08 // dal Target allo Host (lettura)
#define DIR_OUTPUT 0x10 // dallo Host al Target (scrittura)
#define DIR_NO_DATA 0x18 // nessun trasferimento di dati
#define DO_LINK 0x02 // abilita il "linking"
#define DO_POST 0x01 // abilita il "command posting"
#define HEADER -8 // offset: # di byte prima di more[] di un SRB
#define MORE_SIZE 0x100 // vedi more[] di SRB
typedef struct{
unsigned char Cmd; // il comando ASPI (vedi sopra)
unsigned char Status; // Stato restituito dal driver ASPI
unsigned char HA_Num; // numero dell' interfaccia da usare
unsigned char ReqFlags; // dipendono dal particolare comando
unsigned char Resvd; // Riservati ad espansioni future
unsigned char more[MORE_SIZE]; // Dipendono dal tipo di comando
} SRB; // SRB = SCSI Request Block
void (far *openASPI(unsigned *)) (SRB far *); unsigned CloseASPI(unsigned
Handle);
char *Sts2Str(int), *Type2Text(int), * HASts2Str(int), *TargetSts2Str(int);
extern char ASPI_NAME[];
// da qui in poi: "cose" inerenti il solo standard SCSI
(niente ASPI) alcuni comandi SCSI del gruppo 0
#define TEST_UNIT_READY 0x00
#define REQUEST_SENSE 0x03
#define READ_UNIT 0x08
#define WRITE_UNIT 0x0A
#define INQUIRY 0x12
// CBD (Command Description Block)
typedef struct { unsigned char OpCode, A2, A1, A0, Len, Flags; }
CBD;
// deve stare nel data segment, quindi va dichiarata globale
char ASPI_NAME[9] = "SCSIMGR$"; //nome convenzionale
del driver ASPI
// apre il driver ASPI e ne ottiene il vettore per le chiamate,
se questa operazione non ha successo il driver //ASPI non è
installato, altrimenti legge l'indirizzo della routine ASPI
void (far *OpenASPI(unsigned *Handle)) (SRB far *)
{ static void (far *FuncPtr) (SRB far *); // puntatore a funzione:
asm { mov ax,0x3d00 // Open a File or Device
mov dx,offset ASPI_NAME
int 0x21
jc OpenErr
mov bx,Handle // offset di Handle (siamo in SMALL!)
mov [bx],ax // handle del file (device)
mov bx,ax
mov ah,0x4402 // IOCTL Read
mov dx,offset FuncPtr
mov cx,4 // 4 byte = sizeof(FuncPtr)
int 0x21 }
return (FuncPtr); OpenErr: return(NULL);
}
// chiude il driver ASPI (nel senso di un device DOS)
unsigned CloseASPI(unsigned Handle)
{ asm { mov ax,0x3e00 // Close a File or Device
mov bx,Handle
int 0x21
jc CloseErr
xor ax,ax }
CloseErr: return(_AX);
}
// varie routine di conversione da codice di errore/stato a ASCII
char *Sts2Str(int Status)
{ char *p;
switch (Status) {
case SCSI_IN_PROGR : p= "SCSI request in progres";
break;
case SCSI_END_OK : p= "SCSI request completed Ok";
break;
case SCSI_H_ABORT : p= "SCSI request aborted by host";
break;
case SCSI_END_ERR : p= "SCSI request completed with error";
break;
case BAD_SCSI_REQ : p= "invalid SCSI request"; break;
case BAD_HA_NUM : p= "invalid Host Adapter Number";
break;
case NO_SCSI_DEV : p= "SCSI device not installed";
break;
default : p= "Unknow ASPI status"; } return (p);
}
char *Type2Text (int typ)
{ char *p; switch(typ) {
case 0:p="Disk";break;
case 1:p="Tape";break;
case 2:p="Printer";break;
case 3:p="Processor";break;
case 4:p="Worm";break;
case 5:p="CD-ROM";break;
default :p="Unknown";}return (p);
}
char *HASts2Str (int Sts)
{ char *p; switch (Sts) {
case 0x00:p="No error";break;
case 0x11:p="Selection timeout";break;
case 0x12:p="Data over/under run";break;
case 0x13:p="Unexpected Bus Free";break;
case 0x14:p="Target Bus phase sequence failure";break;
default:p="Unknown HA status";} return (p);
}
char *TargetSts2Str (int Sts)
{ char *p; switch (Sts) {
case 0x00:p="No target status";break;
case 0x11:p="Check status (Sense data)";break;
case 0x12:p="Spec d Target/LUN is busy";break;
case 0x13:p="Reservation conflict";break;
default:p="Unknown Target status";} return (p);
}
| PORTA | CONNETTORE | VELOCITÀ | PERIFERICHE |
| Parallela | DB-25 | 430 Kbps | 1, 2 |
| Seriale | DB-9, DB-25 | 115 Kbps | 1,2 |
| SCSI I | 25 pin | 40 Mbps | 8 |
| SCSI II | 50 pin | 80 Mbps | 8 |
| Firewire | 4 poli | 1.2 Gbps | 63 |
| USB | 4 poli | 12 Mbps | 127 |
È un bus seriale bidirezionale che
permette di collegare al PC una qualsiasi periferica, per esempio
la tastiera o il monitor "a caldo", in pratica senza la
necessità di riavviare il sistema per consentirne il
riconoscimento. Inoltre, permette la connessione di altre
periferiche in cascata attraverso gli hub integrati nello stesso
o tramite adattatori USB esterni. Ogni dispositivo può essere
posto fino a cinque metri di distanza da ogni altro o dall'hub.
In tutto, si possono collegare ad un PC fino a127 differenti
periferiche. Poiché una porta USB fornisce 500 mA, sufficienti
per un modem, per uno scanner o una stampante di piccole
dimensioni non è necessario un alimentatore. La velocità è di
12 Mbps.
USB 2 sostituirà l'interfaccia SCSI nei dischi fissi perché
occupa un solo IRQ, indipendentemente dalla periferiche collegate.
È lo standard IEEE 1394, il sostituto dell'interfaccia SCSI, opera alla velocità di 1.2 Gbps e permette di collegare fino a 63 periferiche.
Vesa local bus (Video Electronics Standards Association)
La scheda video è un collo di bottiglia
per le CPU, anche utilizzando un coprocessore grafico: TI, WEITEK
e VRAM il collo di bottiglia persiste!
Occorre eliminare la scheda video dal bus di I/O per collegarla
direttamente al bus dati della CPU. Limiti:
| totale dipendenza dalla CPU (non è possibile l'upgrade); | |
| sulla mother board al massimo ci sono tre slot VL-bus; | |
| non è stabile oltre i 50 MHz. |
Pci (peripheral Component interconnect)
Nuovo tipo di bus di I/O sviluppato da HP, COMPAQ:
| è un bus intermedio non connesso
alla CPU; clock fisso a 33 MHz. a 32 bit (33 * 4 byte = 132 Mbyteps); è possibile raddoppiarlo a 64 bit sempre a 33 MHz (33 * 8 byte = 264 Mbyteps); bus mastering multiplo; supporta il Plug & Play. |
| Signal | Pin | Pin | Signal | Signal | Pin | Pin | Signal | ||
| GND | A1 | B1 | -12V | AD16 | A32 | B32 | AD17 | ||
| +12V | A2 | B2 | No Connect | 3.3V | A33 | B33 | CBE2 | ||
| No Connect | A3 | B3 | GND | FRAME- | A34 | B34 | GND | ||
| No Connect | A4 | B4 | No Connect | GND | A35 | B35 | IRDY- | ||
| Vcc | A5 | B5 | Vcc | TRDY- | A32 | B32 | 3.3V | ||
| PCIINT3- | A6 | B6 | Vcc | GND | A37 | B37 | DEVSEL- | ||
| PCIINT1- | A7 | B7 | PCIINT2- | STOP- | A38 | B38 | GND | ||
| Vcc | A8 | B8 | PCIINT4- | 3.3V | A39 | B39 | PLOCK- | ||
| Reserved | A9 | B9 | No Connect | SDONE | A40 | B40 | PERR- | ||
| Vcc | A10 | B10 | Reserved | SBO- | A41 | B41 | 3.3V | ||
| Reserved | A11 | B11 | No Connect | GND | A42 | B42 | SERR- | ||
| GND | A12 | B12 | GND | PAR | A43 | B43 | 3.3V | ||
| GND | A13 | B13 | GND | AD15 | A44 | B44 | CBE1- | ||
| Reserved | A14 | B14 | Reserved | 3.3V | A45 | B45 | AD14 | ||
| SPCIRST- | A15 | B15 | GND | AD13 | A46 | B46 | GND | ||
| Vcc | A16 | B16 | PCLKE | AD11 | A47 | B47 | AD12 | ||
| AGNT- | A17 | B17 | GND | GND | A48 | B48 | AD10 | ||
| GND | A18 | B18 | REQA- | AD9 | A49 | B49 | GND | ||
| Reserved | A19 | B19 | Vcc | KEY | A50 | B50 | KEY | ||
| AD30 | A20 | B20 | AD31 | KEY | A51 | B51 | KEY | ||
| 3.3V | A21 | B21 | AD29 | CBEO- | A52 | B52 | AD8 | ||
| AD28 | A22 | B22 | GND | 3.3V | A53 | B53 | AD7 | ||
| AD26 | A23 | B23 | AD27 | AD6 | A54 | B54 | 3.3V | ||
| GND | A24 | B24 | AD25 | AD4 | A55 | B55 | AD5 | ||
| AD24 | A25 | B25 | 3.3V | GND | A56 | B56 | AD3 | ||
| AD22(IDSEL) | A26 | B26 | CBE3- | AD2 | A57 | B57 | GND | ||
| 3.3V | A27 | B27 | AD23 | AD0 | A58 | B58 | AD1 | ||
| AD22 | A28 | B28 | GND | Vcc | A59 | B59 | Vcc | ||
| AD20 | A29 | B29 | AD21 | SREQ64- | A60 | B60 | SACK64- | ||
| GND | A30 | B30 | AD19 | Vcc | A61 | B61 | Vcc | ||
| AD18 | A31 | B31 | 3.3V | Vcc | A62 | B62 | Vcc |
AGP (Accelerated Graphics Port)
La Accelerated Graphics Port è una connessione diretta tra il controller della RAM di sistema (contenuto nel chip set) e l'adattatore grafico, che può essere su scheda o integrato sulla scheda madre. L'AGP è una connessione punto a punto, non è un BUS e non può essere collegato ad altri dispositivi, però il suo progetto è partito dalle specifiche del BUS PCI, che sono state estese sia per consentire maggiore velocità sia per introdurre nuovi meccanismi che alla fine si traducono in efficienza e prestazioni. Dato che ci sono segnali nuovi oltre a quelli derivati dal PCI, le specifiche meccaniche ed elettriche di una scheda AGP richiedono un nuovo connettore e relativo zoccolo sulla motherboard. Inoltre il chip set è chiamato a un lavoro supplementare, tra cui la conversione degli indirizzi di memoria da virtuali a fisici; esempi di chip set per AGP sono il 440LX di Intel per Pentium II e i VP3 di VIA e 5591 di SiS per processori su Socket 7 (Pentium, Pentium MMX, K6, 6x86MX). La connessione AGP funziona a 66 MHz su 32 bit; nella versione 2X il trasferimento dei dati avviene su entrambi i fronti d'onda dell'impulso di clock, per cui la frequenza del trasferimento risulta di 133 MHz e la banda passante massima è di circa 533 MByteps. Le schede che supportano solo la modalità 1X permettono il trasferimento a 266 Mbyteps, la modalità 4X corrispondente a oltre 1 Gbyteps. La concezione dell'AGP da parte di INTEL risale all'inizio del '96 a fronte della previsione che le applicazioni che visualizzano scenari 3D si sarebbero trovate davanti a un collo di bottiglia dovuto alla insufficiente banda passante del BUS PCI (132 MByteps teorici). Ecco quindi che a un certo punto non bastano più le poche centinaia di KByte o i pochi MByte che, nella memoria della scheda grafica, possono essere riservati alle texture. Né si può ogni volta leggerli da disco in memoria e, attraverso il processore, recapitarli alla scheda grafica, perché questa strada è troppo lenta per avere un'animazione continua sullo schermo. Le attuali schede AGP sono dotate di 4 o 8 MByte di memoria; a parte la risoluzione e il numero di colori supportati, la maggiore memoria servirà a contenere texture più numerose e più ingombranti senza pesare sul costo della scheda. Una scheda AGP costa infatti come una scheda PCI e non ha bisogno di molta memoria proprio perché preleva le texture ad alta velocità direttamente dalla RAM di sistema man mano che servono. Anche se oggi molte schede AGP supportano solo transazioni PCI (e non le dimel tipiche dell'AGP), l'obiettivo per l'hardware è quello di supportare la modalità dimel (Direct Memory Execute and Local also, ovvero texture in parte residenti sulla scheda e in parte lette dalla RAM di sistema), mentre il software dovrà essere attrezzato per sfruttare il nuovo hardware al completo, incluso il BUS collaterale SBA (SideBand Address di 8 bit) che fa parte dell'architettura AGP e che permette di ottenere le massime prestazioni. Per contro, le applicazioni aziendali e quelle professionali non sembrano beneficiare dall'AGP se non marginalmente per il minor carico a cui è soggetto in teoria il BUS PCI. Questo vantaggio è comunque percepibile solo nelle configurazioni dove il traffico di disco e LAN è così intenso da saturare il BUS PCI, il che non rappresenta la maggioranza dei casi. Ma in una workstation grafica e multimediale impegnata di frequente nei trasferimenti (per esempio tra scanner, dischi, rete e acquisizione video), ha senso installare una scheda AGP non per il 3D ma per liberare il PCI. Le prime schede grafiche con la tecnologia 3D Talisman di Microsoft, parzialmente supportata già dall'attuale DirectX 5.0. Talisman elabora separatamante, in strati indipendenti, gli oggetti di una scena 3D, ciascuno con qualità e priorità diversa; il rendering avviene in tempo reale, senza un frame buffer, e vengono rigenerate di volta in volta solo le parti che lo richiedono, mentre trasformazioni geometriche di base permettono di aggiornare ampie parti della scena senza ricrearle. Il risultato è una riduzione di 10 volte per la memoria locale e di 50 volte per la banda passante; se l'implementazione avrà successo, potremmo vedere in futuro schede di basso costo che sfruttano entrambe le tecnologie Talisman e AGP.
I vantaggi della tecnologia AGP.
La tecnologia AGP (Accelerated Graphics
Port) ottimizza il flusso di dati tra il processore, l'acceleratore
grafico e la memoria di sistema per offrire un nuovo livello di
multimedialità al PC. Il risultato è un miglioramento delle
prestazioni con le attuali applicazioni ad elevato contenuto di
grafica, soprattutto quelle con componenti 3D. Consente di
ottenere una velocità di picco nei trasferimenti di dati pari a
528 Mbyteps tra la memoria principale del PC e l'acceleratore
grafico AGP, mentre l'attuale bus PCI supporta una velocità di
trasferimento dati di soli 132 Mbyteps. Questo aumento della
velocità si ottiene grazie al trasferimento dei dati su entrambe
le rampe, di salita e di discesa, del clock e tramite l'uso di
modalità di trasferimento dei dati più efficienti. L'AGP
prevede due modalità di accesso diretto del controller grafico
alle mappe di texture nella memoria di sistema.
Pipeling, sovrappone i tempi di accesso della memoria o del bus
per la richiesta "n" con l'invio delle richieste
successive, "n+1", "n+2" e così via. Nel bus
PCI, la richiesta "n+1" non inizia finché non è
terminato il trasferimento dati della richiesta "n".
Anche se sia l'AGP che il PCI possono eseguire il "burst",
vale a dire trasferire più dati ininterrottamente in risposta ad
una singola richiesta, questa caratteristica migliora solo in
parte la natura non di tipo pipeline del PCI. L'ampiezza del
pipeling AGP dipende dall'implementazione ed è trasparente per
il software applicativo.

Sideband, utilizza 8 linee aggiuntive d'indirizzi
"sideband", il che consente al controller grafico d'inviare
nuovi indirizzi e richieste mentre allo stesso tempo continua lo
spostamento di dati ottenuto con le precedenti richieste sui 32
segnali principali per dati/indirizzi.
La cosiddetta memoria AGP non è altro che una porzione della
memoria di sistema allocata in modo dinamico, alla quale il
controller grafico può accedere rapidamente. La rapidità deriva
dall'hardware che traduce gli indirizzi in modo tale che il
controller grafico e il relativo software possano vedere uno
spazio contiguo nella memoria principale, laddove in realtà le
pagine non sono consecutive. Pertanto, il controller grafico è
in grado di accedere a strutture di dati di grandi dimensioni
come le bitmap di texture (in genere comprese tra 1 KB e 128 KB)
come se fossero una singola entità. L'hardware integrato nel
chipset si chiama GART (Graphics Address Remapping Table) e
svolge una funzione simile a quella dei sistemi di paginazione
presenti nella CPU. Gli indirizzi virtuali "lineari"
del processore sono tradotti in indirizzi fisici dall'hardware di
paginazione. Questi indirizzi fisici sono quindi utilizzati per
accedere alla memoria di sistema, all'LFB (Local Frame Buffer) e
alla memoria AGP. La CPU accede all'LFB e alla RAM AGP
utilizzando gli stessi indirizzi del controller grafico. Per
questo motivo, il sistema operativo imposta l'hardware di
paginazione della CPU su un rapporto diretto 1:1 di non
traduzione degli indirizzi virtuali in fisici. Per gli accessi
alla memoria AGP, il controller grafico e la CPU utilizzano un'apertura
contigua costituita da diversi megabyte. Ma il GART traduce
questi megabyte in vari indirizzi, possibilmente non contigui, di
pagine da 4 KB nella memoria di sistema. Anche i dispositivi PCI
accedono all'apertura della memoria AGP, ad esempio per la
riproduzione di video animati, tramite il GART.
Vantaggi dell'AGP.
