Parallel SCSI
From Wikipedia, the free encyclopedia
Parallel SCSI (formally, SCSI Parallel Interface, or SPI) is one of the interface implementations in the SCSI family. In addition to being a data bus, SPI is a parallel electrical bus: There is one set of electrical connections stretching from one end of the SCSI bus to the other. A SCSI device attaches to the bus but does not interrupt it. Both ends of the bus must be terminated.
Contents |
[edit] History
The first two formal SCSI standards, SCSI-1 and SCSI-2, included parallel SCSI as a central part of the protocol. The SCSI-3 standard then split the framework into separate layers so parallel SCSI is now just one of a number of available implementations. See the main SCSI article for a complete list. As with all types of SCSI bus, parallel SCSI communication takes place between an initiator and a target.
The original SCSI-1 version of the parallel bus was 8 bits wide (plus a ninth parity bit). The SCSI-2 standard allowed for faster operation (10 MHz) and wider buses (16-bit or 32-bit). The 16-bit option became the most popular. The 32-bit option was too expensive and so was hardly ever used.
At 10 MHz with a bus width of 16 bits it is possible to achieve a data rate of 20 MB/s. Subsequent extensions to the SCSI standard allowed for faster speeds: 20 MHz, 40 MHz, 80 MHz, 160 MHz and most recently 320 MHz. At 320 MHz x 16 bits there is a theoretical maximum peak data rate of 640 MB/s.
[edit] Standards
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.
[edit] SCSI-1
The original standard that was derived from SASI 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—compared to the 18 inch (0.45 meter) limit of the ATA interface). A rarely seen variation on the original standard included a high-voltage differential (HVD) implementation whose maximum cable length was 25 meters.
[edit] SCSI-2
This standard was introduced in 1994 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 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.
[edit] 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 1996. 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).
[edit] 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.
[edit] 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.
[edit] Ultra-320
This is the Ultra-160 standard with the data transfer rate doubled to 320 MB/s. The latest working draft for this standard is revision 10 and is dated May 6, 2002. Nearly all new SCSI hard drives being manufactured at the time of this writing (October 2003) are actually Ultra-320 devices.
[edit] 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.
[edit] SCSI signals
In addition to the data bus and parity signals, a parallel SCSI bus contains nine control signals:
Signal name | Meaning when asserted (deasserted) |
BSY Busy | Bus in use (bus free) |
SEL Select | Initiator has won arbitration and has selected a target |
C/D Control/Data | Target is sending control (data) information |
I/O Input/Output | Target is sending (receiving) information |
MSG Message | Target is sending or receiving a message |
REQ Request | Target is requesting a data transfer |
ACK Acknowledge | Initiator acknowledges that it is ready for a data transfer |
ATN Attention | Initiator has a message ready for the target |
RST Reset | Initiator forces all targets and any other initiators to do a warm reset |
There are also three DC levels:
Signal name | Usage |
TERMPOWER | See the Termination section for details |
DIFFSNS | Grounded in single-ended buses, otherwise floats to a positive voltage |
GROUND | Most spare pins in the connector are designated as grounds |
There are three electrically different variants of the SCSI parallel bus: single-ended (SE), high-voltage differential (HVD), and low-voltage differential (LVD). The HVD and LVD versions use differential signaling and so they require a pair of wires for each signal. So the number of signals required to implement a SCSI bus is a function of the bus width and voltage:
Bus Width | Voltage | Data | Parity | Control | TERMPOWER | DIFFSNS | GROUND | Reserved | Total |
8-bit | SE | 8 | 1 | 9 | 1 | 1 | 30 | 0 | 50 |
8-bit | LVD/HVD | 16 | 2 | 18 | 1 | 1 | 12 | 0 | 50 |
16-bit | SE | 16 | 2 | 9 | 4 | 1 | 34 | 2 | 68 |
16-bit | LVD/HVD | 32 | 4 | 18 | 4 | 1 | 7 | 2 | 68 |
[edit] Parallel SCSI bus operation
The parallel SCSI bus goes through 8 phases as a command is processed:
Phase | Comments |
Bus-free | |
Arbitration | One or more devices assert BSY and their ID bit |
Selection | One device wins the arbitration by asserting BSY and SEL |
Command | The initiator sends the CDB to the target |
Data | The direction of transfer depends on the command |
Message | SCSI message code - interface management information |
Status | SCSI Status Code (status byte) - success or failure information |
Bus-free |
[edit] SCSI IDs
All devices on a parallel SCSI bus must have a SCSI ID. The initiator (adapter or controller) SCSI ID is usually set by a physical jumper or switch. The target (disk-drive) SCSI IDs are either set by physical jumpers or by control signals which vary for each connector on an enclosure backplane. The SCSI ID field widths are:
Bus-width | ID width | IDs available |
8-bit | 3-bit | 8 |
16-bit | 4-bit | 16 |
[edit] Arbitration
All SCSI commands start with a process called arbitration when one or more devices attempt to access the bus. During the arbitration phase, the 8 or 16 data bus signals are used to identify which device(s) are requesting access. All SCSI devices must implement the same arbitration algorithm so the result is always unanimous.
SCSI IDs are used in the arbitration phase to determine which device next gets access to the SCSI bus. If two devices attempt to access the bus at the same time then the one with the highest priority SCSI ID will win the arbitration. Two devices cannot share the same SCSI ID.
The priority sequence for an 8-bit wide parallel SCSI bus is quite simple, but the priority sequence for a 16-bit wide parallel SCSI bus has to meet legacy requirements so is less obvious:
Bus width | SCSI ID priority (from highest to lowest) |
8-bit | 7, 6, 5, 4, 3, 2, 1, 0 |
16-bit | 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 |
The SCSI ID of the initiator is usually set to the highest priority value of 7. If there are two initators then their SCSI IDs are usually set to 7 and 6. All the remaining SCSI IDs can then be used for disk-drives or other target devices.
The arbitration process can use up a lot of bus bandwidth so more recent devices support a simplified protocol called Quick Arbitration and Selection (QAS).
[edit] Connectors
No version of the standard has ever specified what kind of connector should be used. Specific types of connectors for parallel SCSI devices were developed by vendors over time. Connectors for serial SCSI devices have diversified into different families for each type of serial SCSI protocol. See the SCSI connector article for a more detailed description.
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 - 80 pin.
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).
[edit] Termination
Parallel SCSI buses must always be terminated at both ends to ensure reliable operation. Without termination, data transitions would reflect back from the ends of the bus causing pulse distortion and potential data loss.
A positive DC termination voltage is provided by one or more devices on the bus, typically the initiator(s). This positive voltage is called TERMPOWER and is usually around +4.3 volts. TERMPOWER is normally generated by a diode connection to +5.0 volts. This is called a diode-OR circuit, designed to prevent backflow of current to the supplying device. A device that supplies TERMPOWER must be able to provide up to 900 mA (single-ended SCSI) or 600 mA (differential SCSI).
Some early disk drives included internal terminators, but most modern disk-drives do not provide termination which is then deemed to be external.
Termination can be passive or active. Passive termination means that each signal line is terminated by two resistors, 220 Ω to TERMPOWER and 330 Ω to ground. Active termination means that there is a small voltage regulator which provides a +3.3 V supply. Each signal line is then terminated by a 110 Ω resistor to the +3.3 V supply. Active termination provides a better impedance match than passive termination because most flat ribbon cables have a characteristic impedance of approximately 110 Ω. Forced perfect (FPT) termination is similar to active termination, but with added diode clamp circuits which absorb any residual voltage overshoot or undershoot. There is a special case in SCSI systems that have mixed 8-bit and 16-bit devices where high-byte termination may be required.
In current practice most parallel SCSI buses are LVD and so require external, active termination. The usual termination circuit consists of a +3.3 V linear regulator and commercially available SCSI resistor network devices (not individual resistors).
[edit] Compatibility
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 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, caution is recommended when connecting them, as it is possible to damage devices by connecting external power.
Each parallel SCSI device (including the computer's host adapter) must be configured to have a unique SCSI ID on the bus. Another requirement is that 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 the user simply needs to enable termination for the devices at either end of the bus (typically by setting a DIP switch or moving a jumper). Some modern SCSI host adapters allow the enabling or disabling of termination through BIOS setup. Advanced SCSI devices automatically detect whether they are last on the bus and switch termination on or off accordingly.
[edit] External links
- T10 Technical Committee - SCSI Storage Interfaces (SCSI standards)
- Termination Tutorial