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)

Usb (Universal Serial Bus)

Firewire

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. L’innovazione 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à d’installazione 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 l’enorme 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 l’interfacciamento 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);
}

 

Usb (Universal Serial Bus)

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.

 

Firewire

È 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.