What are the pros and cons regarding SCSI vs IDE/ATA ?
Pros of IDE/ATA:
Inexpensive due to high volume of production and simplified testing
requirements. Supported directly by system BIOS in most cases. (unless
you want DMA support) Less overhead per command
Cons of IDE/ATA:
Very limited device attachment (two drives (including CDROMs) per channel,
and two channels per system max.) (Recent versions of Linux (and I hear
Win NT) support four or more ATA adapters) Single threaded (commands do not
overlap even with a second drive) CPU is tied up transferring all data
(actually newer EIDE controllers can do DMA as well if special drivers are
loaded) IDE/ATA and ATAPI evolved from the ancient ST-506 interface as one
kludge on top of another Cannot handle scatter/gather operations well
(important in good Virtual Memory operating systems)
Pros of SCSI:
Flexible device attachment (up to 7 or 15 devices per SCSI bus) (inside or
outside of case) Longer cable lengths allowed (up to 12 meters using LVD)
Support for almost any peripheral type (disks, tape, CDROM, optical,
scanner etc) All commands can overlap with commands on other devices.
Usually uses DMA to transfer data (which frees CPU for other tasks)
Interface and protocol is carefully specified by ANSI. Largest, highest
performance devices are available in SCSI before IDE Most adapters can do
scatter/gather DMA which is a necessity in virtual memory systems (Like
Unix, NT, 2000) (Win 95/98 ?)
Cons of SCSI:
Generally more expensive than IDE/ATA, due to more complex firmware and
extra testing required. (not to mention greater performance commanding a
higher price). Slightly more complicated to install than IDE/ATA, due to
termination requirements. Seems scary to novice users because of amount of
terminology and connector/protocol options.
Some people point to the need to set IDs in SCSI as making it more
complicated, but it’s really no more complicated than choosing master/slave
jumpers in IDE.
Here’s a discussion that shows some of the advantages of SCSI in more detail:
Under DOS (and DOS/win3.1), there is very little useful work the host can
do while waiting for a disk operation to complete. So handing off some
work from a 66 MHz 486 to, say, an 8 MHz Z80 (on the controller) does
result in a performance loss. Under EVERY other OS worth discussing (Unix,
Netware, NT, OS/2, Win95 etc) the processor can go off and do something
else while the access is in progress, so the work done by the other CPU can
result in a performance increase. In such systems, due to virtual memory,
a 64K byte ‘contiguous’ read requested by a process may be spread to 16
separate physical pages. A good SCSI controller, given a single request,
can perform this ‘scatter/gather’ operation autonomously. ATA requires
significant interrupt service overhead from the host to handle this.
Another big issue: ATA does not allow more than one I/O request to be
outstanding on a single cable, even to different drives. SCSI allows
multiple I/O requests to be outstanding, and they may be completed out of
order. For instance, process ‘A’ needs to read a block. The request is
sent to the drive, the disk head starts to move, and process ‘A’ blocks
waiting for it. Then, process ‘B’ is allowed to run; it also reads a block
from the disk. Process B’s block may be sitting in a RAM cache on the SCSI
controller, or on the drive itself. Or the block may be closer to the head
than process A’s block, or on a different drive on the same cable. SCSI
allows process B’s request to be completed ahead of process A’s, which
means that process B can be running sooner, so that the most expensive chip
– the system CPU – tends to spend less time twiddling its thumbs. Under
ATA, the process B request cannot even be sent to the drive until the
process A request is complete. These SCSI capabilities are very valuable
in a true multi-tasking environment, especially important in a busy file
server, and useless under DOS, which cannot take advantage of them.
I tend to hear from people, ‘Well, I never use multitasking’ because they
never actively run two programs at once – all but one are ‘just sitting
there’. Consider what happens though, when you minimize a window which
uncovers parts of four other application windows. Each of those
applications is sent a message telling it to update part of its window;
under win95, they will all run concurrently to perform the update. If they
need to access disk (usually because of virtual memory) the smoothness of
the update can depend a lot on the disk system’s ability to respond to
multiple independent read requests and finish them all as quickly as
possible; SCSI is better at this.
So, yes, ATA can be faster under DOS; but SCSI provides advantages which
are inaccessible to DOS. They will benefit Win95 however. The cost of
intelligent, fast SCSI controllers and drives should decrease as people
discover these advantages and start buying them.
I should add that many of SCSI’s advantages are NOT available with some of
the simpler SCSI controllers which were targeted only to the DOS market or
part of cheap CDROM add-on kits.
Furthermore, SCSI allows far greater flexibility of interconnect. I
concede that for the mass market, which likes to buy pre-configured
machines, this is but a small advantage.