old-www/HOWTO/PCI-HOWTO-2.html

343 lines
16 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>Linux PCI-HOWTO: Why PCI?</TITLE>
<LINK HREF="PCI-HOWTO-3.html" REL=next>
<LINK HREF="PCI-HOWTO-1.html" REL=previous>
<LINK HREF="PCI-HOWTO.html#toc2" REL=contents>
</HEAD>
<BODY>
<A HREF="PCI-HOWTO-3.html">Next</A>
<A HREF="PCI-HOWTO-1.html">Previous</A>
<A HREF="PCI-HOWTO.html#toc2">Contents</A>
<HR>
<H2><A NAME="s2">2. Why PCI?</A></H2>
<P>
<P>
<H2><A NAME="ss2.1">2.1 General overview</A>
</H2>
<P>The PC-architecture has several BUS-Systems to choose from:
<DL>
<DT><B>ISA</B><DD><P>16 or 8bit, cheap, slow (usually 8Mhz), standard, many cards available>
<DT><B>EISA</B><DD><P>32bit, expensive, fast, few cards available, fading>
<DT><B>MCA</B><DD><P>32 or 16bit ex-IBM-proprietary, fast, becoming rare>
<DT><B>VESA-Local-Bus</B><DD><P>32bit, based on 486 architecture, cheap, fast, many cards available>
<DT><B>PCI-Local-Bus</B><DD><P>32bit (64 bit coming), cheap, fast, many cards available, nowadays standard>
</DL>
<P>
<P>MCA worked fine, but never achieved much market, being used on only
some early IBM PS/2 machines. There were very few cards.
<P>EISA was reliable, but rather expensive, and intended more for
servers, than for the average user. It has the next fewest cards
available.
<P>VESA-Local-Bus (VLB) had some problems with high bus-speeds, and was
not very reliable, but mainly due to its low price and better-than-ISA
performance, sold very well. Technically, it's almost a direct map of
the 486 processor bus. Most VESA boards should be stable by now. At
the beginning of 1996, many 486 motherboards still support VESA, but
PCI is growing. VESA busses are tied directly to the speed of the
memory bus for 486's, or half the speed for Pentiums.
<P>PCI now has the advantage. Like EISA it is not proprietary. It is as
faster than EISA or MCA, and cheaper. Most current Pentium
motherboards use the PCI bus; VESA is fading. Virtualy all PCI
motherboards and cards sold at the beginning of 1996 are 32 bit, and
run at 0-33 MHz.
<P>Currently, most Pentium motherboards run the PCI bus at 1/2 the memory
speed (ie: 33 MHz for the 66 MHz memory bus on the P66,P100,P133,P166;
30 MHz for the 60 MHz memory bus on the P60,P90,P120,P150; and 25 Mhz
on the 50 MHz memory bus of the P75). This is probably true of Cyrix
6x86 motherboards too. NexGen 5x86 implemention isn't known.
The PCI spec does allow the PCI bus to be run asynchronously from the
processor, (eg: 33 Mhz bus on P75), but this is not common yet.
<P>PCI 2.1 has been defined, allowing 64 bit PCI, and/or 0-66 MHz
operations, but no x86 chipsets yet support these options. 64 bit PCI
will probably appear first, in 32/64 bit dual compatible versions.
That is, you will be able to mix 32 and 64 bit cards. 66 MHz PCI will
take longer, as it's technically demanding, can only support one or
maybe two slots per bridge, and may not work well with 33 MHz cards.
<P>PCI is not processor dependent like the VESA Local-Bus. This means you
can use the winner-1000-PCI in an Alpha-driven-PCI computer as well as
in a i486/Pentium-driven PCI computer, with the appropriate BIOS and
software. Beside Intel and DEC Alpha platforms, PCI is used on some
PowerPC's.
<P>Some PCI variations to be aware of: some implementations support "Bus
Master" cards in all PCI slots, some in only one slot, and some not at
all; some implementations support "bridging" on cards and some do not.
<P>
<H2><A NAME="ss2.2">2.2 Performance</A>
</H2>
<P>taken from Craig Sutphin's early Pro-PCI-Propaganda
<P>
<BLOCKQUOTE>
Unlike some local buses, which are aimed at speeding up graphics
alone, the PCI Local Bus is a total system solution, providing
increased performance for networks, disk drives, full-motion video,
graphics and the full range of high-speed peripherals. At 33 MHz, the
synchronous PCI Local Bus transfers 32 bits of data at up to 132
Mbytes/sec. A transparent 64-bit extension of
the 32-bit data and address buses can double the bus bandwidth (264
Mbytes/sec) and offer forward and backwards compatibility for 32 and
64-bit PCI Local Bus peripherals. Because it is processor-independent,
the PCI Local Bus is optimized for I/O functions, enabling the local
bus to operate concurrent with the processor/memory subsystem.
For users of high-end desktop PC's, PCI makes high reliability, high
performance and ease of use more affordable than ever before; no trivial task
at 33 MHz bus-clock rates. Variable length linear or toggle mode
bursting for both reads and writes improves write dependent graphics
performance. By comprehending the loading and frequency requirements
of the local bus at the component level, buffers and glue logic are
eliminated.
</BLOCKQUOTE>
<P>See the chapter about Benchmarks for some crude (and perhaps meaningless)
benchmarks on ASUS PCI Boards with 486 and 586.
<P>
<H2><A NAME="ss2.3">2.3 The onboard-SCSI-II-chip NCR53c810</A>
</H2>
<P>One very nice feature of some PCI mother boards is the NCR
onboard-SCSI-II-chip, which is said to be as fast as the
EISA-Adaptec-1742, but much cheaper. Drivers for DOS/OS2 are
available. Drew Eckard has released his version of his
NCR53c810-driver, which is in the standard kernel since v1.2.
<P>This works so well I sold my adaptec-1542B-ISA soon after I bought the
ASUS SP3-saturn-chipset II PCI board, and found the onboard NCR-SCSI
controller to be much faster.
<P>The NCR53c810-chip is onboard on some PCI-motherboards.
There are add-on-boards available too, for about US$ 70.00.
<P>There is only one thing I noticed did not work with the NCR-drivers
when I tried them. Disconnect/Reconnect did not work, so using a
SCSI-tape could be a pain, especially when using "mt erase" or the
like blocks the whole SCSI-bus until it has finished. Since this was
very unsatisfying for me, I bought one of these nice but expensive DPT
PCI SCSI controller and had no such problems anymore.
<P>People have reported this problem has been solved by Drew by now.
<P>FreeBSD does support the NCR53c810 for quite a long time already,
including Tagged Command Queues, FAST, WIDE and Disconnect for NCR
53c810, 815, 825. Drew said, it would be possible to adapt the FreeBSD
driver to Linux. I somewhere saw some patches to do exactly this, any
pointer to the location?
<P>I personaly have the impression there are some important wheels
invented more than once because of the differently evolving of FreeBSD
and Linux. Some more cooperation could do both systems very well...
<P>
<H2><A NAME="ss2.4">2.4 Drew Eckhardt on PCI-SCSI:</A>
</H2>
<P>
<P>Drew said on end of March 95 about the SCSI on PCI:
(slightly edited for clarity in context)
<P>The Adaptec 2940, Buslogic BT946, BT946W, DPT PCI boards, Future Domain 3260,
NCR53c810, NCR53c815, NCR53c820, and NCR53c825 all work for some definition of
the word works.
<P>
<UL>
<LI> The Adaptec 2940 suffers from the same cabling sensitivity
that plagues all recent boards, but otherwise works fine.</LI>
<LI> The Future Domain boards are not busmasters, and the driver doesn't
support multiple simultaenous commands. If you don't (currently)
need multiple simultaneous commands, get a NCR board, which will
be cheaper and is busmastering. If you need multiple simultaneous
commands, get a Buslogic.</LI>
<LI> The Buslogic BT956W will do WIDE SCSI with the Linux drivers (although
you can't use targets 8-15), the Adaptec 2940W (with one line patch
to the 2940 driver) won't, nor will the NCR53c820 and NCR53c825.</LI>
<LI> The NCR boards are dirt cheap (&lt; $ 70 US), are generally quite fast,
but the driver currently doesn't support multiple simultaenous
commands. Alpha which do neat things like disconnect/reconnect and
synchronous transfer are now publicly available, see below.</LI>
<LI> Emulux, Forex, and other unmentioned PCI SCSI controllers will
not work. </LI>
</UL>
<P>
<H2><A NAME="ss2.5">2.5 New Alpha Version of the NCR driver</A>
</H2>
<P>
<P>Well, this is not exactly *that* new anymore, please try to he
versions which are in the kernel by version 2.0.x before going for
this entry.
<P>Alpha versions of the NCR driver which do neat things like disconnect/reconnect
and synchronous transfers are now publically available. Any one interested
in playing with them should
<UL>
<LI> Join the NCR mailing list, by sending mail to majordomo@colorado.edu
with subscribe ncr53c810 in the text.</LI>
<LI> Get all of the readmes, and latest diffs file from
ftp://tsx-11.mit.edu/pub/ALPHA/linux/SCSI/ncr53c810</LI>
</UL>
<P>
<H2><A NAME="ss2.6">2.6 The EATA-DMA driver and the PCI SCSI controllers from DPT</A>
</H2>
<P>
<P>The EATA-DMA scsi driver has undergone extensive changes and now also
supports PCI SCSI controllers, multiple controllers and all SCSI channels
on the multichannel SmartCache/Raid boards in all combinations
of WIDE, FAST-20 (ULTRA) and DIFFERENTIAL.
<P>
<P>The driver supports all EATA-DMA Protocol (CAM document CAM/89-004
rev. 2.0c) compliant SCSI controllers and has been tested
with many of those controllers in mixed combinations.
<P>
<PRE>
Those are: (ISA) (EISA) (PCI)
DPT Smartcache: PM2011 PM2012B
Smartcache III: PM2021 PM2022 PM2024
PM2122 PM2124
PM2322
Smartcache IV: PM2041 PM2042 PM2044
PM2142 PM2144
PM2322
SmartRAID : PM3021 PM3122
PM3222 PM3224
PM3334
and some controllers from NEC, AT&amp;T, SNI, AST, Olivetti and Alphatronix.
</PRE>
<P>On a "base" DPT card (no caching or RAID module), a MC680x0 controls
the bus-mastering DMA chip(s) and the SCSI controller chip.
The DPT SCSI card almost works like a SCSI coprocessor.
<P>The DPT card also will emulate an IDE controller/drive (ST506 interface),
which enables you to use it with all operating systems even if they don't
have an EATA driver.
<P>On a card with the caching module, the 680x0 maintains and manages the
on-board cacheing. The DPT card supports up to 64 MB RAM for disk-cacheing.
<P>On a card with the RAID module, the 680x0 also performs the management
of the RAID, doing the mirroring on RAID-1, doing the striping and ECC
info generation on RAID-5, etc.
<P>The entry level boards utilize a Motorola 68000, the high-end, more raid
specific DPT cards use a 68020, 68030 or 68040/40MHz processor.
<P>Official list prices range from $ 265 to $1.645 (January 18, 1996)
<P>
<P>Since I've been asked numerous times where you can buy those boards
in Europe, I asked DPT to send me a list of their official European
distributors. Here is a small excerpt:
<P>
<PRE>
Austria: Macrotron GmbH Tel:+43 1 408 15430 Fax:+43 1 408 1545
Denmark: Tallgrass Technologies A/S Tel:+45 86 14 7000 Fax:+45 86 14 7333
Finland: Computer 2000 Finnland OY Tel:+35 80 887 331 Fax:+35 80 887 333 43
France : Chip Technologies Tel:+33 1 49 60 1011 Fax:+33 1 49 599350
Germany: Akro Datensysteme GmbH Tel:+49 (0)89 3178701 Fax:+49 (0)89 31787299
Russia : Soft-tronik Tel:+7 812 315 92 76 Fax:+7 812 311 01 08
U.K. : Ambar Systems Ltd. Tel:+44 1296 311 300 Fax:+44 296 479 461
</PRE>
<P>"IMHO, the DPT cards are the best-designed SCSI cards available for a PC.
And I've written code for just about every type of SCSI card for the PC.
(Although, in retrospect, I don't know why!) ;-)"
Jon R. Taylor (jtaylor@magicnet.net) President, Visionix, Inc.
<P>The latest version of the EATA-DMA driver and a Slackware bootdisk is
available on:
ftp.i-Connect.Net:/pub/Local/EATA
<P>
<P>Since patchlevel 1.1.81 the driver is included in the standard kernel
distribution.
<P>The author can be reached under these addresses:
neuffer@mail.uni-mainz.de or mike@i-Connect.Net
<P>
<H2><A NAME="ss2.7">2.7 BT-946C fully supported with kernel 1.3.x and newer</A>
</H2>
<P>
<P>There is a driver in the 1.3.x kernels (available as a patch for the
1.2.13 kernel) written by someone associated with buslogic that fully
supports the 946C and ALL of it's features including strict round
robin, tagged queueing, multiple scatter/gather, multiple mailboxes,
IRQ sharing, and yes, 15 devices on Fast/Wide. It is no longer
necessary to use any ISA emulation with the driver (no DMA channel, no
ISA address), and the driver is /fast/ and /stable/ (it's out of BETA
and into full release).
<P>The driver is available on ftp.dandelion.com (the newest version can
always be got by doing "get BusLogic*"). It supports ALL BusLogic
controllers with the exception of the FlashPoint LT, which uses a
different interface. The driver is included in the 1.3.x kernels as
standard for BusLogic devices.
<P>
<P>
<H2><A NAME="ss2.8">2.8 Future Domain TMC-3260 PCI SCSI</A>
</H2>
<P>
<P>Rik Faith (faith@cs.unc.edu) informed me on Wed, 1 Feb 1995 about the
Future Domain TMC-3260 PCI SCSI card being supported by the Future
Domain 16x0 SCSI driver. Newer information might be contained in the
SCSI-HOWTO.
<P>
<UL>
<LI> Detection is not done well, and does not use standard PCI BIOS
detection methods (someone who has a PCI board needs to send me
patches to fix this problem). So, you might have to fiddle with the
detection routine in the kernel to get it detected.</LI>
<LI> The driver still does not support multiple outstanding commands, so
your system will hang while your tape rewinds.</LI>
<LI> The driver does not support the enhanced pseudo-32bit transfer mode
supported by recent Future Domain chips, so you will not get
transfer rates as high as under DOS.</LI>
<LI> The driver only supports the SCSI-I protocol, so your really fast
hard disks will not get used at the highest possible
throughput. (Again, fixes for all these problems are solicited -- no
one is working on them at this time.)</LI>
</UL>
<P>
<P>
<H2><A NAME="ss2.9">2.9 other thoughts on scsi</A>
</H2>
<P>
<P>James Soutter (J.K.Soutter1@lut.ac.uk) asked me to add the
following information on Fast-Wide-SCSI-2:
<P>
<BLOCKQUOTE>
Fast Wide SCSI-2 is sometimes incorrectly called SCSI-3. It differs
from the normal Fast SCSI-2 (like the Adapted 1542B?) because it uses
a 16 bit data bus rather than the more usual 8 bit bus. This improves
the maximum transfer rate from 10 MB/s to 20 MB/s but requires the use
of special Fast Wide SCSI-2 drives.
<P>The added performance of Fast
Wide SCSI-2 will not necessarily improve the speed of your system.
Most hard disk drives have a maximum internal transfer rate of
less than 10 MB/s and so one drive alone can not flood a FAST SCSI-2
bus.
<P>In Seagate's Oct 1993 product overview, only one Fast Wide SCSI-2
drive has an internal transfer rate of more than 10 MB/s (the ST12450W).
Most of the drives have a maximum internal transfer rate of 6 MB/s
or less, although the ST12450W is not the only exception to the rule.
In conclusion, Fast Wide SCSI is designed for the file server market
and will not necessarily benefit a single user workstation style
system.
<P>Rather than buying a PCI system with a SCSI interface on the
motherboard, or rather than waiting for the NCR driver, you could purchase a
separate PCI based SCSI card. According to Drew, the only PCI SCSI option that
stands a chance of working is the Buslogic 946. It purports to be
Adaptec 1540 compatible, like the EISA/VESA/ISA boards in the series.
<P>Drew commented that other PCI based SCSI controllers are unlikely
to be supported under Linux or the BSD's because the NCR based
controllers are cheaper and more prevalent.
</BLOCKQUOTE>
<P>I definitly recommend reading the SCSI HOWTO in regards to newer
information about PCI SCSI drivers.
<P>Ernst Kloecker (ernst@cs.tu-berlin.de) wrote:
(edited)
<BLOCKQUOTE>
Talus Corporation has finished a NS/FIP driver for PCI boards with NCR
SCSI. It will be shipping very soon, might even be free because a third
party might pay for the work and donate the driver to NeXT.
</BLOCKQUOTE>
<P>Not every PCI-Board has got the chip. The old ASUS do, and one of the
J-Bond boards does, too. (Most of the boards nowadays (6/95) do expect you to
buy the NCR53c810 seperately.) Some vendors provide an alternative as you
can read in Drew's text...
<P>The NCR-Chip is clever enough to work with drives formatted by other
controllers, and should be no problem.
<P>
<HR>
<A HREF="PCI-HOWTO-3.html">Next</A>
<A HREF="PCI-HOWTO-1.html">Previous</A>
<A HREF="PCI-HOWTO.html#toc2">Contents</A>
</BODY>
</HTML>