SCSI
SCSI stands for "
Small Computer System Interface", and is a
standard interface and
command set for transferring
data between
devices on both internal and external
computer buses. It is pronounced "scuzzy".
[(2000), American Heritage Dictionary, 4th edition[1]: pronunciation]. The name is historical; since the mid-90's SCSI has been used on even the largest of computer systems and for some things, including tape and disk storage, there is now no other standard more associated with large computer systems.
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, high-end peripherals, and in the consumer market by use of
IEEE1394.
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 connections for external devices.
|
SCSI Terminator (Centronics connector) |
In
1979,
Shugart Associates introduced an interface called
SASI (Shugart Associates System Interface). In the same time period,
NCR Corporation's Peripherals division in Wichita, Kansas (now
Engenio), was developing a more sophisticated product called BYSE (for Byte Serial), and was developing an
ASIC to implement it. NCR management decided it could not support a proprietary interface so it abandoned BYSE in favor of an improved SASI. In late
1981, NCR and Shugart agreed to jointly promote the concept as an
ANSI standard. After several committee meetings and after a number of other companies decided to adopt the combined standard, it received the new name "SCSI." In
1986, with SCSI already in widespread use, ANSI approved the SCSI
spec (as
X3.131-1986). Since then, SCSI has developed as an industry-wide standard, capable of being applied to virtually any computer system (there were even SCSI implementations for the venerable
Commodore 64 and
Apple II home computers). The first working SCSI ASIC was donated by NCR to the
Smithsonian Museum.
Parallel SCSI is not a single standard, but a suite of closely related standards which, unfortunately, have confusing names. There are a dozen SCSI interface names, most with ambiguous wording (Like Fast SCSI, Fast Wide SCSI, Ultra SCSI, and Ultra Wide SCSI); three SCSI standards, each of which has a collection of modular, optional features; several different connector types; and three different types of voltage signalling. The leading SCSI card manufacturer,
Adaptec, has manufactured over 100 varieties of SCSI cards over the years. In actual practice, many experienced technicians simply refer to SCSI devices by their bus bandwidth (i.e. SCSI 320 or SCSI 160) in Megabytes per second.
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:
SCSI interface overview
|- 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) |
SCSI-1
The original standard that was derived from SCSI and formally adopted in 1986 by
ANSI. SCSI-1 features an 8-bit
parallel bus (with
parity), running asynchronously at 3.5 MB/s or 5 MB/s in synchronous mode, and a maximum bus
cable length of 6 meters (just under 20 feet -- compare that to the 18 inch (0.45 meter) limit of the
ATA interface). A variation on the original standard included a
high-voltage differential (HVD) implementation whose maximum cable length was 25 meters.
SCSI-2
This standard was introduced in 1989 and gave rise to the
Fast SCSI and
Wide SCSI variants. Fast SCSI doubled the maximum transfer rate to 10 MB/s and Wide SCSI doubled the bus width to 16 bits on top of that (to reach 20 MB/s). However, these improvements came at the minor cost of a reduced maximum cable length to 3 meters. SCSI-2 also specified a 32-bit version of Wide SCSI, which used 2 16-bit cables per bus; this was largely ignored by SCSI device makers because it was expensive and unnecessary, and was officially retired in SCSI-3.
SCSI-3
Before Adaptec and later SCSITA codified the terminology, the first
parallel SCSI devices that exceeded the SCSI-2 capabilities were simply designated SCSI-3. These devices, also known as
Ultra SCSI and fast-20 SCSI, were introduced in 1992. The bus speed doubled again to 20 MB/s for
narrow (8 bit) systems and 40 MB/s for
wide (16-bit). The maximum cable length stayed at 3 meters but single-ended Ultra SCSI developed an undeserved reputation for extreme sensitivity to cable length and condition (faulty cables, connectors or
terminators were often to blame for instability problems).
Ultra-2
This standard was introduced c. 1997 and featured a
low-voltage differential (LVD) bus. For this reason ultra-2 is sometimes referred to as
LVD SCSI. LVD's greater immunity to noise allowed a maximum bus cable length of 12 meters. At the same time, the data transfer rate was increased to 80 MB/s. Ultra-2 SCSI actually had a relatively short lifespan, as it was soon superseded by Ultra-3 (Ultra-160) SCSI.
Ultra-3
Also known as
Ultra-160 SCSI and introduced toward the end of 1999, this version was basically an improvement on the ultra-2 standard, in that the transfer rate was doubled once more to 160 MB/s by the use of
double transition clocking. Ultra-160 SCSI offered new features like
cyclic redundancy check (CRC), an error correcting process, and
domain validation.
Ultra-320
This is the ultra-160 standard with the data transfer rate doubled to 320 MB/s. Nearly all new SCSI
hard drives being manufactured at the time of this writing (October 2003) are actually Ultra-320 devices.
Ultra-640
Ultra-640 (otherwise known as
Fast-320) was promulgated as a standard (INCITS 367-2003 or SPI-5) in early 2003. Ultra-640 doubles the interface speed yet again, this time to 640 MB/s. Ultra-640 pushes the limits of LVD signaling; the speed limits cable lengths drastically, making it impractical for more than one or two devices. Because of this, most manufacturers have skipped over Ultra640 and are developing for
Serial Attached SCSI instead.
iSCSI
iSCSI preserves the basic SCSI
paradigm, especially the command set, almost unchanged. iSCSI advocates project the iSCSI standard, an embedding of SCSI-3 over
TCP/IP, as displacing
Fibre Channel in the long run, arguing that
Ethernet data rates are currently increasing faster than data rates for Fibre Channel and similar disk-attachment
technologies. iSCSI could thus address both the low-end and high-end markets with a single
commodity-based technology.
Serial SCSI
Four recent versions of SCSI,
SSA,
FC-AL,
IEEE1394, and
Serial Attached SCSI (SAS) break from the traditional
parallel SCSI standards and perform data transfer via serial communications. Although much of the documentation of SCSI talks about the
parallel interface, most contemporary development effort is on serial SCSI. Serial SCSI has number of advantages over parallel SCSI - faster data rates,
hot swapping, and improved fault isolation. Serial SCSI devices are more expensive than the equivalent parallel SCSI devices but this is likely to change soon.
|
Centronics 50 SCSI sockets |
No version of the standard has ever specified what kind of
connector should be used. Connectors for
parallel SCSI devices were evolved by vendors over time. Connectors for serial SCSI devices have diversified into different families for each type of serial SCSI protocol. This is a brief summary, but see the
SCSI connector article for a more detailed description.
Parallel SCSI connectorsAlthough 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 connectorsMost 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 addition to many different hardware implementations, the SCSI standards also include a complex set of command protocol definitions. The SCSI command architecture was originally defined for
parallel SCSI buses but has been carried forward with minimal change for use with iSCSI and serial SCSI.
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
Status 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:
*
Test unit ready - "ping" the device to see if it responds
*
Inquiry - return basic device information
*
Request sense - give any error codes from the previous command
*
Send diagnostic and
Receive diagnostic results - run a simple self-test, or a specialised test defined in a
diagnostic page*
Start/Stop unit*
Read capacity - return storage capacity
*
Format unit*
Read (4 variants)
*
Write (4 variants)
*
Log sense - return current information from
log pages*
Mode sense - return current device parameters from
mode pages*
Mode select - set device parameters in a mode page
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.
For purposes of discussing compatibility, remember that SCSI devices include both
host adapters and peripherals such as disk drives. When you ask whether you can cable a certain host adapter to a certain disk drive, you are asking whether you can attach those two SCSI devices to the same SCSI bus.
Different SCSI transports, which are not compatible with each other, usually have unique connectorsto 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.
In the modern SCSI transport protocols, there is an automated process of "discovery" of the IDs. SSA initiators "walk the loop" to determine what devices are there and then assign each one a 7-bit "hop-count" value. FC-AL initiators use the LIP (Loop Initialization Protocol) to interrogate each device port for its WWN (
World Wide Name). For ISCSI, because of the unlimited scope of the (IP) network, the process is quite complicated. These discovery processes occur at power-on/initialization time and also if the bus topology changes later, for example if an extra device is added.
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."
In larger SCSI servers, the disk-drive devices are housed in an intelligent enclosure that supports
SCSI Enclosure Services (SES). The initiator can communicate with the enclosure using a specialised set of SCSI commands to access power, cooling, and other non-data characteristics.
*
All About SCSI*
SCSI Technology*
SCSI Help: Identifying SCSI HDs and Connectors*
T10 Technical Committee (SCSI standards)
*
SCSITA terminology*
"Storage Cornucopia" SCSI links, maintained by a consultant*
SCSI/iSCSI/RAID/SAS Information Sheet*
SCSI basics*
WWW Virtual Library for SCSI*
SCSI and ATA pinouts