1.      What is SCSI ?

        SCSI ( Small Computer System Interface ) is a general-purpose
        parallel bus system. It originated from Shugart's 1979' SASI
        (Shugart Associates System Interface) and Shugart and NCR
        presented it to the ANSI in 1981. It became official in 1986,
        when the ANSI-committee X3T9.2 defined the SCSI-1 spec as
        document X3.131-1986.

        Of course, "general-purpose parallel bus system" means all and
        nothing. What helped SCSI to spread was its very high speed
        (for this time) and - driver problems aside - its flexibility.
        However, it was - and is - the disk and tape interface of choice
        for Unix systems and that's where I first had contact with SCSI
        - I changed from an MFM system with 2 * 80 MB disks and a QIC-02
        tape controller (8 bit) to a SCSI system with a 380 MB disk and
        a SCSI tape, both attached to one 16 Bit SCSI adapter - freed a
        slot, one interrupt and was a _lot_ faster.

        SCSI in all its flavours is now an acknowledged and very well
        standardized multipurpose interface. SCSI supports a wide
        variety of devices which include hard disks, removeable disks,
        magneto-optical devices, tape drives, printers, processors,
        WORMs, CD-ROMs, scanners, medium-changers (jukeboxes), and
        communication devices.

        With PCs, the most common devices are hard disks, removeable
        devices like MO, WORM, Syquest and Bernoulli disks, CDROMs,
        tape drives and image scanners.

        In the Macintosh world, where SCSI was included in all models
        since the Mac Plus and expansion slots were not available on
        some, there are - besides some SCSI-based video and network
        adapters - some very special devices with SCSI interface in
        the market. To give an example - Screen, a japanese high-end
        scanner manufacturer, introduced a digital camera back with
        SCSI interface - sadly with Macintosh support only, but this
        may be just a question of time....


1.1.    SCSI-1

        SCSI-1 defined a universal 8 bit I/O-Bus that allows the
        connection of up to 8 devices (including the so-called "host
        adapter"). Every device must have a unique ID in the range of
        0 to 7. SCSI-1 was a high-speed bus system, compared to this
        time's peripheral devices.


1.2.    SCSI-2

        SCSI-1 was the first approved standard and lacked some points
        and some definitions. As this became - in some parts - obvious
        even during the approval process, SCSI-2 development started
        while SCSI-1 was still in the process of being approved.
        So, when SCSI-1 was officially approved in 1986, SCSI-2 was
        on its way already for some time, until on January 31, 1994,
        the SCSI-2 draft in revision 10L was approved by the ANSI
        Board of Standards Review.
        The official SCSI-2 document number is X3.131-1994.
        As you might remember, most manufacturers used the term SCSI-2
        from about 1988 in marketing. This isn't real approved SCSI-2,
        of course, but mostly you can trust this, as the changes were
        not big for "standard" devices. SCSI-2 merely entered a better
        formal definition, removed some oddities and obsolete things,
        added some extensions, and most importantly, added the ability
        to double and even quadruple data transfer speed on the SCSI
        bus with it's "Fast" SCSI and "Wide" SCSI options.
        Note the key word here - OPTIONS.

        - The Type-1 connector (DB-50) was removed, the high density
          SCSI-2 connector became the recommended alternative
        - Synchronous Transfers became a standard feature, with optional
        - Fast Synchronous Transfer Mode (Fast SCSI-2)
        - Sync. Negotiation can be invoked by Initiator _or_ Target.
        - 16Bit- and 32Bit-Wide SCSI became a defined option.
        - SCSI bus parity changed from "optional" to "mandatory"
        - Initiators now must provide terminator power
        - Message support became mandatory
        - Command Queueing became a defined option. For a device with
          command queueing needs memory to reorder the commands,
          this - with a little step further - introduced device caches
        - the Common Command Sets (CCS) for several device classes
          became formally defined.

        The only possible problem I found with SCSI-2 compatibility is
        that some older host adapters (typically the SCSI initiator)
        can't handle the SCSI-2 Sync. Negotiation when it's started by
        the target. Both the host adapter and device can be easily
        changed to prevent any problem here, and it's rare to begin
        with.

1.2.1.  Fast SCSI

        With SCSI-2, Fast SCSI was defined as an option. Despite the
        tendency of the market to define Fast-SCSI as "different, but
        faster SCSI", Fast SCSI is only an additional synchronous data
        transfer mode with tighter timing to achieve the 10MB/sec max.
        data rate. As with any other synchronous transfer mode, only
        data transfers are synchronous, the commands are transferred
        asynchronous. Fast SCSI is _very_ picky with the SCSI cabling,
        especially with round external cabling. Most external cables
        doesn't support reliable Fast SCSI, the few that do are _very_
        expensive. Fast SCSI is "not recommended" with single ended
        signaling, and especially with passive terminators. However,
        if you keep an eye on cable quality, I found it working
        reliable on my system and most others I know.


1.2.2.  Wide SCSI

        Another SCSI-2 option is Wide SCSI. Two flavors are defined, 16
        Bit and 32 Bit. Wide SCSI can be combined with Fast SCSI and so
        can give up to 40 MB/sec data rate for 32 Bit Fast SCSI-2.
        Originally, Wide SCSI-2 defined 16 and 32 bit wide _DATA_
        transfers only - the command and arbitration protocols still
        remained 8 bit. With this scheme, Wide SCSI-2 is still limited
        to 8 device IDs, including the host adapter.
        The X3T9.2 committee defined a combination of a standard 8 Bit
        'A' cable and a 68-wire 'B' SCSI cable for the additional
        16 Bit and 32 Bit Wide SCSI signals.
        But while SCSI-2 still wasn't approved, one of the first tasks
        of the SCSI-3 group was a definition for a 16 bit 'P'-cable
        that also supports 16 bit arbitration, and all Wide-SCSI
        devices i saw adopted this cabling scheme.
        Also, there is a 110 pin 'L'-cable at least in discussion that
        will support 8, 16 and 32 Bit connections and should be
        standardized with the SCSI-3 Parallel Interface.

        So, addressing of more than eight devices isn't "true" Wide
        SCSI-2, but describes what you'll find in "real" Wide-SCSI
        devices (for example, all Wide-SCSI disks i saw had a fourth
        ID jumper).

        As Wide data transfers are an option that must be agreed by
        both devices, Wide SCSI host adapters can address standard SCSI
        devices without problems - assuming that a correct cabling
        adapter or a second, specific 'narrow' SCSI bus is used.
        However, keep in mind that you need to have the host adapter
        on an address where the "narrow" SCSI devices can communicate
        with it. Also, arbitration priority remains at the first eight
        bit, then the second eight bit and so on.
        Personally, i think the best scenario is to have the Wide SCSI
        host adapter at ID 7, thus allowing narrow devices in the ID
        range from 0 to 6 to "see" the host adapter and keeping it at
        the highest priority.
        Wide SCSI devices naturally can be placed on every ID, but to
        avoid the possible arbitration problems with 'narrow' devices
        on the same SCSI bus, it would be a good idea to have all
        devices on the first 7 IDs, until it's really neccessary to use
        the higher IDs.


1.3.    SCSI-3

        Besides some novelties in the SCSI-3 parallel interface (SPI),
        SCSI-3 is somewhat a revolution in the SCSI world - it defines
        high speed _serial_ interfaces. At the moment, there seem to be
        three of these serial interfaces in the works: Fibre Channel,
        Fibre Channel/Low cost and P1394, while IBM's SSA could become
        a strong contender in the low-end market.
        For the SCSI-3 parallel interface (SPI), there are some new
        physical extensions in the works, two of them:

        -  Fast-20, a 20 MHz (Mega-transfers per second) extension to
           the existing SPI timing variants - see "UltraSCSI"
        -  SPI-LV, a low-voltage SPI variant for low-power (3.3 V) and
           battery-driven SCSI applications.

        -  Fast-40, another timing extension with up to 40 MHz clock
           rate, is under discussion.

        On the software side, there seem to be only some additions to
        the command sets - a new command set for graphical devices,
        a slight extension to the cache option and so on ... But still,
        this may change ...

        Many device suppliers are currently advertising their products
        as SCSI-3 and this appears to be an attempt to make the consumer
        think he is getting something "better" than SCSI-2.
        All SCSI devices that support the Common Command Set can be run
        with SCSI-1, -2, -3, and probably SCSI-4 some day. If you see
        this being advertised, ask the supplier exactly how the device
        is different with SCSI-3 implemented and/or supported. You'll
        hear lots of Weasel Words, but no facts. The device just has
        CCS support. Nothing to get excited about, and surely nothing
        to pay extra for!
        On Wide-SCSI disk drives, the "SCSI-3" label mostly points to
        the SCSI-3 68-pin connector.

        There is also a new connector scheme called Single Connector
        Attachment (SCA). SCA uses an 80-pin connector to provide all
        neccessary signals for 8- and 16-bit SCSI devices, including
        power connections, LED-control and so on. It's major advantage
        is the possibility to use SCSI devices as a single plug-in
        module without the need for an additional connector between
        the bus and the device, as it's with today's cheap HD "drawers".
        Although SCA devices should be on the market, I didn't see an
        SCA device 'til now, so I think they'll take some time to show
        up in PCs. There is a 32 bit version in planning, but yet it
        isn't even designed how much pins it will have (probably 120)...

        Also new in this game are SCAM, a SCSI auto-configuration
        protocol, and Plug-and-Play-SCSI, the SCSI part of Plug-and-Play.


1.3.1.  Fibre Channel

        Although SCSI will be one of the major market applications for
        it, Fibre Channel is _much_ more than just a new physical SCSI
        layer.
        Basically, the Fibre Channel is a universal communication
        interface for point-to-point connections, independent of the
        overlaying logical protocol. So, virtually each possible logical
        layer can be used over FC, for example ATM, HIPPI, IPI, SCSI,
        TCP/IP - you name it.
        Most older "standard" network transport layers are bound to a
        specific logical protocol over it, that also handles data
        integrity and communication handshakes, thus greatly reducing
        the real _data_ bandwidth.
        Fibre Channel is designed very clever to utilize nearly its full
        bandwidth to data throughput - most communication handshake and
        other data integrity issues are handled by FC logic itself,
        without any need to interfere for the logical protocol. So, an
        actual value is, that only 1.6 percent of the theoretical
        throughput is used for protocol overhead.
        The specific FC variant used for SCSI is called Fibre Channel/
        Arbitrated Loop. FC/AL describes a two-fibre bidirectional
        optical loop ("Fibre" here stands merely for the fibre-inherent
        serial transmission than for a dedicated optical interface -
        coaxial and twisted-pair copper wiring are also allowed.)
        FC/AL uses a token-passing method to grant access to the ring,
        thus assuring the full bandwidth for each connection.

        A loop can address up to 126 devices, the logical protocol is
        SCSI. Each transfer is a point to point connection, where the
        two direction channels are used simultaneously for data and
        control information transfer.
        FC/AL should solve most actual server problems, as it expands
        transfer speed, device count, and SCSI distance/spacing issues
        in one package - now, all are waiting for a sort of "parallel
        FC" <g>

        The Fibre channel and FC/LC should provide a data throughput of
        about 10 to 100 MBytes/sec, depending on the physical layer,
        where P1394, also called "FireWire", is defined to give up to
        200 MBits/sec. Fibre channel physical layers are defined with
        133, 266, 531 and 1062 MBits/sec, with potential expansion in
        mind, so you can calculate possible data rates...


1.3.2.  P1394 "FireWire"

        "FireWire" is Apple's and Texas Instrument's trade name for the
        IEEE project P1394, a super-fast serial copper interface that
        includes IDs and strong protocol support.
        I don't have deeper info about it, but it seems to be a four-
        wire differential interface (Signal+, Signal-, Ground, +12V),
        that should guarantee high security and fast throughput over a
        simple, cheap copper connection.
        P1394 has a few _very_ attractive basic features for computer
        applications:

        - Up to 63 devices on a single port
        - Up to 1022 FireWire buses can be bridged together
        - Every device should have its own, unique 64-bit ID
        - Hot-plugging, together with
        - Auto-configuration (through IDs) - no need for jumpers
        - For smaller devices, FireWire can transport supply power;
          up to 1.5 Amps at 12 Volts are possible

        FireWire speed ranges from 100 to 400 MBits/sec, so disks with
        about 20 MBytes/sec shouldn't be a problem for it. One special
        feature of FireWire - and the main reason for its definition as
        the "desktop multimedia" interface - is its "isochronous"
        behaviour, meaning, it delivers - and guarantees - a continuous
        data stream. This seems to be what the multimedia people pray for
        - no "hiccups" or missing pieces in image or audio data streams.

        FireWire could be _the_ desktop bus for the near future - you
        can attach virtually anything from mice and keyboards to fast
        devices like SCSI disks. If Apple includes it with the next
        PowerMac's, it would be in the market and should be attractive
        enough to show up also in some PCs and devices - let's see.


1.3.3.  Serial Storage Architecture (SSA)

        The third serious player in the serial SCSI field is SSA,
        actually IBM's favorite. SSA uses either four-wire copper
        cables with differential signaling or optical fibres as
        transport medium. Wire connections can be up to 10 meters
        long, optical fibre connections up to 1000 meters.
        
        This leads to rather cheap cables, especially if compared
        with the expensive SCSI-3 parallel cabling.
        SSA doesn't use a "bus" in the classical sense, but dedicated
        (and independent) input and output channels per I/O channel
        set. Thus, if the device can use both directional channels
        independently, it can double the "standard" throughput of 20
        MBytes/sec per channel and direction to achieve 40 MBytes/sec
        throughput, if both directions are used simultaneous.
        
        SSA devices may come in different flavors:

        - Single Port Nodes with one set of input and output channels.
        - Dual Port Nodes with two independent sets of I/O channels.
          and, as a special type of device,
        - Switches, for connecting up to 126 SSA ports.

        For each configuration with more than two devices needs at
        least one dual-port node, i don't espect much single-node
        devices to appear....

        Every number of SSA devices connected to a logical bus is
        called either a "string", if it is a setup with two ends, or
        a "loop", if they are connected as a closed loop. A string
        with only two devices on it is called a dedicated connection.
        A loop has a few advantages; one of them is the possibility to
        handle two simultaneous, bidirectional data transfers between
        devices over the loop - each connection over the shortest path.
        So, a theoretical data rate of 80 MBytes/sec (4*20 MBytes/sec)
        for the whole loop is possible.
        But the more important advantages of the loop are its fault-
        tolerancy - if a device goes down, it does break the loop, but
        the bus still operates as a standard string - and the
        possibility to integrate new devices without shutting down the
        system.

        Switches allow the connection of multiple strings to create
        fast SSA networks - sounds nice for big servers or server
        clusters. Also, smaller companies or workgroups could create
        a high-speed network with SSA, bypassing the need for
        dedicated network adapters or cabling. There is also a name
        for this setup - would you expect "Switched Network" ? <g>


        A typical SSA string configuration could look like the
        following example:

        Ŀ        Ŀ      Ŀ
        SSA Host    <ĳSSA     <ĳSSA     <Ŀ
            Adapter >Device 1>Device 2Ŀ 
                          
                                              Ŀ    
                                              SSA     < 
                                              Device 3
                                              

        This looks familiar, compared with a "standard" SCSI setup,
        only the two unidirectional connections between each device
        are really different. Devices 1 and 2 in this example _must_
        be dual-ported, device 3 and the host adapter could be
        single-port nodes.

        With only dual port devices, by adding only one additional
        connection between the former bus ends, the bus is changed to
        form a closed loop.

             Ŀ         Ŀ      Ŀ
        ĳSSA Host    <ĳSSA     <ĳSSA     <Ŀ
         >    Adapter >Device 1>Device 2Ŀ 
                              
                                  Ŀ      Ŀ    
         ĳSSA     <ĳSSA     < 
        >Device 4>Device 3
                                          

        With this closed loop, if, for example, device 3 is damaged
        and blocks all attached channels, there would still be an
        operating string from device 4 over the host adapter to
        device 2. Thus, the system would still operate, just the
        defective device is offline and could be replaced while the
        system still works.

        Please keep in mind that all of the above information is from
        the specs only - i don't have the possibility to access SSA
        hardware or evaluation hardware, so i'm not sure if SSA network
        will ever exist - it depends on manufacturer's and customers'
        acceptance for the SSA concept. However, the concept should be
        much cheaper to implement than FiberChannel, so let's see....

        If you want to test or implement SSA - IBM now sells a PCI/SSA
        adapter with all neccessary software.


1.4.    Plug'n'Play SCSI

        Plug'n'Play SCSI is an extension to the generic Plug'n'Play
        specification. PnP is an approach to define an auto-configuring
        environment for ISA boards.
        One of the key parts of PnP-SCSI is SCAM.

        The basic Plug'n'Play specifications, including PnP SCSI, can
        be found on CompuServe's PLUGPLAY forum.
        Plug'n'Play should come in the market now, but personally i'm
        not sure if it won't become a "Plug'n'Panic" game...

        Lately rumours are around about PnP-SCSI Level 2. This mainly
        seems to be PnP SCSI with additional support for device
        hot-swapping - a main feature for RAID systems.

1.4.1.  SCSI Configured AutoMagically (SCAM)

        SCAM is a protocol for automatic SCSI ID assignment. It is
        included in the SCSI-3 parallel interface drafts, but i'm not
        sure if it will be a basic part or an option.
        The SCAM master (typically the host adapter) scans the bus for
        attached SCSI devices. For compatibility, it also needs to find
        and identify "legacy" (=non-SCAM) SCSI devices. Thus the SCAM
        master gets a map of the attached devices and assigns a valid
        "soft" ID to each SCAM-compliant SCSI device.
        After this process, the SCAM master keeps this "device table"
        in a nonvolatile memory to provide - if possible - an identical
        ID setup for further boot processes.


1.5.    S.M.A.R.T

        S.M.A.R.T - "Self-Monitoring, Analysis and Reporting Technology"
        is a new system for monitoring storage (and other) devices.
        Basically, S.M.A.R.T can query devices for their actual status
        in terms of reliability, error rates and other relevant data.
        This is a very useful capability for every disk system,
        especially in servers or RAID setups - if a drive gets an
        increased hard error rate, this could be a sign of a
        soon-to-come crash, and you could change the drive _before_
        the crash, thus avoiding any downtime.
        S.M.A.R.T uses the Exception Handling Selection Mode Page
        protocol, actually a proposal pending for the inclusion in
        SCSI-3, that uses SCSI mode pages for the transfer of the
        surveillance information.
        S.M.A.R.T actually isn't linked to SCSI - there is a definition
        also for ATA devices, so it should soon become an accepted
        standard feature for disk drives.
        The main SCSI manufacturers supporting S.M.A.R.T seem to be
        Adaptec, Conner, HP, IBM, Microsoft, Quantum and Seagate.


1.6.    DoubleSCSI and UltraSCSI

        On October 31, 1994, the companies Adaptec, Conner, Quantum,
        Seagate and some others together announced Double-Speed SCSI
        under the name "UltraSCSI", a compatible extension to SCSI-2.
        DoubleSCSI/UltraSCSI seems to become the "trademark" for the
        Fast-20 timing. Seems to lead to "HyperSCSI" <g>.
        Basically, UltraSCSI is an extension to the Fast-SCSI timings.
        UltraSCSI reaches up to 20 MBytes/sec data rate on 8-Bit
        channels and up to 40 MBytes/sec on 16-Bit Wide SCSI channels.
        According to the press release info, UltraSCSI keeps
        compatibility with older SCSI-2 drives on the bus.
        I'll dig out the original Fast-20 specs when possible, but at
        my first preliminary look it seems to be another compatible
        option that gets negotiated between the initiator and the
        target on startup.
        Contrary to what i expected, UltraSCSI states 3 meters as
        maximum bus length, but anyway, i don't expect external devices
        - the cabling problems with Fast-SCSI would be even worse...
        So, i'll anxiously waiting for shipping start... At least one
        of my office systems will become a laboratory rat for this <g>

        Actually, Fast-40 is in discussion, but with a few rather
        obvious problems - high frequency and long cables leads to
        trouble - a data packet can be transferred fast, as it is
        unidirectional, but the "parallel" task of arbitration needs
        much time, leading to a big overhead penalty. I just can't
        wait to see what the committee guys will dig out ... <g>


1.7.    Single Connector Attachment (SCA)

        - actually, this is about SCA-2, but SCA-1 isn't too
          different...

        SCA, at a first glance, describes only a new connector. But
        this is only half the truth....
        SCA mainly describes a single, 80-pin connector for 16 bit
        Wide SCSI devices, and including power source and control
        signals. The crucial SCA feature is hot-plugging capability.
        True hot-plugging needs some precaution and leads to some
        basic considerations:

        - a defined connector placement and orientation on the
          SCA device
        - defined voltage needs and current limits, as an integrated
          cable is far more critical than the actual setup with a
          dedicated power connector.
        - a method to get a defined signal behaviour on connecting
          and disconnecting a device

        Defining the connector and the location on the drive is the
        easiest part, so let's forget it here - it's done.
        The used voltages actually are 5V and 12V DC. This actually
        outlaws SPI-LP, the proposed 3.3 Volts physical interface.
        Also, the nominal current limits actually are 3 Amps for
        12 Volts and 2 Amps for the 5 Volts power lines. This seems
        to give a 45 Watts range for an SCA device, but keep in mind
        that all this current for all devices has to flow through
        the cable... Looks more like a backplane than a cable spec...

        Besides the standard SCSI signals and the power lines, there
        are some usually jumper-activated control functions on the
        connector: a signal for spindle synchronization, remote start
        and start delay control, and a LED output.

        The hot-plug precautions are met by two main features:
        - long and short pins on the host side to get a defined
          connection order, and
        - a "precharging" circuitry - depending on the long and short
          pins - to get a defined signal state on connecting a device.

        Based on those features, each device gets a surge control
        circuitry to get a defined start and keep power-on current in
        the allowed range.

        With those - actually unique - abilities, building
        hot-swappable systems becomes a _lot_ easier - this should
        push for example RAID prices lower, for the vendor-specific,
        expensive disk cabinets with the hot-swap circuitry are no
        longer neccessary.

