Small Computer System Interface (SCSI) est un standard définissant un bus informatique reliant un ordinateur à des périphériques ou à un autre ordinateur aujourd'hui en cours de remplacement par le SAS (Serial Attached SCSI).
Le standard décrit les spécifications mécaniques, électriques et fonctionnelles du bus.
En 1979, le précurseur du bus SCSI est créé par la société Shugart, du nom de son fondateur Alan Shugart, pionnier de l'informatique et ancien ingénieur chez IBM (alors spécialiste des disques durs), sous le nom de SASI (en) (Shugart Associates Systems Interface) .
En 1981, Shugart se lie avec NCR Corporation dans l'espoir d'en faire un standard ANSI. Un comité technique est créé, il améliore sensiblement le bus SASI, le renomme SCSI et la norme X3.131 le décrivant voit le jour en 1986. La première norme définissait trop de paramètres optionnels dans son implantation (notamment dans le jeu de commandes, mais aussi dans les possibilités matérielles comme pour les bits de parité, etc.), et les incompatibilités entre fabricants sont nombreuses.
Des améliorations sont apportées en 1994 avec la norme SCSI-2 et récemment avec la norme SCSI-3, réduisant ces problèmes d'interopérabilité.
Ce bus diffère des autres en ce qu'il déporte la complexité vers le périphérique lui-même. Ainsi, les commandes envoyées au périphérique peuvent être complexes, le périphérique devant alors (éventuellement) les décomposer en sous-tâches plus simples, ce qui est avantageux si l'on travaille avec des systèmes d'exploitation multitâches.
Cette interface est donc plus rapide, plus universelle et plus complexe que l'interface E-IDE dont le principal inconvénient est d'accaparer un pourcentage non négligeable du processeur, ce qui constitue un handicap quand de nombreux flux de données sont simultanément ouverts.
Plus « intelligente » et moins dépendante de l'unité centrale, l'interface SCSI peut gérer des périphériques internes et externes très variés, tels que disques durs, scanners, graveurs, unités de sauvegardes, etc.
La norme SCSI-2 précise que le bus peut relier entre eux :
avec des périphériques tels que :
La norme ne restreint pas l'utilisation du bus à l'interconnexion d'un ordinateur avec des périphériques, elle l'élargit au contraire à des interconnexions entre ordinateurs, ou pour partager des périphériques entre ordinateurs.
La norme SCSI-3 est plus généraliste[1].
(Ultra3 Wide SCSI)
Le SCSI-3 présente comme énorme changement l'apparition d'un bus série, dans une technique jusqu'à présent exclusivement parallèle. Il apporte aussi quelques nouveautés et améliorations dans l'interface parallèle.
La fréquence du bus est doublée. On passe donc de 40 à 80 MHz. Les périphériques SE ne sont plus du tout compatibles avec ces fréquences à cause des phénomènes de réverbération.
L'interface Ultra 160 utilise le LVD, elle n'est absolument plus compatible avec SCSI-1 et 2. L'Ultra 160 apporte de lourdes modifications dans la gestion du transfert de données.
L'interface 320 apporte des modifications supplémentaires par rapport à l'Ultra160, ce qui permet d'augmenter encore la fréquence de travail à 160 MHz et d'augmenter les débits utiles.
Avec l'augmentation des fréquences de transfert, les décalages entre les signaux et leur sensibilité au bruit et aux capacités parasites deviennent problématiques et causent des restrictions dans la longueur des câbles. On passe donc sur des bus série (un seul fil) qui évite les problèmes de courants induits.
La réflexion sur des interfaces séries fut commencée avant la mise au point de l'Ultra 160 et 320. Mais les débits offerts sont tels que ces techniques restent tout à fait viables. L'objectif de l'interface série réside dans le fait d'empaqueter les commandes et données SCSI, afin de les transférer via un seul fil, tout en conservant la compatibilité SCSI (afin de conserver, notamment, l'avantage de la possibilité de stockage des commandes, très utile en fonctions multi-tâches).
On retrouve de nombreux avantages dans ces techniques, on peut citer notamment :
On peut citer comme techniques séries utilisant les commandes SCSI :
La norme SCSI-2 de 1994 est une amélioration du SCSI-1. Certains points ont été améliorés ou rendus obligatoires. Théoriquement SCSI-1 et SCSI-2 ont une compatibilité descendante. On peut noter que l'utilisation des bits de parité a été rendue obligatoire avec le SCSI-2.
On utilise des transferts synchrones de haut débit, ce qui permet des taux de transfert de 10 Mo/s sur un câblage 8 bits, et de 20 ou 40 Mo si on est sur du 16 ou 32 bits (avec une fréquence de 10 MHz).
On a la possibilité de travailler avec des bus plus larges de 16 ou 32 bits, ce qui permet des débits plus importants. On utilisait un câble A (50 broches) pour les transmissions sur 8 bits, le SCSI-2 avait prévu un câble B (68 broches) pour les bus plus larges. Mais il n'a pas rencontré de réel succès, on lui préfère le câble P (68 broches également) défini dans le SCSI-3. Pour le 32 bits, le câble P doit être utilisé avec un câble Q (68 broches lui aussi).
Le SCSI-1 ne permettait d'envoyer les commandes qu'une par une. Le SCSI-2 permet d'envoyer jusqu'à 256 commandes à la fois à un périphérique. Elles sont stockées et traitées dans l'ordre optimal par le périphérique. Ceci permet d'augmenter les performances de travail du périphérique et présente un grand intérêt avec des systèmes d'exploitation multi-tâche (Linux, Windows Server, etc.) qui peuvent être amenés à faire plusieurs requêtes simultanément à un périphérique (plusieurs accès en lecture sur un disque dur par exemple).