To get a better picture of the performance of the CF to IDE to SCSI solution, I moved the Adaptec 1542C into one of my favorite boards, the Alaris Cougar with a classic Intel 486 DX2 OverDrive CPU.
For a 486, the board has a surprisingly fast IDE controller, an Adaptec 25-VL010 (that’s a VLB IDE controller). With a CF card plugged to the onboard IDE connector, Norton SysInfo 8.0 shows whopping 7 MB/s transfer speed. That is in fact much better than what a typical PCI Pentium board can do (around 3-4 MB/s is common).
The performance of the 1542C was somewhat disappointing. That is to say, it was no faster than the ISA-only 386 board, and if anything just a tad slower, with slightly under 2.5 MB/s transfer rate. I tried increasing the AHA-1542C DMA transfer rate from the default 5 MB/s but couldn’t push it much and it made little difference.
What did make some difference was shadowing the Adaptec BIOS. I found a fascinating AST Research Technical Bulletin #0744A which explains that Adaptec 154x may be slower in 486 systems than in 386 systems because the 16-byte cache line code fetches from the ROM take too many bus cycles. That would explain why shadowing helps.
The bulletin might actually be slightly inaccurate because at least the 1542C has in fact shadow RAM for the BIOS code. The ROM is copied into RAM on the adapter, modified here and there, and then used. As a result, the shadow RAM must be read-write and not read-only, otherwise the 1542C BIOS cannot initialize! However, even though the Adaptec HBA may do its own shadowing, what makes a difference is whether the BIOS code needs to be fetched over the ISA bus or not.
OK, so with the 1542C we’re stuck at around 2.5 MB/s. Is that a problem with ISA, with the 1542C, or with the Acard IDE-to-SCSI adapter? It’s not the CF card, I know that much. But the 486 performance does show that the transfer speed on the 386 system really was not limited by the CPU.
The next step is an Adaptec AHA-2842A, which is a VL-Bus SCSI HBA. And yes, it does make a difference. SysInfo now reports almost 6.1 MB/s transfer speed! Which is actually still not as good as the onboard Adaptec IDE controller, but more than respectable for a 486.
At this point I realize that the AHA-2842A is a Fast SCSI adapter, and the AHA-1542C is not. What that means is that the 1542C is limited to a maximum 5 MB/s transfer rate on the SCSI bus side, while the 2842A goes up to 10 MB/s. It is also obvious that the Acard adapter does support Fast SCSI (not too surprisingly) because it gets past 5 MB/s.
So, can we do better on ISA? Let’s see…
Fast SCSI on ISA
All I need to do is find an ISA-based Fast SCSI HBA. Fortunately there’s an Adaptec AHA-1540CF in my junk pile. And with that, we get to 2.7 MB/s in SysInfo, which is better than the 1542C, but really not much better. During this exercise, I also learn that it really does matter how the SCSI cable is routed (corrupted transfers are no fun).
At this point I discover that by default, the 1540CF does not do Fast SCSI and it needs to be enabled manually. After doing that… the transfer rate is entirely unchanged at 2.7 MB/s.
So what happens if the AHA-1542CF DMA transfer rate is increased to 6.7 MB/s from the default 5 MB/s? That makes a difference and SysInfo now reports close to 3.4 MB/s. This suggests that the ISA bus is really the bottleneck, not SCSI.
And that theory is confirmed by disabling Fast SCSI again. SysInfo still reports almost 3.4 MB/s. Unfortunately it’s not possible to use the next higher DMA speed (8 MB/s), the system simply isn’t stable and won’t boot at all.
There’s one more thing to try, enabling the R/W shadow for the 1540CF BIOS. And yes, that still helps! SysInfo now reports almost 3.7 MB/s, better than before. Again the Fast SCSI setting has no noticeable effect. But really, 3.7 MB/s disk transfer speed on ISA is not at all bad!
And Back to VLB for a Moment
So wait… what if the R/W BIOS shadow is enabled for the VLB adapter? Does the AHA-2842A care? Why yes! The disk transfer speed shown by SysInfo goes from 6.1 MB/s all the way up to 8.4 MB/s, that’s more than one third faster. Now the SCSI transfer speed finally beats IDE on this board (8.4 MB/s on SCSI vs. around 7 MB/s on IDE).
As expected, changing the SCSI transfer rate now has visible impact on the overall speed. At 5.0 MB/s SCSI transfer rate, the SysInfo-measured disk read speed is 3.8 MB/s and 4.6 MB/s, without and with BIOS shadowing, respectively.
To recap, when the HBA allows the maximum 10.0 MB/s SCSI transfer rate, the SysInfo-measured disk transfer rate is 6.1 MB/s and 8.4 MB/s (without and with BIOS ROM shadowing). When the performance isn’t hampered by BIOS ROM accesses over the ISA (or VL) bus, the measured disk speed is not too far from the theoretical maximum SCSI bus transfer speed and far exceeds the ISA transfer speeds. There’s a reason why VLB was popular, even with all its quirks.
What About EMM386?
The above numbers have all been obtained in a true real-mode environment with HIMEM.SYS loaded but no EMM386 or similar memory manager which would enable V86 mode, paging, require VDS (Virtual DMA Services), and presumably slow things down.
And indeed, enabling EMM386 on the Cougar board with a 66 MHz 486 DX2 slowed the transfers from 6.1 MB/s down to 5.7 MB/s (no ROM shadowing in BIOS). That is not a dramatic slowdown but it is a slowdown. Without in-depth analysis, it should be safe to assume that at least VDS and V86 mode contributed.
But wait, it’s not all bad. EMM386 also offers the option to shadow ROMs (
ROM=D800-DFFF in CONFIG.SYS on the tested system). And just like letting the BIOS do it (probably not every BIOS can!), EMM386’s shadowing makes a big difference. The transfer rate goes from 5.7 MB/s to slightly over 8.3 MB/s. That is almost as good as using BIOS shadowing and no EMM386 (that went up to 8.4 MB/s). In other words, EMM386 can make a difference, both negative and positive.
Revisiting the 1542C
Given that Fast SCSI doesn’t seem to do much for the 1540CF, is there more to be done for the older 1542C? Of course there is.
Bumping up the ISA transfer rate to 6.7 MB/s again does little and the transfer rate is stuck at 2.4 MB/s. That’s with no ROM shadow; the ROM shadowing has the unfortunate side effect that the Adaptec configuration utility can’t be called up.
Remember, the 1540CF achieved nearly 3.4 MB/s in this configuration. It turns out that the magic setting on the 1542C is “enable sync negotiation” (off by default). Lo and behold, with sync negotiation on, the 1542C gets to the same 3.4 MB/s and 3.7 MB/s (without/with ROM shadow) transfer speeds.
And to the 386 Again
Which means I need to re-test the 386 to see if it does benefit from the sync negotiation. Not too surprisingly, it does. The 386 can now read at just under 3.3 MB/s from the CF card over SCSI.
When shadowing is enabled for the Adaptec BIOS on the 386 board, things improve once more. Again, the reason for the speed-up is that with shadowed BIOS, the SCSI transfers do not need to contend with BIOS code fetches over the ISA bus. The transfer rate in the 386 board with the 1542C is 3.7 MB/s. That’s impressive for an ISA-only 386 where IDE gets slightly past 1 MB/s on a good day.
At this point, I declare victory and go home.