A frequent question is:
"Linux supports quite a number of different boards, so which scsi host adapter should I get."
The answer depends upon how much performance you expect or need, motherboard, and the scsi peripherals that you plan on attaching to your machine.
The biggest factor affecting performance (in terms of throughput and interactive response time during SCSI I/O) is the transfer type used. The table below lists the various transfer types, the effects they have on performance, and some recommendations as to their use.
Description / Performance / Recommendations
A pure polled I/O board will use the CPU to handle all of the SCSI processing, including the REQ/ACK handshaking.
Even a fast CPU will be slower handling the REQ/ACK handshake sequence than a simple finite state machine, resulting in peak transfer rates of about 150K/sec on a fast machine, perhaps 60K/sec on a slow machine (through the filesystem).
The driver also must sit in a tight loop as long as the SCSI bus is busy, resulting in near 100% CPU utilization and extremely poor responsiveness during SCSI I/O. Slow CDROMs which don't disconnect/reconnect will kill interactive performance with these boards.
Not recommended.
Boards using interlocked polled I/O are essentially the same as pure polled I/O boards, only the SCSI REQ/ACK handshaking signals are interlocked with the PC bus handshaking signals. All SCSI processing beyond the handshaking is handled by the CPU.
Peak transfer rates of 500-600K/sec through the filesystem are possible on these boards.
As with pure polled I/O boards, the driver must sit in a tight loop as long as the SCSI bus is busy, resulting in CPU utilization dependent on the transfer rates of the devices, and when they disconnect/reconnect. CPU utilization may vary between 25% for single speed CDs which handle disconnect/reconnect properly to 100% for faster drives or broken CD ROMs which fail to disconnect/reconnect.
On my 486-66, with a T128, I use 90% of my CPU time to sustain a throughput of 547K/sec on a drive with a headrate of 1080K/sec with a T128 board.
Sometimes acceptable for slow tapes and CDROMs when low cost is essential.
Boards using FIFO polled I/O put a small (typically 8K) buffer between the CPU and the SCSI bus, and often implement some amount of intelligence. The net effect is that the CPU is only tied up when it is transferring data at top speed to the FIFO and when it's handling the rest of the interrupt processing for FIFO empty conditions, disconnect/reconnect, etc.
Peak transfer rates should be sufficient to handle most SCSI devices, and have been measured at up to 4M/sec using raw SCSI commands to read 64K blocks on a fast Seagate Baracuda with an Adaptec 1520.
CPU utilization is dependent on the transfer rates of the devices, with faster devices generating more interrupts per unit time which require more CPU processing time. Although CPU usage may be high (perhaps 75%) with fast devices, the system usually remains usable. These boards will provide excellent interactive performance with broken devices which don't disconnect/reconnect (typically cheap CDROM drives)
Recommended for persons on a budget.
Drivers for boards using slave DMA program the PC's DMA controller for a channel when they do a data transfer, and return control to the CPU.
Peak transfer rates are usually handicapped by the poor DMA controller used on PCs, with one such 8-bit board having problems going faster than 140-150K/sec with one mainboard.
CPU utilization is very reasonable, slightly less than what is seen with FIFO polled I/O boards. These boards are very tolerant of broken devices which don't disconnect/reconnect (typically cheap CSG limitDROM drives).
Acceptable for slow CDROM drives, tapes, etc.
These boards are intelligent. Drivers for these boards throw a SCSI command, the destination target and lun, and where the data should end up in a structure, and tell the board "Hey, I have a command for you." The driver returns control to various running programs, and eventually the SCSI board gets back and says that it's done.
Since the intelligence is in the host adapter firmware and not the driver, drivers for these boards typically support more features - synchronous transfers, tagged queuing, etc.
With the clustered read/write patches, peak transfer rates through the file system approach 100% of head rate writing, 75% reading.
CPU utilization is minimal, irregardless of I/O load, with a measured 5% CPU usage while accessing a double speed CDROM on an Adaptec 1540 and 20% while sustaining a 1.2M/sec transfer rate on a SCSI disk.
Recommended in all cases where money is not extremely tight, the main board is not broken (some broken main boards do not work with bus masters), and applications where time to data is more important than throughput are not being run (bus master overhead may hit 3-4ms per command).
The second most important driver/hardware feature with respect to performance is support for scatter/gather I/O. The overhead of executing a SCSI command is significant - on the order of milliseconds. Intelligent bus masters like the Adaptec 1540 may take 3-4ms to process a SCSI command before the target even sees it. On unbuffered devices, this overhead is always enough to slip a revolution, resulting in a transfer rate of about 60K/sec (assuming a 3600RPM drive) per block transfered at a time. So, to maximize performance, it is necessary to minimize the number of SCSI commands needed to transfer a given amount of data by transferring more data per command. Due to the design of the Linux buffer cache, contiguous disk blocks are not contiguous in memory. With the clustered read/write patches, 4K worth of buffers are contiguous. So, the maximum amount of data which can be transfered per SCSI command is going to be 1K * # of scatter/gather regions without the clustered read/write patches, 4K * # of regions with. Experimentally, we've determined that 64K is a reasonable amount to transfer with a single SCSI command - meaning 64 scatter/gather buffers with clustered read/write patches, 16 without. With the change from 16K to 64K transfers, we saw an improvement from 50% of headrate, through the filesystem, reading and writing, to 75% and 100% respectively using an Adaptec 1540 series board.
A number of intelligent host adapters, such as the Ultrastor, WD7000, Adaptec 1540, 1740, and BusLogic boards have used a mailbox-metaphor interface, where SCSI commands are executed by putting a SCSI command structure in a fixed memory location (mailbox), signaling the board (ie, raising the outgoing mail flag), and waiting for a return (incoming mail). With this high level programming interface, users can often upgrade to a newer board revision to take advantage of new features, such as FAST + WIDE SCSI, without software changes. Drivers tend to be simpler to implement, may implement a larger feature set, and may be more stable.
Other intelligent host adapters, such as the NCR53c7/8xx family, and Adaptec AIC-7770/7870 chips (including the 274x, 284x, and 2940 boards) use a lower level programming interface. This may prove faster since processing can be shifted between the board's processor and faster host CPU, allow better flexibility in implementing certain features (ie, target mode for arbitrary devices), and these boards can be built for less money (In some cases, this is passed on to the consumer (ie, most NCR boards)). On the down side, drivers tend to be more complex (read : there is more potential for bugs), and must be modified to take advantage of the features present on newer chips.
Bus type is the next thing to consider, with choices including ISA, EISA, VESA, and PCI. Marketing types often spout of absurd bandwidth numbers based on burst transfer rates and fiction, which isn't very useful. Instead, I've chosen to state "real-world" numbers based on measured performance with various peripherals.
Bandwidth, description,
Bandwidth is slightly better than 5M/sec for busmastering devices. With an ISA bus, arbitration for busmasters is performed by the venerable 8237 third party DMA controller, resulting in relatively high bus acquisition times. Interrupt drivers are tri-state and edge triggered, meaning interrupts cannot be shared. Generally, ISA is unbuffered, meaning the host/memory bus is tied up whenever a transfer is occuring. No mechanism is provided to prevent bus-hogging.
Bandwidth is about 30M/sec. Some VESA systems run the bus out of spec, rendering them incompatible with some boards, so this should be taken into consideration before purchasing hardware without a return guarantee. Generally, VESA is unbuffered, meaning meaning the host/memory bus is tied up whenever a transfer is occuring.
Bandwidth is about 30M/sec, with busmastering operations generally being faster than VESA. Some EISA systems buffer the bus, allowing burst transfers to the faster host/memory bus and minimizing impact on CPU performance. EISA interrupt drivers may be either tri-state edge-triggered or open collector level-active, allowing interrupt sharing with drivers that support it. Since EISA allocates a separate address space for each board, it is usually less prone to resource conflicts than ISA or VESA.
Bandwidth is about 60M/sec. Most PCI systems implement write posting buffers on the host bridge, allowing speed mismatches on either side to have a minimum impact on bus/CPU performance. PCI interrupt drivers are open collector level-active, allowing interrupt sharing with drivers that support it. Mechanisms are provided to prevent bus hogging, and for both master and slave to suspend a bus-mastering operation.
Since PCI provides a plug-n-play mechanism with writeable configuration registers on every board, in a separate address space, a properly implemented PCI system is plug-and play.
PCI is extremely strict as to trace length, loading, mechanical specifications, etc. and ultimately should be more reliable than VESA or ISA.
In summary, PCI is the best PC bus, although it does have its dark side. PCI is still in its infancy, and although most manufacturers have ironed out the problems, there is still stock of older, buggy PCI hardware and broken main BIOSes. For this reason, I _strongly_ recommend a return guarantee on the hardware. While the latest PCI mainboards are truly plug-and-play, older PCI boards may require the user to set options with both jumpers and in software (ie, interrupt assignments). Although many users have resolved their PCI problems, it has taken time and for this reason I cannot recommend a PCI purchase if having the system operational is extremely time critical.
For many slower SCSI devices, such as disks with head rates around 2M/sec or less, CDROMs, and tapes, there will be little difference in throughputs with the different PC bus interfaces. For faster contemporary SCSI drives (Typical high end multi-gigabyte drives have a head rate of 4-5M/sec, and at least one company is currently ALPHA testing a parallel head unit with a 14M/sec head rate), throughput will often be significantly better with controllers on faster busses, with one user noting a 2.5 fold performance improvement when going from an Adaptec 1542 ISA board to a NCR53c810 PCI board.
With the exception of situations where PCI write-posting or a similar write-buffering mechanism is being used, when one of the busses in your system is busy, all of the busses will be unaccessible. So, although bus saturation may not be interfering with SCSI performance, it may have a negative effect on interactive performance. Ie, if you have a 4M/sec SCSI disk under ISA, you'll have lost 80% of your bandwidth, and in an ISA/VESA system would only be able to bitblt at 6M/sec. In most cases, a similar impact on processing jobs in the background would also be felt.
Note that having over 16M of memory does not preclude using an ISA busmastering SCSI board. Unlike various broken operating systems, Linux will double buffer when using a DMA with an ISA controller and a transfer is ultimately destined for an area above 16M. Performance on these transfers only suffers by about 1.5%, ie not noticeably.
Finally, the price difference between bus masters offered with the different bus interfaces is often minimal.
With all that in mind, based on your priorities you will have certain bus preferences
Stability, time critical installations, EISA ISA VESA PCI
and poor return policies
Performance, and typical hobbiest PCI EISA VESA ISA
installations
As I pointed out earlier, bus mastering versus other transfer modes is going to have a bigger impact on total system performance, and should be considered more important than bus type when purchasing a SCSI controller.
If will you have multiple devices on your SCSI bus, you may want to see whether the host adapter/driver that you are considering supports more than one outstanding command at one time. This is almost essential if you'll be running a tape drive, and very desirable if you are mixing devices of different speeds, like a CD ROM and a disk drive. If the linux driver only supports one outstanding command, you may be locked out of your disk drive while a tape in the tape drive is rewinding or seeking to end of media (perhaps for half an hour). With two disk drives, the problem will not be as noticeable, although throughput would approach the average of the two transfer rates rather than the sum of the two transfer rates.
Over the years, SCSI has evolved, with new revisions of the standard introducing higher transfer rates, methods to increase throughput, standardized commands for new devices, and new commands for previously supported devices.
In and of themselves, the revision levels don't really mean anything. Excepting minor things like SCSI-II not allowing the single initiator option of SCSI-I, SCSI is backwards compatible, with new features being introduced as options and not mandatory. So, the decision to call a SCSI adapter SCSI, SCSI-II, or SCSI-III is almost entirely a marketing one.
Driver feature comparison (supported chips are listed in parenthesis)
Driver Simultaneous SG > 1 Transfer mode Commands limit Boards total/LUN AM53C974 Busmastering DMA 12s/1s 255s Y aha152x FIFO(8k) Polled 7s/1s 255s N (AIC6260, AIC6360) aha1542 Busmastering DMA 8s/1s 16 Y aha1740 Busmastering DMA 32s 16 N aha274x Busmastering DMA 4s/1s 255s Y BusLogic Busmastering DMA 192/31 128s, 8192h Y (values are for BT-948/958/958D, older boards support fewer commands) eata_dma Busmastering DMA 64s-8192h/2-64 512s, 8192h Y fdomain FIFO(8k) Polled 1s 64s N (TMC1800, except TMC18c30 TMC18c30, with 2k FIFO TMC18c50, TMC36c70) in2000* FIFO(2k) Polled 1s 255s N g_NCR5380 Pure Polled 16s/2s 255s Y (NCR5380, NCR53c80, NCR5381, NCR53c400) gsi8* Slave DMA 16s/2s 255s (NCR5380) PAS16 Pure Polled 16s/2s 255s Y (NCR5380) or Interlocked Polled (fails on some systems!) seagate Interlocked Polled 1s/1s 255s N wd7000 Busmastering DMA 16s/1s 16 Y t128 Interlocked Polled 16s 255s Y (NCR5380) qlogic Interlocked Polled 1s/1s 255s N ultrastor Busmastering DMA 16s/2s 32 Y 53c7,8xx Busmastering DMA (NCR53c810, NCR53c815, NCR53c820, NCR53c825) rel5 1s/1s 127s N rel10 8s/1s 127s Y
Notes :
Board Driver Bus Price Notes Adaptec AIC-6260 aha152x ISA chip, not board Adaptec AIC-6360 aha152x VLB chip, not board (Used in most VESA/ISA multi-IO boards with SCSI, Zenon mainboards) Adaptec 1520 aha152x ISA Adaptec 1522 aha152x ISA $80 1520 w/FDC Adaptec 1510 aha152x ISA 1520 w/out boot ROM, won't autoprobe. Adaptec 1540C aha1542 ISA Adaptec 1542C aha1542 ISA 1540C w/FDC Adaptec 1540CF aha1542 ISA FAST SCSI-II Adaptec 1542CF aha1542 ISA $200 1540CF w/FDC Adaptec 1640 aha1542 MCA Adaptec 1740 aha1740 EISA discontinued Adaptec 1742 aha1740 EISA discontinued, 1740 w/FDC Adaptec 2740 aha274x EISA Adaptec 2742 aha274x EISA w/FDC Adaptec 2840 aha274x VLB Adaptec 2842 aha274x VLB w/FDC Adaptec 2940 aha274x PCI Always IN2000 in2000 ISA BusLogic BT-948 BusLogic PCI $180 Ultra SCSI BusLogic BT-958 BusLogic PCI $230 Wide Ultra SCSI(see the section BusLogic MultiMaster Host Adapters for additional BusLogic board descriptions)
DPT PM2011 eata_dma ISA FAST SCSI-II PM2012A eata_dma EISA FAST SCSI-II PM2012B eata_dma EISA FAST SCSI-II PM2021 eata_dma ISA FAST SCSI-II PM2022 eata_dma EISA FAST SCSI-II PM2024 eata_dma PCI FAST SCSI-II PM2122 eata_dma EISA FAST SCSI-II PM2322 eata_dma EISA FAST SCSI-II PM2124 eata_dma PCI FAST SCSI-II PM2124 eata_dma PCI FAST SCSI-II PM2124 eata_dma PCI FAST SCSI-II PM2124 eata_dma PCI FAST SCSI-II PM2124 eata_dma PCI FAST SCSI-II PM2124 eata_dma PCI FAST SCSI-II PM2041W eata_dma ISA Wide Single-ended SCSI-II PM2041UW eata_dma ISA Ultra Wide Single-ended PM2042W eata_dma EISA Wide Single-ended PM2042UW eata_dma EISA Ultra Wide Single-ended PM2044W eata_dma PCI Wide Single-ended PM2044UW eata_dma PCI Ultra Wide Single-ended PM2142W eata_dma EISA Wide Single-ended PM2142UW eata_dma EISA Ultra Wide Single-ended PM2144W eata_dma PCI Wide Single-ended PM2144UW eata_dma PCI Ultra Wide Single-ended PM3021 eata_dma ISA multichannel raid/simm sockets PM3122 eata_dma EISA multichannel/raid PM3222 eata_dma EISA multichannel raid/simm sockets PM3224 eata_dma PCI multichannel raid/simm sockets PM3334 eata_dma PCI Wide Ultra SCSI multichannel raid/simm sockets DTC 3290 aha1542 EISA Although it should work, due to documentation release polcies, DTC hardware is unsupported DTC 3130 53c7,8xx PCI '810 DTC 3130B 53c7,8xx PCI '815 DTC 3292 aha1542 EISA 3290 w/FDC DTC 3292 aha1542 EISA 3290 w/FDC Future Domain 1680 fdomain ISA FDC Future Domain 3260 fdomain PCI NCR53c810 (boards sold 53c7,8xx PCI $60 chip, not board. Boards by FIC, Chaintech, (board) don't include Nextor, Gigabyte, etc. BIOS, although most Mainboards with chip by non-NCR equipped main AMI, ASUS, J-Bond, boards have the SDMS etc. Common in DEC BIOS PCI systems) NCR53c815 ( 53c7,8xx PCI $100 NCR53c810 plus Intel PCISCSIKIT, bios NCR8150S, etc) NCR53c825 53c7,8xx PCI $120 Wide variant of NCR53c815. Note that the current Linux driver does not negotiate for wide transfers. Pro Audio Spectrum 16 pas16 ISA Sound board w/SCSI Seagate ST01 seagate ISA $20 BIOS only works with some drives Seagate ST02 seagate ISA $40 ST01 w/FDC Sound Blaster 16 SCSI aha152x ISA Sound board w/SCSI Western Digital 7000 wd7000 ISA w/FDC Trantor T128 t128 ISA Trantor T128F t128 ISA T128 w/FDC and support for high IRQs Trantor T130B g_NCR5380 ISA Ultrastor 14F ultrastor ISA w/FDC Ultrastor 24F ultrastor EISA w/FDC Ultrastor 34F ultrastor VLB
Notes :
SW (swt@netcom.com) (214) 907-0871 fax (214) 907-9339
As of 23 Dec 1995, their price was $53 on '810 boards.Most ISA, EISA, VESA, and PCI users will probably be served best by a BusLogic MultiMaster board, due to its performance, features such as active termination, and Adaptec 1540 compatibility. There are a number of models available with EISA, ISA, PCI, and VESA local bus interfaces, in single ended and differential, and 8/16 bit SCSI bus widths. The most recent Ultra SCSI PCI models, the BT-948/958/958D, also include Flash ROM for easy firmware updates, as well as automatic "smart" termination.
People with the need for the highest possible IO performance at their fingertips should consider the boards from DPT, which are the only ones that support RAID, caching and more than one SCSI channel.
People with PCI systems should consider NCR53c8xx based boards. These are bus mastering SCSI controllers, '810s are available quantity one for $53 (ie, cheaper than the Adaptec 1520). C't magazine benchmarked the boards as faster than both the Adaptec 2940 and BusLogic BT-946C (under DOS), and they get reasonable performance under Linux (up to 6M/sec through the file system ). The disadvantages of these boards versus the BusLogics are that they aren't Adaptec 1540 compatible, may or may not come with active termination, you'll need the latest driver revision (standard in 1.3.5x, also available via anonymous FTP for 1.2.x) to make full use of the hardware, and are more likely to have problems than with a mailbox interface board like a BusLogic or DPT.
Where everything working right on the first try is imperative, a BusLogic MultiMaster or DPT board is probably optimal due to the complexity and potential for problems in non-mailbox interface boards like the NCR53c8xx and Adaptec AIC7xxx .
People wanting non-PCI SCSI on a limited budget will probably be happiest finding a surplus or used Adaptec 154x B revision or 174x A revision, or an Adaptec 1520 clone of some sort (about $80) if they want new hardware. These boards offer reasonable throughput and interactive performance at a modest price.