SCSI is most commonly used for hard disks and tape storage devices, but also connects a wide range of other devices, including scanners, printers, CD-ROM drives, CD recorders, and DVD drives. In fact, the entire SCSI standard promotes device independence, which means that theoretically SCSI can be used with any type of computer hardware.
Since its standardization in 1986, SCSI has been commonly used in the Apple Macintosh and Sun Microsystems computer lines. SCSI has never been popular in the IBM PC world, due to the lower cost and adequate performance of its ATA hard disk standard.
At this time, SCSI is popular on high-performance workstations, servers, and high-end peripherals; and RAID arrays on servers almost always use SCSI hard disks. Desktop computers and notebooks more typically use the ATA/IDE or the newer SATA interfaces for hard disks, and USB or FireWire connections for external devices.
SCSI has evolved since its introduction. Before summarizing the evolution, a distinction should be made between the terminology used in the SCSI standard itself, as promulgated by the T10 committee of INCITS, and common parlance, as codified by the SCSI trade association, SCSITA.
As of 2003, there have only been three SCSI standards: SCSI-1, SCSI-2, and SCSI-3. All SCSI standards have been modular, defining various capabilities which manufacturers can include or not. Individual vendors and SCSITA have given names to specific combinations of capabilities. For example, the term "Ultra SCSI" is not defined anywhere in the standard, but is used to refer to SCSI implementations that signal at twice the rate of "Fast SCSI." Such a signalling rate is not compliant with SCSI-2 but is one option allowed by SCSI-3. Similarly, no version of the standard requires low-voltage-differential (LVD) signalling, but products called Ultra-2 SCSI include this capability. This terminology is helpful to consumers, because "Ultra-2 SCSI" device has a better-defined set of capabilities than simply identifying it as "SCSI-3."
Starting with SCSI-3, the SCSI standard has been maintained as a loose collection of standards, each defining a certain piece of the SCSI architecture, and bound together by the SCSI Architectural Model. This change divorces SCSI's various interfaces from the command set, allowing devices that support SCSI commands to use any interface (including ones not otherwise specified by T10), and also allowing the interfaces that are defined by T10 to develop on their own terms. This change is also why there is no "SCSI-4".
No version of the standard has ever specified what kind of connector should be used. See "Connectors," below.
The mainstream implementations of SCSI (in chronological order) are as follows, using common parlance:
| Interface | Bus width | Clock speed | Max. throughput | Max. cable length | Max. number of devices |
|---|---|---|---|---|---|
| SCSI | 8-bit | 5 MHz | 5 MB/s | 6 m | 8 |
| Fast SCSI | 8-bit | 10 MHz | 10 MB/s | 1.5-3 m | 8 |
| Fast-Wide SCSI | 16-bit | 10 MHz | 20 MB/s | 1.5-3 m | 16 |
| Ultra SCSI | 8-bit | 20 MHz | 20 MB/s | 1.5-3 m | 5-8 |
| Ultra Wide SCSI | 16-bit | 20 MHz | 40 MB/s | 1.5-3 m | 5-8 |
| Ultra2 SCSI | 8-bit | 40 MHz | 40 MB/s | 12 m | 8 |
| Ultra2 Wide SCSI | 16-bit | 40 MHz | 80 MB/s | 12 m | 16 |
| Ultra3 SCSI | 16-bit | 40 MHz DDR | 160 MB/s | 12 m | 16 |
| Ultra-320 SCSI | 16-bit | 80 MHz DDR | 320 MB/s | 12 m | 16 |
| SSA | 1 bit | 200 Mbit | 40 MB/s spatial reuse; full duplex | 25 m | 96 |
| SSA 40 | 1 bit | 400 Mbit | 80 MB/s spatial reuse; full duplex | 25 m | 96 |
| FC-AL 1Gb | 1 bit | 1 Gbit | 100 MB/s per direction; full duplex | ? | 127 |
| FC-AL 2Gb | 1 bit | 2 Gbit | 200 MB/s per direction; full duplex | ? | 127 |
| FC-AL 4Gb | 1 bit | 4 Gbit | 400 MB/s per direction; full duplex | ? | 127 |
| iSCSI | Dependent upon IP network | ?? | |||
| SAS 3 Gbit/s | 1 bit | N/A | 300 MB/s per direction; full duplex | 6 m | 16,256 (128 per expander) |
Parallel SCSI connectors
Although parallel SCSI-1 devices typically used bulky Blue Ribbon Centronics connectors, and SCSI-2 devices typically used Mini-D connectors, it is not correct to refer to these as "SCSI-1" and "SCSI-2" connectors. One valid rule is that connectors for wide SCSI buses have more pins and wires than those for narrow SCSI buses. A Centronics-50 or HD-50 connector is for narrow SCSI, while a Centronics-68 or HD-68 connector is for wide SCSI. On some early devices, wide parallel SCSI busses used two or four connectors and cables while narrow SCSI busses used only one.
The first parallel SCSI connectors were the Centronics type. They then evolved through two main stages, High-Density (HD) and most recently SCA.
With the HD connectors, a cable normally has male connectors while a SCSI device (e.g. host adapter, disk drive) has female. A female connector on a cable is meant to connect to another cable (for additional length or additional device connections).
Serial SCSI connectors
Most modern server-class SCSI devices use some form of serial SCSI. This could be SSA, FC-AL, iSCSI or SAS. This has led to a diversity of cables and disk-drive connectors. See the SCSI connector article for a more detailed description.
In SCSI terminology, communication takes place between an initiator and a target. The initiator sends a command to the target which then responds. SCSI commands are sent in a Command Descriptor Block (CDB). The CDB consists of a one byte operation code followed by five or more bytes containing command-specific parameters.
At the end of the command sequence the target returns a Sense Code byte which is usually 00h for success, 02h for an error (called a Check Condition), or 08h for busy. When the target returns a Check Condition in response to a command, the initiator usually then issues a SCSI Request Sense command in order to obtain a Key Code Qualifier (KCQ) from the target. The Check Condition and Request Sense sequence involves a special SCSI protocol called a Contingent Allegiance Condition.
There are 4 categories of SCSI commands: N (non-data), W (writing data from initiator to target), R (reading data), and B (bidirectional). There are about 60 different SCSI commands in total, with the most common being:
Each device on the SCSI bus is assigned at least one logical unit number (LUN). Simple devices have just one LUN, more complex devices may have multiple LUNs. A storage device consists of a number of logical blocks, usually referred to by the term Logical Block Address (LBA). A typical LBA equates to 512 bytes of storage.
The usage of LBAs has evolved over time and so four different command variants are provided for reading and writing data. The Read(6) and Write(6) commands contain a 21-bit LBA address. The Read(10), Read(12), Read Long, Write(10), Write(12), and Write Long commands all contain a 32-bit LBA address plus various other parameter options.
Different SCSI transports, which are not compatible with each other, usually have unique connectors to avoid accidental mis-plugging of incompatible devices. For example it is not possible to plug a parallel SCSI disk into an FC-AL backplane, nor to connect a cable between an SSA initiator and an FC-AL enclosure.
SCSI devices in the same SCSI transport family are generally backward-compatible. Within the parallel SCSI family, for example, it is possible to connect an ultra-3 SCSI hard disk to an ultra-2 SCSI controller and use it (though with reduced speed and feature set). However there are some compatibility issues with parallel SCSI busses which are described in the rest of this section.
Ultra-2, ultra-160 and ultra-320 devices may be freely mixed on the parallel LVD bus with no compromise in performance, as the host adapter will negotiate the operating speed and bus management requirements for each device. You can attach Single-ended and LVDS devices to the same bus, but all devices will run at the slower single-ended speed. The SPI-5 standard (which describes Ultra-640) deprecates single-ended devices, so future devices may not be electrically backward compatible.
You can attach both narrow and wide SCSI devices to the same parallel bus. To do this, you must put all the narrow SCSI devices at one end and all the wide SCSI devices at the other end, and terminate the high half of the bus in between (because the high half of the bus ends with the last wide SCSI device). You can get a cable designed to connect the wide part of the bus to the narrow part which either provides a place to plug in a terminator for the high half or includes the terminator itself. This is sometimes referred to as a cable with high-9 termination. Specific commands allow the devices to determine whether their partners are using the whole wide bus or just the lower half and drive the bus accordingly.
As an example of a mixed bus, consider a SCSI wide host adapter with a HD-68 male connector connected to a SCSI narrow disk drive with a HD-50 female connector. You might make this connection with a cable that has an HD-68 female connector on one end and an HD-50 male connector on the other. Inside the cable's HD-68 connector, there is termination for the high half of the bus and the cable contains wires for only the low half. The host adapter determines that the disk drive uses only the low half of the bus, so talks to it using only the lower half. The converse example -- a SCSI narrow host adapter and SCSI wide disk drive also works.
Modern Single Connector Attachment (SCA) parallel SCSI devices may be connected to older controller/drive chains by using SCA adapters. Although these adapters often have auxiliary power connectors, use caution: it is possible to destroy the drive by connecting external power. Always try the drive without auxiliary power first.
Each parallel SCSI device (including the computer's host adapter) must be configured to have a unique SCSI ID on the bus. Also, any parallel SCSI bus must be terminated at both ends with the correct type of terminator. Both active and passive terminators are in common use, with the active type much preferred (and required on LVD buses). Improper termination is a common problem with parallel SCSI installations. In early SCSI buses, one had to attach a physical terminator to each end, but modern SCSI devices often have terminators built in, and you just have to switch termination on somehow on the devices at either end of the bus. Advanced SCSI devices actually detect whether they are last on the bus and switch termination on or off automatically.
On a parallel SCSI bus, a device (e.g. host adapter, disk drive) is identified by a "SCSI ID", which is a number in the range 0-7 on a narrow bus and in the range 0-15 on a wide bus.
You usually set the SCSI ID of the initiator (host adapter) with a physical jumper or switch on early models. On modern (since about 1997) host adapters, you set the SCSI ID by doing I/O to the adapter; for example, the adapter often contains a BIOS program that runs when the computer boots up and that program has menus that let you choose the SCSI ID of the host adapter. Or the host adapter may come with software you can install on the computer to do this. The conventional SCSI ID for a host adapter is the highest ID on the bus (7 on a narrow bus; 15 on a wide bus).
You set the SCSI ID for a target (e.g. disk drive) either with physical jumpers or by your choice of the slot in which you install the drive in a drive enclosure (each connector on the enclosure's back plane delivers control signals to the drive to select a unique SCSI ID). A SCSI enclosure without a backplane often has a switch for each drive in the enclosure to choose the drive's SCSI ID. The way this works is that the enclosure has a connector that you plug into the drive where jumpers are supposed to go; the switch emulates the necessary jumpers. While there is no standard that makes this work, drive designers typically set up their jumper headers in the way that these switches implement.
Note that a SCSI target device (which can be called a "physical unit") is often divided into smaller "logical units." For example, a high-end disk subsystem may be a single SCSI device but contain dozens of individual disk drives, each of which is a logical unit (more commonly, it isn't that simple -- virtual disk devices are generated by the subystem based on the storage in those physical drives, and each virtual disk device is a logical unit). The SCSI ID, WWNN, etc. in this case identifies the whole subsystem, and a second number, the logical unit number (LUN) identifies a disk device within the subsystem.
It is quite common, though incorrect, to refer to the logical unit itself as a "LUN." Accordingly, you may see the actual LUN called a "LUN number" or "LUN id."
4-letter acronyms | Computer buses | Computer storage | Computing acronyms | Macintosh internals | SCSI
SCSI | SCSI | Small Computer System Interface | Small Computer System Interface | Small Computer System Interface | SCSI | Small Computer System Interface | SCSI | SCSI | Small Computer System Interface | Small computer system interface | SCSI | SCSI | SCSI | SCSI | SCSI | SCSI | 小型计算机系统接口