VOGONS


First post, by Marco

User metadata
Rank Oldbie
Rank
Oldbie

Hello all,

It was mentioned in various threads as side remark: 10 MB DMA Speed Setting is the key to great scsi HDD performance.

Question is: how to get there? What’s the secret behind it?

I am not able to achieve more than 5,7MB setting with AHA 1542CP no matter what I tried.
My Mobo runs fine with 16MHz ISA max, DMA at 8 MHz but I think this is not the point.

What’s the point then? Reaching max throughput for IDE at least is related to ISA Bus Speed. Seems to be different for scsi.

Anyone has a real idea about
- what these scsi setting do mean and imply technically? Anything bus master related?
- why some (my) boards won’t go higher than std 5-5,7 MB? What’s the key to success?

Thanks a lot already.

1) VLSI SCAMP 311 | 386SX25@TI486SXLC2-50@63 | 16MB | CL-GD5434 | CT2830| SCC-1 | MT32 | WDC160GB/7200/8MB | Fast-SCSI AHA 1542CF + BlueSCSI v2/15k U320
2) SIS486 | 486DX/2 66(@80) | 32MB | TGUI9440 | LAPC-I

Reply 1 of 14, by mkarcher

User metadata
Rank l33t
Rank
l33t
Marco wrote on 2025-10-07, 18:18:

I am not able to achieve more than 5,7MB setting with AHA 1542CP no matter what I tried.
My Mobo runs fine with 16MHz ISA max, DMA at 8 MHz but I think this is not the point.

Indeed, ISA clock and DMA clock do not matter for the 1542 series controllers, because despite what the term ISA clock might imply, ISA is basically an asynchronous bus. A memory read cycle starts when /MEMR gets asserted. Some time later, the value from memory is visible on the bus (or IOCHRDY is pulled low to ask for more delays), and after the reader latched the data from memory, it deasserters /MEMR. Obviously, most devices driving the ISA bus have an internal clock that sequences the ISA operation. In case of your mainboard, the chipset is obviously able to sequence ISA cycles from a base frequency of 16 MHz. The standard 0WS memory cycle will have /MEMR (or /MEMW) asserted for one clock, and deasserted for the other clock, for a total of two clocks.

In the case of the 1542, the 1542 asks the DMA controller to grant bus ownership to the 1542, and the 1542 starts issuing bus cycles derived from its internal 20MHz clock, not related to the ISA clock at all. In contrast to non-busmaster DMA, the DMA controller with its clock (of up to 8MHz) is not used for anything except bus arbitration. The 1542C series have quite freely programmable durations of the bus signal (/MEMR, /MEMW) being active and being negated. As the base clock is 20MHz, these durations are measured on a 50ns grid. The highest possible rate is achieved by having the signal two clocks asserted, two clocks desasserted, which results in 5 Mega-Transfers per second. The second-highest rate, 8MB/s can be achieved by 150ns asserted, 100ns de-asserted or the other way around. The 8MB/s setting in the BIOS maps to 100ns asserted ("active time"/"pulse width") and 150ns de-asserted ("recovery time"/"strobe off time"). I have a 386DX mainboard that works with the AHA1542CF at 8MB/s, but only using the other configuration, which can be set at the ASPI driver command line given a suitable speed code argument. (see page 46 of http://www.bitsavers.org/pdf/adaptec/pc/AHA-1 … nual_199304.pdf for the description of speed codes).

I just re-checked my reverse engineering of the 1542CF firmware, and it uses these mappings for classic speed codes:

  • 5MB/s (code 0) maps to 250ns pulse / 150ns rest (400ns cycle time)
  • 6.7MB/s (code 1) maps to 150ns pulse / 150ns rest (300ns cycle time)
  • 8MB/s (code 2) maps to 100ns pulse / 150ns rest (250ns cycle time)
  • 10MB/s (code 3) maps to 100ns pulse / 100ns rest (200ns cycle time)
  • 5.7MB/s (code 4) maps to 200ns pulse / 150ns rest (350ns cycle time)
  • 3.3MB/s (code 255) is actually a "custom rate" at maximum slowness of 450ns pulse / 150ns rest (600ns cycle time)

If your mainboard doesn't support speeds above 5.7MB/s, it requires an active time of at least one of MEMR or MEMW of 200ns at least, and it fails if the active time is reduced to 150ns (the next faster setting). You might want to experiment with speed setting 0xA2 (or 160 decimal), which will generate 6.7MB/s at 200ns active, 100ns rest.

Marco wrote on 2025-10-07, 18:18:

What’s the point then? Reaching max throughput for IDE at least is related to ISA Bus Speed. Seems to be different for scsi.

Let's not conflate the hard drive interface technology (IDE vs. SCSI) with the data transfer methode between the controller/interface card and the system memory (programmed I/O vs. busmaster DMA). Programmed I/O uses the ISA clock of the mainboard as reference clock for the cycle duration, so higher ISA bus clock means higher data rate. Busmaster DMA on the other hand lets the card control the timing entirely by itself. The card may use the bus clock signal on the ISA bus as basis for its cycle timing, but it doesn't have to - and the Adaptec controllers do not use the ISA bus clock to generate their busmaster timing. If, on the other hand, you would use an AHA-1522B in PIO mode, it would be as dependent on the ISA speed as an IDE interface card is.

Marco wrote on 2025-10-07, 18:18:

- why some (my) boards won’t go higher than std 5-5,7 MB? What’s the key to success?

To go higher than 5.7MB/s, the mainboard needs to be able to perform RAM reads within 150ns - either under all conditions, or it needs to use IOCHRDY to ask for extra delays. While 150ns might sound plenty for 70ns RAM, it actually is not, especially if the board is trying to use fast page mode. Note that 70ns is the time from starting a memory cycle to getting valid data. There is some extra delay after getting the data before the next cycle may start. If you are not using fast page page, this is the RAS cycle time, which is 130ns for a TC514400A-70 (a random 70ns chip I have a datasheet for at hand). To achieve that 130ns cycle time, you have a lot of timing constraints to hit: RAS needs to be low for 70ns (at least) and high for 50ns (at least). Given some ns for transitioning from low to high and vice versa, these two values are nearly fixed. Now, look at (for example) a 33MHz chipset clock, which has a period of 30ns. Unless the chipset uses half clocks, the fastest it would be able to drive the chip at is 90ns low + 60ns high (unless you violate specifications), which just hits the 150ns time given by the 1542. Not using page mode, this is no issue, because the 60ns high time can be in the 100ns "strobe off time" of the 1542 and the 90ns low time can be in the 150ns "pulse width" of the 1542. But if you want to use page mode, you keep /RAS low for some time after a memory cycle, hoping the next cycle hits the same page. If it does, you can perform a much faster "page hit" cycle (the page mode cycle time of that chip is 45ns), but if you miss the page, you need to raise /RAS at the time the next access is supposed to start, so the "RAS precharge time" of at least 50ns will start only after the address provided by the 1542 has been compared to the currently open page and a miss has been detected. The time required to detect the miss and close the current page will likely no longer fit the 150ns time frame required by the 1542.

If memory timing is generated off the FSB clock, using a higher FSB clock may help to reduce synchronization losses between the 1542 requests on the ISA bus and the memory controller. On the other hand, you also have to consider that higher FSB clocks might require more clock cycles for specific phases of the memory access cycle, so increasing the FSB clock might actually decrease memory performance if you need to add wait states.

Reply 2 of 14, by jakethompson1

User metadata
Rank l33t
Rank
l33t
mkarcher wrote on 2025-10-07, 20:24:

In the case of the 1542, the 1542 asks the DMA controller to grant bus ownership to the 1542

Just for clarity's sake, this does not involve the 8237 at all, correct? And at least on the PC/AT, this portion of the "DMA controller" reacting to the MASTER# pin appears to be just 74 series chips.

Reply 3 of 14, by Marco

User metadata
Rank Oldbie
Rank
Oldbie

Unbelievable. As usual - more than precise andi informative answer.

What I take out of it (summary):

1. I will play around with following BIOS settings
: Page-Miss/Bank-Hit Cycles
: Bank A & B Page Mode
: RAS Shut-Off Option
: Enable CAS Before RAS Refr
: slow refresh (probably not)
To see if it will lead to timing/ handling improvements

2. higher FSB = BUSCLK could solve it but not possible for me.

3. often quoted max ISA transfer bandwidth has no validity when using Busmaster.

4. to study the detailed timing options

5. Setting timings via ASPI driver options did not solve the issue for me (standard sets)

So: again thank you very much for time and effort for this detailed answer.

1) VLSI SCAMP 311 | 386SX25@TI486SXLC2-50@63 | 16MB | CL-GD5434 | CT2830| SCC-1 | MT32 | WDC160GB/7200/8MB | Fast-SCSI AHA 1542CF + BlueSCSI v2/15k U320
2) SIS486 | 486DX/2 66(@80) | 32MB | TGUI9440 | LAPC-I

Reply 4 of 14, by mkarcher

User metadata
Rank l33t
Rank
l33t
jakethompson1 wrote on 2025-10-07, 20:47:
mkarcher wrote on 2025-10-07, 20:24:

In the case of the 1542, the 1542 asks the DMA controller to grant bus ownership to the 1542

Just for clarity's sake, this does not involve the 8237 at all, correct? And at least on the PC/AT, this portion of the "DMA controller" reacting to the MASTER# pin appears to be just 74 series chips.

It does involve the 8237 for bus arbitration. Assume the 1542 is set to DMA6, the 1542 will assert DRQ6 to request bus ownership. The primary 8237 will respond to DRQ6 by requesting the bus, and assert DACK6# as soon as the bus is granted to the 1542. As the channel is set to cascade mode, the 8237 will not drive any bus control or address lines. By asserting MASTER#, the 1542 will finally configure the 74 series logic chips to not expect some DMA controller driving the bus, but a master instead. The 1542 keeps owning the bus (and thus preventing RAM refresh cycles on the AT) until it de-asserts DRQ6, and that's why the "bus on time" on the 1542 can not be configured to exceed 15µs, which is then followed by a "bus off time" of at least 1µs, after which the 1542 re-arbitrates for the bus.

The nominal rates like 5MB/s do not include the penalty of re-arbitrating for the bus every 16µs. Due to different factors, including the re-arbitration and the limited performance of the Z80 processor on the 1542CF, the practical net SCSI transfer rate is considerably lower than the nominal rate. IIRC, for the 386DX system that can operate at 8MB/s raw rate, the SpeedSys buffered read value do not exceed 6.4MB/s even with a fast hard drive, and linear read is slightly slower.

Reply 5 of 14, by Marco

User metadata
Rank Oldbie
Rank
Oldbie

That’s anyway a fantastic result compared to my 4,5MB with best optimized IDE@16MHZ ISA.

So next personal Retro objective set 😀

1) VLSI SCAMP 311 | 386SX25@TI486SXLC2-50@63 | 16MB | CL-GD5434 | CT2830| SCC-1 | MT32 | WDC160GB/7200/8MB | Fast-SCSI AHA 1542CF + BlueSCSI v2/15k U320
2) SIS486 | 486DX/2 66(@80) | 32MB | TGUI9440 | LAPC-I

Reply 6 of 14, by mkarcher

User metadata
Rank l33t
Rank
l33t
Marco wrote on 2025-10-08, 06:25:

So next personal Retro objective set 😀

Don't try too hard to achieve the rate I quoted. I keep mentioning that specific 386DX-40 system not because I am personally attached to it, or it is a generally outstanding performer (it is not!), but because it is the only system I ever got 8MB/s stable at all. The mainboard is a generic board with the UMC481 chipset operating the L2 cache in "always dirty" write-back mode (which is the worst way to operate an L2 cache in most usage scenarios). The memory timings have been tuned to "just doesn't crash" using the DOS tool AMISETUP, because these options are hidden in the BIOS setup screens.

A reasonable goal would be to find a system that allows 6.7MB/s, although you might need to configure 5.7MB/s (200ns+150ns) in the setup and then re-tune using the ASPI driver to 200+100 to achieve 6.7MB/s, as 150+150 (the BIOS supported variant of 6.7) might not work.

Reply 7 of 14, by Marco

User metadata
Rank Oldbie
Rank
Oldbie

Thanks. I will keep this in mind. As I also use amisetup, do you have recommendations for the settings I showed in m second message (ras shutdown etc) - in case these options where available for your UMC as well?

Thanks

1) VLSI SCAMP 311 | 386SX25@TI486SXLC2-50@63 | 16MB | CL-GD5434 | CT2830| SCC-1 | MT32 | WDC160GB/7200/8MB | Fast-SCSI AHA 1542CF + BlueSCSI v2/15k U320
2) SIS486 | 486DX/2 66(@80) | 32MB | TGUI9440 | LAPC-I

Reply 8 of 14, by jakethompson1

User metadata
Rank l33t
Rank
l33t
mkarcher wrote on 2025-10-08, 05:38:
jakethompson1 wrote on 2025-10-07, 20:47:
mkarcher wrote on 2025-10-07, 20:24:

In the case of the 1542, the 1542 asks the DMA controller to grant bus ownership to the 1542

Just for clarity's sake, this does not involve the 8237 at all, correct? And at least on the PC/AT, this portion of the "DMA controller" reacting to the MASTER# pin appears to be just 74 series chips.

It does involve the 8237 for bus arbitration. Assume the 1542 is set to DMA6, the 1542 will assert DRQ6 to request bus ownership. The primary 8237 will respond to DRQ6 by requesting the bus, and assert DACK6# as soon as the bus is granted to the 1542. As the channel is set to cascade mode, the 8237 will not drive any bus control or address lines. By asserting MASTER#, the 1542 will finally configure the 74 series logic chips to not expect some DMA controller driving the bus, but a master instead. The 1542 keeps owning the bus (and thus preventing RAM refresh cycles on the AT) until it de-asserts DRQ6, and that's why the "bus on time" on the 1542 can not be configured to exceed 15µs, which is then followed by a "bus off time" of at least 1µs, after which the 1542 re-arbitrates for the bus.

The nominal rates like 5MB/s do not include the penalty of re-arbitrating for the bus every 16µs. Due to different factors, including the re-arbitration and the limited performance of the Z80 processor on the 1542CF, the practical net SCSI transfer rate is considerably lower than the nominal rate. IIRC, for the 386DX system that can operate at 8MB/s raw rate, the SpeedSys buffered read value do not exceed 6.4MB/s even with a fast hard drive, and linear read is slightly slower.

That makes sense and I suppose is the only way multiple bus masters would ever be able to work. So most of the 8237's functionality is dormant when used like this, but since you need it anyway, may as well use it to acknowledge that the card can take control of the bus.

Reply 9 of 14, by mkarcher

User metadata
Rank l33t
Rank
l33t
Marco wrote on 2025-10-07, 21:11:

: Page-Miss/Bank-Hit Cycles

As usual: Smaller values mean faster access. If you choose a value too small, the system gets unstable.

Marco wrote on 2025-10-07, 21:11:

: Bank A & B Page Mode

Disabling the page mode will decrease overall system performance, but it may enable higher 1542 burst rates. It might be interesting to play around with it, but generally, page mode operation is more important for system performance than the 1542 burst rate.

Marco wrote on 2025-10-07, 21:11:

: RAS Shut-Off Option

No idea what that option does.

Marco wrote on 2025-10-07, 21:11:

: Enable CAS Before RAS Refr

Generally a good idea, it shouldn't affect supported Adaptec rates, but it will improve compatibility with "too modern" memory modules (like 3-chip 16MB SIMMs, if supported at all).

Marco wrote on 2025-10-07, 21:11:

: slow refresh (probably not)

Enabling "slow refresh" means the RAM gets refreshed less often, but each single refresh is still as fast as it is without "slow refresh". This means less time is "wasted" refreshing RAM. Unless you have special laptop RAM that is designed to be refreshed less often to conserve power, enabling "slow refresh" will operate your RAM outside of its specification, and occasional bit errors may occur, especially at elevated temperature in the summer. In practice, most RAM handles "slow refresh" well enough that you will never notice any issue with slow refresh being enabled.

Reply 10 of 14, by Marco

User metadata
Rank Oldbie
Rank
Oldbie

Thanks again. So page mode might have an impact on the burst rates (it’s all about this topic for my adjustments). Thanks.

RAS shut off as well as Enable CAS Before RAS Refr only have cryptic options be selected as e.g:

Ras shut off option: „RAS off“
RAS Shut-off: This bit, when set, enables only one -RAS line and disables all the other unused
-RAS lines when a bank-miss occurs. When o, it allows two -RAS lines to be active when a
bank-miss occurs. The power-on default value of this bit is 0. (Available in the VL82C310
only.)

Enable CAS Before RAS Refr: „/6“
Enable CAS-Before-RAS Refresh: This bit, when set, enables CAS-before-RAS refresh.
RAS-only refresh is selected if CASREF is 0. The default value of this bit is 0

Anyway no impact on system performance nor stability.

PS: I just noticed on my own that I shouldn’t pay attention on the textual description but on the bits set (in amisetup). Although I am still not quite sure which option to set for RAS shut off option.

Maybe you?

1) VLSI SCAMP 311 | 386SX25@TI486SXLC2-50@63 | 16MB | CL-GD5434 | CT2830| SCC-1 | MT32 | WDC160GB/7200/8MB | Fast-SCSI AHA 1542CF + BlueSCSI v2/15k U320
2) SIS486 | 486DX/2 66(@80) | 32MB | TGUI9440 | LAPC-I

Reply 11 of 14, by Marco

User metadata
Rank Oldbie
Rank
Oldbie

Feedback:

I managed following with my Advansys 5142:

- 8MB DMA Speed:
Seems stable. Benchmarks work. File transfers as well.

- 10MB DMA Speed:
Unstable. Benchmarks work partly. File transfer corrupt.

Unfortunately this scsi card doesn’t have a test routine inside bios/tool as adaptec has.

Results:
Strange. Speedsys won’t show my scsi drive at all. No benches possible. Same for NUSI.

Other programs as HWInfo, LMSCSI or 4Speed work. Results are disappointing:

HWInfo: random as well as seq read: 3mb. I don’t know why both results are the same.

LMSCSI: seq read: 5000kb/s. As this value is the same between 8 and 10MB and always 5000kb/s I have my doubts.

4speed: 3,3 mb/s overall with peaks up to 5mb but a lot of bandwidth downs (hick downs in the graph)

So still no 6mb/s nearby. HDD used: compaq 9,1gb 10000rpm.

Question:
- any idea how to further improve results?
- any idea why speedsys won’t show my scsi HDD although it’s available in dos?

Thanks

1) VLSI SCAMP 311 | 386SX25@TI486SXLC2-50@63 | 16MB | CL-GD5434 | CT2830| SCC-1 | MT32 | WDC160GB/7200/8MB | Fast-SCSI AHA 1542CF + BlueSCSI v2/15k U320
2) SIS486 | 486DX/2 66(@80) | 32MB | TGUI9440 | LAPC-I

Reply 12 of 14, by Marco

User metadata
Rank Oldbie
Rank
Oldbie

I could now also check things with a 1542cf: again not more than 5,7mb possible within the bios checks. That’s so far interesting that the advansys 54xx seems!!! to work up to 8mb.

I assume that’s because the advansys doesn’t provide bios check and simply works but might produce errors in normal operation.

1) VLSI SCAMP 311 | 386SX25@TI486SXLC2-50@63 | 16MB | CL-GD5434 | CT2830| SCC-1 | MT32 | WDC160GB/7200/8MB | Fast-SCSI AHA 1542CF + BlueSCSI v2/15k U320
2) SIS486 | 486DX/2 66(@80) | 32MB | TGUI9440 | LAPC-I

Reply 13 of 14, by douglar

User metadata
Rank l33t
Rank
l33t
Marco wrote on 2025-10-15, 16:34:

- any idea why speedsys won’t show my scsi HDD although it’s available in dos?

I think Speedsys is picky about something in the INT 13h call. I see the same thing with some VLB IDE caching controllers.

For example, speedsys didn't work with a DC4030VL or DC4030VL-1, but did work with works with a DC4030VL-2, which has a newer BIOS.

Reply 14 of 14, by Marco

User metadata
Rank Oldbie
Rank
Oldbie

Indeed. The Advansys won’t provide int13h extension via bios neither. That’s why things can’t be benchmarked

1) VLSI SCAMP 311 | 386SX25@TI486SXLC2-50@63 | 16MB | CL-GD5434 | CT2830| SCC-1 | MT32 | WDC160GB/7200/8MB | Fast-SCSI AHA 1542CF + BlueSCSI v2/15k U320
2) SIS486 | 486DX/2 66(@80) | 32MB | TGUI9440 | LAPC-I