Welcome to No Limit Sound Productions

Company Founded
2005
Overview

Our services include Sound Engineering, Audio Post-Production, System Upgrades and Equipment Consulting.
Mission
Our mission is to provide excellent quality and service to our customers. We do customized service.

Wednesday, May 7, 2014

The Musician's Guide To PCI Slots & Interrupts

Hitting The Slot

Technique : PC Musician




SiSoftware's Sandra utility displays the various PCI and other buss information as part of its Mainboard applet.

Which PCI slots you use for your expansion cards can make the difference between a music computer that runs flawlessly and one plagued by clicks, pops, crackles and interference.



Martin Walker



If you're suffering from problems such as clicks and pops with your soundcard, the best approach is to systematically eliminate possible causes so you can isolate the root of the problem and deal with it once and for all. However, one class of soundcard problems makes this approach somewhat difficult, simply because so few people fully understand it. I'm talking about the way your PC allocates interrupts to expansion cards, and in particular why a soundcard can work perfectly in one slot, and sometimes even stop your PC from booting up at all when inserted into another.



The PCI To PCI Bridge



Because the PCI buss is unterminated, there's a limit to how many slots it can support, so to add more, a motherboard device called a PCI-to-PCI bridge is used. This provides a connection path between two independent PCI busses, allowing data to flow in both directions. Apple use exactly the same technology in their computers, and older PCs may also have a PCI-to-ISA bridge to handle legacy ISA-format expansion slots. The upshot of all this is that some slots are connected to the primary PCI buss, while others are connected to a secondary buss via the PCI-to-PCI bridge chip. Theoretically, for motherboards to offer more than four PCI expansion slots, a bridge must be used, and motherboards normally feature anything from one to four slots on the secondary side.



If both the soundcard and associated slot support buss mastering, you'll be able to record and play back multiple audio channels with low latency and CPU overhead. Soundcard manufacturers used to issue dire warnings that their products must be installed in a PCI slot with buss master capability, and on older motherboards the secondary PCI buss may not support buss mastering. However, the PCI 2.0 specification specifies that all slots should support buss master operation, so all recent PCs do this. Some modern motherboard designs now supports six buss master PCI slot

Photo: Mark Ewing



The order in which you install your PCI cards can make all the difference in setting up a PC for music.

s -- three on the primary buss, and three on the secondary one -- although nothing's set in stone as far as PC design is concerned. I've seen others that place six PCI slots on a single buss, but there's a fairly simple way to discover how your PC distributes its various PCI devices.



PCI Device Listing



You can normally see how the various devices are connected to your PCI busses by pausing the text-based readout that's displayed just after the BIOS finishes initialising the various Plug and Play cards. A few elderly PCs may not display this, particularly those with Phoenix or AMI BIOS chips, as well as some models from Compaq, Dell and IBM, but most do. On my PC a 'PCI Device Listing' is included in this display, with various columns devoted to Bus number, Device number, Function number, Vendor ID, Device ID, Name, and the IRQ number that's been allocated by the BIOS.



The Bus number shows how the various devices are connected to the PCI buss. On older PCs there may only be a single PCI Bus 0, particularly in a system with mixed PCI/ISA slots, while more recent machines with an AGP slot will also show this as Bus 1, since it runs as an extension to PCI and uses a PCI-to-AGP bridge. However, where more PCI-to-PCI bridges are present, further PCI busses will appear. On most modern motherboards there are quite a few additional devices that connect to the PCI buss, including several USB Host Controllers and integrated graphics, sound chip and LAN support. These all typically appear on buss 0, while the AGP slot appears as buss 1, and the various PCI expansion slots generally appear on PCI buss number 2. This is the case on my Asus TUSL2-C for instance, where all six PCI slots are on buss 2.



Each numbered Device may incorporate several Functions. Nearly every PC user will have at least one multi-function device, since one of its motherboard chips is likely to provide an IDE controller, one or more USB c

Windows Device Manager can display all the devices connected to your PC buss if you use its 'View Devices by connection' option. Here you can see that USB ports, the IDE controller and your hard drives, your graphic card and monitor, as well as all your expansion cards, are all connected via the PCI buss.

ontrollers, and perhaps an SMBus controller. Some soundcards can also incorporate several hardware devices, which will each be detected separately after you install them. For instance, the Creative Audigy 2 soundcard appeared on my PC as Device 13 when installed in slot five and 14 in slot six, with the Soudblaster Audigy functions as Function 0, its Gameport as Function 1, and its IEEE1394 host controller as Function 2.



Vendor IDs are assigned to each manufacturer by the PCI SIG (Special Interest Group). For instance, Echo are 1057h, ST Audio are 1412h, and Yamaha are 1073h (all displayed in hexadecimal format), while the Device ID should be unique to a particular product. During Plug and Play configuration, each slot is interrogated to see if it returns a valid Vendor ID, to determine whether or not a card is present. If one is, further checks are done to determine what resources it requires. So if you install a new soundcard, for instance, it should be detected as a new PCI device, but whether or not it shows up in this list depends on the BIOS setting for 'Plug and Play O/S' (see SOS December 2002 for more details on BIOS tweaks). When the BIOS setting for 'Plug and Play O/S' is set to Yes, my display shows the IDE controller, various serial buss controllers including USB, and the Display controller (graphics card). When this setting is changed to No, the BIOS takes charge of allocating IRQs, and a further two entries appear in the table for my soundcards.



If you ever install a new expansion card and no new hardware is detected during the next boot, then this PCI slot interrogation hasn't worked correctly, and the most likely cause is that your card isn't seated properly in its slot. If this happens the first thing to try is powering down, loosening the backplate screw, rocking the card in its slot, pushing it down again firmly, and then re-tightening the backplate screw to ensure a good earth connection. However, I did once review a SEK'D Prodif 96 soundcard that refused to be recognised until I removed my 20-bit Echo Gina card, and this suggests that both cards had the same IDs.



Internal Hardware Interrupts



Most (but not all) expansion cards need an IRQ (interrupt request) to operate, and the PCI buss uses its own internal interrupt system that deals with expansion card requests. The four interrupt lines it uses correspond to four physical connections on each PCI expansion slot, and these are generally given the names Int A#, Int B#, Int C# and Int D#: letters are used rather than numbers to avoid confusing them with system IRQs. If an interrupt is required by any expansion card, Int A# is generally assigned, leaving the other three for possible use in a multi-function device. So, for instance, the Audigy 2 soundcard uses A# for its main audio/MIDI portion, and B# for its IEEE1394 Host Controller (the third Gameport function doesn't need an interrupt).



If any device requires a PCI interrupt, it's mapped to one of the hardware IRQs that we're more familiar with. I've heard industry professionals claim that since there are only four Int pins on a PCI expansion slot, you can never get more than four unique interrupts to run your cards, however many slots are on the motherboard, but this isn't true. Eac

SiSoftware's Sandra utility displays comprehensive details for each device on the various PC busses, including in the case of all expansion cards which system interrupt and internal interrupt pin they use.

h expansion slot is separately wired, and you can check this by taking a look in SiSoftware Sandra's 'CPI, AGP, CardBus Bus(es) Information' applet: if you look under hardware resources, the chances are that each and every card in your PC uses Int Pin A#, even when they are assigned different IRQs.



Interrupt Request Tables



What determines how the various slots and other PCI devices share their interrupt resources is down to the motherboard manufacturer, and here we enter a mysterious world where each model of motherboard can be different. If a particular expansion slot shares an internal interrupt with another device, this cannot be changed: it will share whatever you attempt to change in the BIOS or in Windows. So, for instance, if slots two and three share an internal interrupt, there's absolutely nothing you can do to change this. If there are no other spare slots available that have a unique interrupt, you either have to make sure that one of the two cards doesn't need an interrupt, or that both are happy sharing one -- it's as simple as that.



In the past, motherboard manufacturers seemed reluctant to reveal exactly how each of their models was wired and which slots were shared, making the selection of a suitable slot for each of your expansion cards a frustrating hit-and-miss affair until users posted the results of their experiments on the Internet. These days, most are more forthcoming, and you should find an Interrupt Request Table in your motherboard manual (you can often download one in PDF format from the manufacturer's web site if you weren't supplied with a printed version), but you still have to know how to interpret it. As is often the case, a practical example will help explain, so I've reproduced the table from my Asus TUSL2-C manual (right).



First of all, you'll notice that apart from the AGP and PCI slots, the first column also includes a variety of other devices, all of which connect to the PCI buss. Some, like the two USB Universal Host Controllers, each in charge of a pair of USB ports, will be found on every version of this motherboard, while others such as the PCI CMI8738 audio device

PCI On The Internet

If you need more information on everything to do with PCI here are a few places to look. The PCI Special Interest Group is the place to download official documents relating to the PCI specification:



W www.pcisig.com



The unofficial database for PCI developers:



W www.yourvote.com/pci



Craig's PCI pages:



W http://members.datafast.net.au/dft0802



on my motherboard are optional -- I bought the version without this feature, and can therefore ignore all references to it. You may find other devices on your motherboard that are similarly optional items. The CNR (Communication and Networking Riser) slot on my motherboard is designed to plug in a cheap LAN network card (the CNR LAN entry), or a modem or audio device (CNR Audio/Modem). These don't come with the motherboard, and since I have neither I can ignore their two entries as well.



Across the top of the table are the various motherboard interrupt request sharing options, generally laid out in eight columns labelled A through to H. Confusingly, these don't relate to the Int Pins A# to D#, but are simply eight interrupt lines shared out among the various PCI devices. Scanning across the row labelled 'PCI slot 1', you'll see a 'shared' entry in the 'F' column. This means that this first slot is shared with something else, and looking further down the same column we find that it's PCI slot 5. So, this is a fundamental restriction of my motherboard: any cards plugged into slots one and five will always share a motherboard interrupt, whichever IRQ the BIOS or Windows assign to them.



Now, if you look at the entry for 'PCI slot 2', you'll see a 'used' entry. This unfortunate choice of word confuses a lot of people, since it doesn't mean that the interrupt for this slot is already taken, but that the motherboard interrupt line G is used exclusively by the second slot. In other words, it's not sharing with any other device at a hardware level. Sca

PCI Utilities

Windows 98 users can use Device Manager's 'view devices by connection' option to display the list of devices connected to the PCI buss, while XP users can get some useful extra information by expanding the contents of each individual entry for the PCI buss. If you double-click on each device and look under the Location heading on the General page you'll see the PCI buss number, device number, and function number, while expansion cards will also display which slot they are using.



If you want more information about the capabilities of your various PCI devices, a quick download of the Entech PCI List utility (www.entechtaiwan.com/files/pcilist.exe) will let Windows 98/ME users view the various bridges, controllers, and PCI expansion cards currently available and whether or not they support buss mastering, as well as providing information about the supported and enabled AGP features of your graphics card. Windows NT/2000/XP users can try Altitech's PCI Statistics utility for similar purposes (www.altitech.com).



Another useful (if somewhat overwhelming) utility, which works across all Windows versions, is PCI Tree (www.pcitree.de), which displays all the components of the PCI buss in a tree structure just like Windows Explorer. However, the most comprehensive of all is SiSoftware's Sandra utility (www.sisoftware.co.uk/sandra), which I described in PC Notes May 2002. Under its 'PCI, AGP, CardBus Bus(es) Information' applet you can find details of all the devices connected to each of the busses on your PC.



nning the various other entries, you can see that while the AGP and PCI slot 2 get unique hardware interrupts, slots 1 and 5 share one, and PCI slot 3 shares with USB ports 3 and 4. However, in my case, PCI slots 4 and 6 also get their own unique interrupts as well, since my PC doesn't have either the CNR LAN or onboard PCI audio chip installed.



Which Slot For The Soundcard?



Once you understand how the system works, it becomes much easier to decide which slot to use for your soundcard, to minimise the likelihood of conflicts. It's always safer to use one that doesn't share automatically with another device, to avoid possible conflicts, and it's particularly wise to do this with some Via motherboard chipsets -- you should follow the advice of your soundcard manufacturer. Sharing also imposes an extra tiny overhead over having a unique interrupt, although sometimes this may be unavoidable.



Again referring to my TUSL2-C motherboard as an example, using slot 1 for a soundcard should be fine as long as the shared slot 5 isn't being used, and since my BIOS has an extra entry labelled High Priority PCI Mode which gives PCI slot 1 a higher priority, suggested for use with a Firewire card, this is what I've chosen for my Echo Mia card. If your motherboard provides such a choice (and if it does it's nearly always slot 1) then this may avoid clicks and pops due to excessive buss activity in some cases when you have lots of PCI buss master devices installed in the same PC, such as a SCSI host adaptor card, PCI graphic card, and perhaps other soundcards.



However, some AGP graphic cards do push out a lot of radio-frequency noise (I've heard that some nVidia cards have proved troublesome in this respect), and in this case it's wiser to keep your soundcard as far away from this interference as possible. You should also steer clear of SCSI cards for the same reason. If you're unsure about this aspect, try recording some analogue background noise on your soundcard while making the other card active, by wiggling your mouse, doing some screen updates, transferring data over the SCSI buss, and so on. If you hear anything untoward,

Gaining More Unique Interrupts For Expansion Cards

In the standard PC design there are only 16 interrupts available, but many of them are already allocated to a fixed use. These include 0 for the System Timer, 1 for Keyboard Controller, 8 for the real-time clock, and 13 for the maths co-processor: none of these are accessible to expansion cards, since they are hard-wired on the motherboard. Interrupt 2 is also a special case, because it was used to overcome the eight-IRQ limit of the original IBM AT computer, by adding a second interrupt controller capable of providing a further eight IRQs (8 to 15), and piping these through the unused IRQ2 of the first controller. So, it always appears as 'Programmable Interrupt Controller' (PIC) or '2nd IRQ Controller Cascade', and is unable for other duties, or simply doesn't appear in the list of options.



Of the remainder, 6 is always used by the floppy disk controller, 12 defaults to a PS/2 mouse port unless you're using a USB mouse, and 14 and 15 are normally the primary and secondary IDE controllers. This only leaves 3, 4, 5, 7, 9, 10 and 11, and of these, Windows takes charge of IRQ9 if ACPI Mode is enabled.



Each USB Host Controller requires an interrupt and supports a pair of USB ports, so if your PC has six ports these will need three IRQs. However, as explained in the main text, you can disable unused USB pairs, either in Windows or in the BIOS, and either return their IRQ to the pool (if they aren't sharing with a card slot), or give yourself another slot with a unique interrupt choice if they are. Similarly, a typical PC may have two serial ports (COM1 and COM2), along with one parallel port (LPT1). Each of these is normally allocated an IRQ, but if you don't have anything plugged it to any of them you can disable them, and the system IRQs they use by default will become available to other devices, including the various PCI slots. The important thing to remember is that you can't override any IRQ sharing that's determined by your motherboard's Interrupt Request Table, since these are choices hard-wired at the design stage.



The situation changes with some modern motherboards that have an Advanced Programmable Interrupt Controller (APIC). These can be found on multi-processor motherboards, and on some single-processor ones as well. If you have one of these, and are running Windows 2000 or XP, then if you run in ACPI mode you'll get 24 interrupts rather than the 16 offered when running under Standard mode, which can make other choices rather simpler. APIC also results in lower interrupt latency than standard PIC.



move your soundcard to another expansion slot and try again to see if it goes away. If you have a spectrum analyser plug-in to examine the background noise, watch out as well for signs of interference such as spectral lines that aren't harmonics of any test signal.



Now's also a suitable time to answer that perennial query from musicians: does the first PCI slot share an interrupt with the AGP slot, and if so should I avoid plugging my soundcard into it? Well, a few years back there were certainly plenty of motherboards that provided shared PCI 1/AGP slots, but armed with your new knowledge of the motherboard's Interrupt Request Table you can confirm this for your PC one way or the other -- if it proves to be the case then you should certainly avoid it for soundcard duties. Remember that since this is a motherboard design decision, there's no way you can tweak things in the BIOS or Windows to give such a slot its own unique interrupt.



I've installed my Yamaha SW1000XG soundcard in slot 2, since this doesn't share with anything, but the worst decision for my soundcard would be slot 3, since as I explained in SOS December 2002, sharing with a USB Host Controller that polls its interrupts at a high rate would undoubtedly give my system a small performance hit and possible conflicts. However, remember that you don't have to use every device on your system. For instance, I have a USB modem and printer, plus a Cubase SX dongle and Midisport 8x8 MIDI interface, but I only use the first pair in my general partitions, and the second pair in my music partitions. By plugging the modem and printer into USB ports 3 and 4 and then disabling these ports inside my music partitions using Window's Device Manager, I could set the machine up so that PCI slot 3 wouldn't be sharing either, and it would become another possible home for a soundcard; also, the MIDI timing of my interface might benefit from not sharing an interrupt with anything else at the hardware level.



Slot 4 would be fine as long as I didn't install the CNR LAN board option, while slot 5 would also be suitable if slot 1 were still unoccupied, and slot 6 is once again fine in the absence of the on-board sound chip. Out of interest, I did have problems installing one review soundcard in slot 5 while my Mia was sharing with it, but it worked perfectly once I'd moved it to slot 6.



As long as the supplied Interrupt Request Table in your motherboard manual is correct, you just need to proceed logically and carefully when deciding where your soundcard(s) should live. I have come across some users claiming a few errors in the past, often when new versions of existing motherboards are introduced and the table in the printed manual isn't similarly updated. For this reason it's well worth downloading the PDF version of the manual that specifically relates to your revision of motherboard.



Of course it gets more complicated once you have lots of other PCI cards to install, but often a trip to an Internet forum that specialises in your make of motherboard will provide plenty of suggestions and examples from existing users who have already thrashed out the best options for their system. However, there's no substitute for understanding the options for yourself, since you're almost guaranteed to have a different selection of cohabiting expansion cards. The most important thing if your PC is well stuffed with expansion cards is to make sure that any that do end up sharing are happy to do so. I'm not only referring to soundcard sharing problems either, since other types of card may have problems sharing with each other. I came across a reference to Adaptec's popular 2940UW SCSI Controller card being unable to share, for instance, and trying to get it to do so may prevent your PC from booting up at all.



It isn't always easy to find out about expansion cards that cause potential sharing problems, since manufacturers whose products don't like sharing are often not keen to advertise the fact -- if you get told to try moving a particular card to another slot it's easy for a manufacturer to blame sharing problems on the other card in the pair, when in fact it's theirs. If any of you know of expansion cards that definitely can't share their interrupt with another card, let me know and I'll create a list on the PC Music FAQs area of the SOS on-line forums.



Final Thoughts



Remember that in this feature I've been discussing internal hardware interrupts and motherboard interrupt sharing. Which IRQs are actually allocated to each PCI slot is determined by either the BIOS or Windows, depending on other settings. If the BIOS 'Plug and Play O/S' setting is left at its usual default of No, then the BIOS will shuffle the available IRQs among the various slots if the Slot IRQ parameters in the BIOS PCI Configuration page are left at their default Auto

Here's an example of what's possible once you've studied the Interrupt Request Table and disabled any unused hardware devices: the System Information readout for IRQs on my own music partitions. Only IRQ9 shows two entries, and only one of them is a device -- the other is ACPI -- but for me the most important aspect is that my two soundcards each get unique IRQs.

settings. Alternatively, you can try to force a particular system IRQ to any of the PCI slots from the available BIOS settings. Once Windows gets its evil way, and particularly when 'Plug and Play O/S' is set to Yes, the situation gets increasingly complicated, since the final IRQ assignments will depend on several factors. I've visited this area on various occasions, most recently in SOS December 2002, and in particular when discussing both ACPI and IRQ Steering in SOS March 2002.



Personally I prefer to leave the 'Plug and Play O/S' setting at No, and then allocate each of my soundcards a unique IRQ once I know what interrupts are needed by other system devices. Using this approach I've even managed to avoid sharing when running my PC in ACPI Mode (see screenshot), so I'm sticking by my previous advice that you should leave ACPI enabled unless you experience problems such as audio stuttering, clicks and pops that don't respond to the normal operating system tweaks. Switching to Standard mode instead of ACPI might help, but on the latest Microsoft offerings ACPI actually seems to work very well, particularly if you have an APIC instead of a PIC controller (see box).



The important point is to make sure your soundcard isn't forced to share with another device at the hardware level, since once this happens Windows is out of the picture, and can't work around any problems it finds. So, if you've tried everything in Windows and the BIOS, and your soundcard still ends up sharing with some USB ports, it may be down your choice of expansion slot. A little time spent examining your motherboard's Interrupt Request Table will help you decide the best slots for each of your cards, and if you're thinking of building a new music PC, it may even be worth downloading the PDF-format manuals for your shortlisted motherboards to do just this. After all, there's nothing more frustrating than being unable to find a suitable slot for your soundcard, and only you know what other expansion cards will be installed. Armed with this knowledge you'll soon be able to determine whether or not a particular motherboard will be a pig or a dream to work with.  
Published in SOS May 2003

No comments:

Post a Comment