red-ray wrote on 2025-04-19, 09:00:
I also tried it on my AMD Am5x86, it ran OK, but reported x1 most of the time.
I next tried real DOS 6.22 and it reported "Measurement failed. Strange de-turbo mode ?". When I pressed Ctrl/Alt/Del PARITY ERROR was displayed on the screen.
I am very confused by the program causing a parity error. This program does nothing special to hardware that could cause a parity error, it just accesses memory like every task in DOS does and interfaces with the timer chip and general ouput port like any DOS application that would play PC speaker sound. The program does not touch any chipset configuration, cache configuration or other low-level stuff. I suggest you check your DOS installation for the presence of the "parity boot" virus, which is known to cause spurious "PARITY ERROR" messages. On the other hand, my tool might be buggy and inadvertently flip some bits in the general output port (I access that port for timer control) that are meant to enable/disable parity checking, so a virus is not the only explanation.
Thanks for posting screnshots that include the diagnostic numbers.
The DOS interpretation is the "correct" one: My method doesn't work on your system. The measurements in Windows are noisy (as the tool expects a single-tasking environment), and as I didn't include proper filtering and validation of the result, the noise in interpreted as "x1". The 8 numbers indicate the time (in units of 838ns) required to execute a test loop with an increasing amount of NOPs inside it. On a x1 486 processor, a linear raise of the time is expected. If a higher multiplier is active, stair steps are expected. On a x4 system like your system, I expect some roughly equal values (less than 4), then 4 roughly equal but bigger values, and finally a third set of even bigger values. That's what the set of numbers is supposed to look like, and the length of the first complete step is taken as multiplier.
As for why it fails on your system, I observe that there is no cleary ascending pattern in the numbers, which also matches the DOS behaviour. So the loop is not bottlenecked on the load instructions as I expected it to be. If all 8 numbers are roughly the same, the "strange de-turbo mode" message is printed, as I only happened to observe this behaviour with the de-turbo mode of the UMC8881 chipset. The test is known to fail with L1 disabled, but L1 is clearly enabled, as you won't get down to around 7000 to 8000 ticks execution time with L1 disabled. There obviously are some interactions between the chipset and the processor that are not properly considered in the method design yet. I'm going to test the tool on different 486 systems later, but don't expect a fix for that soon.
The system I initially tested the tool on had the L2 timing set to 3-2-2-2 fixed in the setup, as I am oftentimes changing the FSB on that board, and I have that timing just to be safe. I should have cross-validated the method at faster L2 timings, but I didn't. Possibly that's why it fails on your system, as slower L2 timings might indeed affect what the loop is bottlenecked on, and faster L2 cache might remove the FSB bottleneck my code relies on.