Bulletin number: 364 Products affected: S708 Description: I/O speed and DMA with S708 Component: Date: Mon Apr 15 09:32:25 BST 1991 ----- The DMA facility in the B008 Support Software S708 will only give a noticable performance enhancement with earlier versions of PCs with slow (4.77MHz) CPU clocks. In later ones with faster clocks, the CPU goes much faster than the bus, so DMA or CPU I/O are little different. In fact for small transfers DMA can be less efficient due to the setup overhead. Hence there's not really a gret deal of advantage to be had from DMA unless you have a really slow PC. The best performance can be acheived by sending data to/from the B008 in large blocks. The block size has a much greater influence on performance than does the use of DMA. The iserver uses a protocol to communicate with the B008 which necessarily imposes an overhead on I/O performance. The Inmos I/O libraries do their best to optimise I/O by buffering data transfers. For those who need total control over I/O perfomance, use the iserver to start your application on the transputer with: iserver /sr/sc foo.b8h the iserver will then terminate without attempting to provide Host I/O. You can then run your own program on the PC to do the I/O directly with the B008 link, by reading/writing counted arrays of bytes to the B008 address. The application on the transputer would avoid using any of the hostio library calls and simply write bytes to the host link. You can then impose any protocol you wish and tune the packet sizes to suit your application. If you wish to see how this and DMA transfers are performed examine the source code for the iserver. To use the DMA facilities first establish which version of the B008 Support Software you have. The S708A device driver does not work with B008-0C in DMA mode. You must have the S708B. S708B needs iserver Version 1.41 or later. Enter the following line in your config.sys DEVICE=pathname /A address /D dmachan /I interrupt /N LINK1 address: is the hex address of the B008 dmachan: is the DMA channel set on the B008 interrupt: is the interrupt level set for the B008 LINK1 is the recommended default name for the device which INMOS tools recognise. Other names may cause dificulties. SET your TRANSPUTER environment variable to LINK1 or use the iserver /sl option iserver /sl LINK1 /sb foo.b8h Be careful which DMA channel and Interrupt you chose for the B008. It is easy to get conflicts with other cards in the PC such as Ethernet, SDLC, disk controllers etc. Following is a list of the DMA and interrupt settings of standard devices on typical PC's and compatibles. This is only intended as a guide; consult the PC manufacturer for further assistance if in doubt. Many Ethernet cards use the same settings as SDLC adapters, but don't rely on this, as thet can be changed. IBM PC DMA Settings Interrupt Settings 1 Not Used 2 Reserved 2 Floppy Drive 3 Async adapter (Alternate) 3 Not Used 3 SDLC adapter (Alternate) 3 BSC adapter (Alternate) 3 Cluster (primary) 4 Async adapter (primary) 4 SDLC adapter (primary) 4 BSC adapter (primary) 5 Hard disk IBM XT DMA Settings Interrupt Settings 1 SDLC adapter 1 Network adapter 2 Redirected to 9 2 Floppy Drive 3 Serial Port 2 3 Hard disk 3 BSC adapter (Alternate) 3 PC Network adapter 3 PC Network adapter (alternate) 3 SDLC adapter 4 Serial Port 1 4 BSC adapter 4 BSC adapter (Alternate) 4 SDLC adapter 5 Parallel Port 2 9 PC Network adapter 9 PC Network adapter (alternate) IBM AT DMA Settings Interrupt Settings 1 SDLC adapter 1 Network adapter 2 Redirected to 9 2 Hard disk 3 Serial Port 2 3 Not used 3 BSC adapter (Alternate) 3 PC Network adapter 3 PC Network adapter (alternate) 3 SDLC adapter 3 Cluster Primary 4 Serial Port 1 4 BSC adapter 4 BSC adapter (Alternate) 4 SDLC adapter 5 Parallel Port 2 9 PC Network adapter 9 PC Network adapter (alternate) On our AT compatibles fitted with EtherLink II cards from 3Com we find the following line works well: DEVICE=C:\s708b\s708driv.sys /A 200 /D 3 /I 5 /N LINK1