[gull] vieillissement SCSI

Marc SCHAEFER schaefer at alphanet.ch
Sat May 24 08:51:30 CEST 2003


On Sat, May 24, 2003 at 04:57:00AM +0200, Marc Mongenet wrote:
> À noter qu'en désactivant l'Ultra-SCSI, tout est stable avec chaque
> disque ayant une terminaison active. C'est dire si le bus SCSI
> reste capable de fonctionner malgré des conditions adverses.
> Ca aurait toutefois été dommage de se priver de l'Ultra-SCSI, le
> débit passant alors de 10 Mo/s à 7 Mo/s d'après 'hdparm -t'.

Quelques petits commentaires et précisions:

comme déjà dit ici même par quelqu'un d'autre, le bus SCSI se termine à
chaque bout. Une terminaison est une simple résistance qui ferme le bus
sur sa résistance caractéristique et évite, notamment, les échos sur le
bus (le signal qui repart, un peu comme dans une fibre optique si le
coefficient de réfraction change, ou sur la route si vous freinez à
moitié sur de l'herbe).

Dans certains cas (terminateurs actifs), la résistance est variable et
couplée à un régulateur alimenté. On reconnaît (parfois) ces
terminateurs à leur LED. Il est recommandé de les utiliser dès Ultra
SCSI.

La terminaison est alimentée par la ligne TERMPWR du bus SCSI: il faut
donc qu'au moins un périphérique l'active (en général par défaut activé:
il y a des diodes qui protègent et permettent l'activation simultanée).

Là où cela se complique c'est si le bus n'est pas de taille uniforme sur
toute sa longueur. Par exemple, sur pas mal de cartes modernes on a un
bus 68 pôles -- ou deux -- et un bus 50 pôles, souvent interne.

En règle générale, on ne peut utiliser que deux des trois bus à la fois
(vérifier avec la documentation). 

On configurera dans tous les cas les périphériques en bout de bus (les
deux) avec le terminateur actif.

Sur la carte SCSI de l'ordinateur, on doit configurer la terminaison ainsi:

   68 ------ carte SCSI --- 68                             AUCUN

   68 ------ carte SCSI                                    ACTIVE (HIGH+LOW)

   50 ------ carte SCSI                                    ACTIVE (HIGH+LOW)

   68 ------ carte SCSI --- 50                             ACTIVE (HIGH) !!

(les bus notés correspondent à des bus avec des périphériques, dont le
dernier est terminé)

Le dernier cas termine correctement les bits haut du bus 68 mais ne
termine pas les bits bas qui sont terminés par le dernier périphérique
du bus 50.

Eviter en règle générale les configurations `automatiques', c'est très
foireux.

Eviter également certains convertisseurs 68/50 qui mettent à la terre
les lignes supérieures: on ne peut alors utiliser ces convertisseurs que
sur un bus 50 avec des périphériques 68. J'ajoute qu'en raison du
protocole SCSI il est nécessaire de désactiver la négociation `wide'
pour un périphérique situé sur un bus `wide', supportant le `wide', mais
connecté en `narrow' (p.ex. par manque de câble).

On peut très bien mélanger des périphériques `wide' (68 pôles, 16 bits)
avec des périphériques `narrow' (50 pôles, 8 bits) si l'on respecte les
règles ci-dessus. On peut également mélanger les vitesses, jusqu'à un
certain point.

P.ex. un bus avec un disque Ultra-SCSI wide (20 mégatransfers/seconde,
40 mégabytes par seconde) peut être utilisé avec un scanner en SCSI
asynchrone narrow à 5 MByte/s. Pour chaque couple d'initiateur/cible,
la négociation est faite séparément. En bref lorsque le disque est lu,
il est lu à 40 MByte/s (*), et lorsque le scanner est lu, c'est à 5 MByte/s,
si l'autre périphérique ne transfère pas.

Par contre, si un périphérique plus lent utilise pendant un certain
temps un certain pourcentage du bus, le bus est virtuellement ralenti
d'autant:

   exemple: le scanner utilise 10% du bus SCSI (donc transfère
            à 5 MByte/s 10% du temps, puis se déconnecte du bus 90% du temps),
            il restera pour le disque en moyenne 36 MByte/s. Par contre,
            si le scanner envoie en moyenne à 2.5 MByte/s (50% du temps
            à 5 MByte/s, 50% déconnecté en attente de digitalisation en
            tampon), alors il ne restera plus que 20 MByte/s pour le
            disque (et non pas 35!).

En ce qui concerne les protocoles électriques, Ultra SCSI fonctionne
également sur un bus où des périphériques plus lents existent.

Par contre, et c'est important, le LVD (low-voltage differential), qui
permet des débits de 80 à 320 MByte/s est électriquement incompatible
avec le Ultra SCSI et ce qui précède. La plupart des adaptateurs ont un
mode de repli, qui chasse le bus entier en Ultra SCSI si un seul
périphérique n'est pas LVD.

Ajoutons cependant qu'il existe des cartes SCSI avec des isolateurs
qui permettent d'utiliser des périphériques Ultra et LVD sur deux branches
particulières du bus SCSI à leurs vitesses usuelles (avec le bémol du
ralentissement virtuel du bus comme d'habitude). Cette technique s'approche
du bricolage, cependant.

En ce qui concerne les tolérances sur les câbles et leur longueur:

   nom       fréquence longueur max  longueur min entre les périphériques
   Async     -         5m           -
   Fast-SCSI 10 MHz    3m           15 cm
   Ultra     20 MHz    1.5m         30 cm
   LVD       40+       12m          -

(la largeur de bus 8/16 n'a pas d'influence)

Citons encore le bus differential SCSI, technique similaire à
LVD, mais utilisant les voltages usuels du SCSI plus
élevés et donc plus lents à moduler.

J'ajoute enfin que l'overhead des commandes SCSI se fait de plus en plus
sentir avec l'augmentation de performance, c'est pour cela qu'à des
vitesses de 160 à plus on peut utiliser une simplification du protocole
SCSI, appelé le `packetized SCSI', qui est plus performant
(techniquement: les commandes et messages passent en phase de données à
la vitesse du bus plutôt qu'en asynchrone).

(*) idéal: 37 MByte/s en raison de l'overhead des commandes SCSI.

Le protocole SCSI est un protocole en couche qui suit le modèle OSI. Les
couches supérieures sont utilisées dans un nombre important de
protocoles de stockage aujourd'hui: SCSI, Fibre Channel, Firewire, USB
storage, Serial ATA. Par contre, sa couche inférieure (SPI, SCSI
parallel interface) est condamnée à brève échéance.

Exemple: on accède les données d'un appareil photo via USB en envoyant
les mêmes commandes (READ, 0x28) que celles pour un disque SCSI. Au
niveau du kernel Linux, c'est effectivement la couche usb-storage qui
émule un adaptateur SCSI: on utilise le périphérique `sd' (disque)
comme d'habitude. Ceux qui utilisent un graveur IDE, via la couche
ide-scsi connaissent déjà ce principe.




More information about the gull mailing list