Date: Thu, 5 Jun 1997 07:52:34 +1000 From: Bruce Evans <bde@zeta.org.au> To: gurney_j@resnet.uoregon.edu, se@FreeBSD.ORG Cc: current@FreeBSD.ORG, straka@inficad.com Subject: Re: sio driver performance Message-ID: <199706042152.HAA18548@godzilla.zeta.org.au>
next in thread | raw e-mail | index | archive | help
>> also, it's a know fact that the 16550's are kinda heavy on overhead >> (not as bad as a parallel port though)... if you want to do many >> ports at full speed you really should invest in a smarter card, >> like a Digiboard/Cyclom/Riscom/Stallion smart board that has larger >> buffers and usually supports mapped memory access... > >Well, the 16550's FIFO will be read a byte a time, and >that means you will be limited to a few MB/s (Bruce Evans >did some testing of ISA port latencies, recently, and >posted his results). This makes some 10 microseconds per >14 bytes (if the receive FIFO was set to 14 bytes, that is). My old ISA/VLB system is significantly faster than my PCI/ISA system for ISA i/o. Not too surprisingly, the BIOS has more ISA knobs to twiddle. I think I have both systems set to 8MHz 1 wait state, but I get access times of 1179 nsec (9+ clocks) for port 0x3F8 on the PCI/ISA system and 978 nsec (7+ clocks) on the ISA/VLB system. For address 0xd4000 on a Cyclades 8Yo board, the access time is 798 nsec (6+ clocks). >A FIFO depth of 8 will reduce the time to read out those >8 bytes to some 5 microseconds. This amounts to 7 milli- >seconds per second (or just below 1%) per port, not taking >the interrupt handler overhead into account ... No, 8 bytes always take at least 8 i/o's to read, and in the current version of the driver they actually take 16+ i/o's to read, because each byte is accompanied by a status byte that has to be read and there are a couple of other status bytes to read. At 1 usec per byte it takes about 20 usec to do the i/o. General (fast)interrupt overhead is approx. 10 usec on a 486/33. The FIFO depth must be at least 4 for the overhead to be no larger than the i/o time. When it is 1 (no FIFO), efficiency suffers by a factor of 4. Increasing the depth above 14 doesn't have much effect on overheads. Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199706042152.HAA18548>