VOGONS


First post, by douglar

User metadata
Rank Oldbie
Rank
Oldbie

When I use an ISA caching IDE controller, it can push/pull data from the cache on the card at 4MB/s at standard 8Mhz ISA speeds. But when I talk directly to a drive on a standard 8Mhz ISA bus, the best ISA cards seem to approach a limit that's a hair over 2MB/s, even with block transfers enabled.

So it's clear that ISA cards can move data faster than 2MB/s . Why doesn't anything but the caching controller use it?

Is there that much ATA chatter going to set up a drive transfer that 1/2 the bandwidth wasted?

Reply 1 of 7, by Deunan

User metadata
Rank Oldbie
Rank
Oldbie

You understand that you are not measuring the ISA bus speed here, but the overall performance of the system, right? Is that a fast 486 with on-chip L1 talking to the bus, or something else? Pure DOS/BIOS with it's code path meant to run on 8086, or some optimized device driver?

Reply 2 of 7, by douglar

User metadata
Rank Oldbie
Rank
Oldbie
Deunan wrote on 2024-07-25, 16:12:

You understand that you are not measuring the ISA bus speed here, but the overall performance of the system, right? Is that a fast 486 with on-chip L1 talking to the bus, or something else? Pure DOS/BIOS with it's code path meant to run on 8086, or some optimized device driver?

So I'm working with an AMD 486 @ 133 Mhz w/ 0 wait state memory, 256KB Cache, shadowed ROMS, no Himem or EMM386.

All ISA hard drive transfers at <= 2MB/s when using a non caching ISA storage controller, even when reading from the drive cache. This is with the stock BIOS, MrBios, XTIDE, SIIG Enhanced BIOS, EZDrive overlay, etc.

When using a caching ISA IDE controller, it can read at 4MB/s from the controller cache, but gets something like 1.4MB/s when reading directly from the drive, as is the nature with those caching cards.

The computer is fast enough to transfer at 4MB/s. The ISA is fast enough to transfer at 4MB/s. The drives are fast enough when operating in a fancier ATA mode.

Just seems like it must be ATA overhead that is keeping things a lot lower than they theoretically could be, but maybe I don't understand the issue.

Reply 3 of 7, by Grzyb

User metadata
Rank Oldbie
Rank
Oldbie

ISA IDE = PIO mode 0 = 3.3 MB/s
A drive, however, can't push the data all the time - often it's waiting for the heads to move instead.
Overall, it's much less than 3.3 MB/s.

A caching controller may also use PIO mode 0 at the ISA side - again, 3.3 MB/s.
But it may also use bus mastering - possibly faster.
At the HDD side, such a controller may also use something faster than PIO mode 0.
And when the drive is busy moving heads, the controller can still push data from the cache.

Nie tylko, jak widzicie, w tym trudność, że nie zdołacie wejść na moją górę, lecz i w tym, że ja do was cały zejść nie mogę, gdyż schodząc, gubię po drodze to, co miałem donieść.

Reply 4 of 7, by Deunan

User metadata
Rank Oldbie
Rank
Oldbie

Also, a mechanical drive (depending on it's age) might just not be able to read the data from the platters any faster than a few MB/s. The older MFM drives will only go up to 350 kB/s or so.

The reason I asked what code is running is already explained, DOS/BIOS will use PIO 0, but even at higher PIO modes and faster CPU you are still limited by the I/O performance. My guess is that caching IDE controller lets you access the data as a memory mapped to ISA space? It would not be able to push 4 MB/s otherwise, not through I/O.

Reply 5 of 7, by jakethompson1

User metadata
Rank Oldbie
Rank
Oldbie

Are you sure the caching IDE still uses programmed I/O to transfer data between the system and cache? Or could a shared memory region be involved?

Reply 6 of 7, by douglar

User metadata
Rank Oldbie
Rank
Oldbie
Deunan wrote on 2024-07-25, 17:16:

My guess is that caching IDE controller lets you access the data as a memory mapped to ISA space? It would not be able to push 4 MB/s otherwise, not through I/O.

jakethompson1 wrote on 2024-07-25, 18:31:

Are you sure the caching IDE still uses programmed I/O to transfer data between the system and cache? Or could a shared memory region be involved?

That makes sense. Takes fewer cycles to do MMIO than it does to do PIO. It comparing PIO to MMIO seems similar to comparing Sata Legacy ATA with Sata AHCI (or NVME even)

Edit: Doing the math, MMIO comes out to about 4.2MB/s max throughput while PIO comes out to about 3.3MB/s max throughput. I can believe that the ATA & IRQ overhead reduces the throughput from 3.3MB/s to 2MB/s much more easily than going from 4.2MB/s to 2.0MB/s.

Reply 7 of 7, by BitWrangler

User metadata
Rank l33t++
Rank
l33t++
Deunan wrote on 2024-07-25, 17:16:

Also, a mechanical drive (depending on it's age) might just not be able to read the data from the platters any faster than a few MB/s. The older MFM drives will only go up to 350 kB/s or so.

Yeah I've known "classic" 486 era IDE drives to top out at 1500kB/s then later 1 and 2GB but early for that size, only doing 2500.

Digression

MFM can be hugely dependent on CPU speed though. You could see as little as 150kB/sec on the old 10MB full height 5.25 KEBFTAT (Kinectic Energy Blunt Force Trauma Anti Tank, 3x more effective than a random rock!) drives in a 5160 with it's original 8088, but that came up nearer to 300 in Turbo XTs with same card and drive. Then if you got the bleeding edge half height 30MB, they'd still not be much better than 300ish... then transferred them to a 286-12, still 300ish.... but wait... redo the interleave to best tested in configuration utility and low level format, then you're getting 600MB/sec on the 286, it was waiting too long for the sectors to come round. So yeah, best performance is got by testing interleave and redoing it, and low level formatting with that, on the machine you are gonna use it on. I think I got one going a bit faster still on a 486sx25 back in the 90s too, but I had to prep it on the 286 board since the Low level utils were long gone from BIOSes and it was best guess rather than optimised on machine, also gained from using RLL controller so not exactly apples to apples.

Unicorn herding operations are proceeding, but all the totes of hens teeth and barrels of rocking horse poop give them plenty of hiding spots.