Kleines Benchmark-Programm in Assembler - Werte gesucht

Konfiguration, Anwendungen, Treiber und TSRs unter DOS
Antworten
DerPeter
MemMaker-Benutzer
Beiträge: 87
Registriert: Mi 8. Jan 2014, 22:20
Kontaktdaten:

Kleines Benchmark-Programm in Assembler - Werte gesucht

Beitrag von DerPeter »

Hallo,

um u.a. auch die Anzeige eines Texts zu vergleichbaren (Ergebnis-)Werten anpassen zu können, benötige ich einige Ergebniswerte von realen AT, 386ern und 486ern, vielleicht auch von Pentium Maschinen (bitte keine aktuellen, modernen Rechner benutzen).
Das Programm (mit Source-Code zusammen gerade mal 3 KB groß) findet Ihr in einem Blog-Eintrag von mir:
http://www.z80.eu/blog/index.php?entry= ... 208-095857
Die Werte, die das Programm selbst momentan anzeigt, sind via PCem ermittelt worden, und entsprechen höchstwahrscheinlich nicht realen Rechnern.
Die BIOS ROM Shadowing Möglichkeit in Rechnern beschleunigt das Ganze erheblich. Ist das nicht der Fall, sinkt der Wert signifikant. Wäre aber trotzdem schön, mal mit und ohne Shadowing die Werte genannt zu bekommen.
Mein AMD K6-2/400 Rechner bringt einen recht niedrigen dreistelligen Wert, da bin ich noch am Überlegen, warum das der Fall ist...
bench_output.png
bench_output.png (42.93 KiB) 4527 mal betrachtet
mkarcher
LAN Manager
Beiträge: 204
Registriert: Fr 5. Jun 2020, 19:38

Re: Kleines Benchmark-Programm in Assembler - Werte gesucht

Beitrag von mkarcher »

Ich schaue mir gerade Dein Programm mal an. Es stimmt aber definitiv nicht, dass INT 10h, Funktion 0Eh (TTY write character) nur im Grafikmodus funktioniert: Die komplette Bildschirmausgabe von DOS (zumindest ohne ANSI.SYS) wird über INT 10h, Funktion 0Eh erledigt. Wenn Du einen DOS-Prompt siehst, ist das Beweis genug, dass INT 10h, Funktion 0Eh funktioniert.

Mit PCI-Grafikkarten hast Du keine Chance mehr, ohne Shadowing zu arbeiten. ROM-Erweiterungen von PCI-Karten werden immer ins RAM kopiert, weil PCI-Karten gar nicht in der Lage sind, das ROM-Adressierung im 1MB-Speicherbereich einzublenden. Daher solltest Du auf Deinem K6-2/400 auf jeden Fall schon Shadowing haben, da alles außer PCI- oder gar AGP-Grafikkarten in dem Computer als "nicht artgerecht" anzusehen sind. Mit einer ISA-Grafikkarte ohne Shadowing ist dagegen zu erwarten, dass es scheckenlahm läuft, selbst wenn es eine der (durchaus zu Recht) hochgelobten ET4000-Karten ist.
mkarcher
LAN Manager
Beiträge: 204
Registriert: Fr 5. Jun 2020, 19:38

Re: Kleines Benchmark-Programm in Assembler - Werte gesucht

Beitrag von mkarcher »

Deine Zahl (unterer dreistelliger Bereich) deutet auf etwa 6000 Taktzyklen pro Zeichen hin. Dabei sind 3 INT10-Aufrufe enthalten. Die knapp 40 Assembler-Befehle aus der Schleife sollten gefühlt auf höchstens 40 Takte kommen, da es alles häufige Assembler-Befehle sind, und der K6 ja schon mehrere Ausführungseinheiten hat. Was aber richtig teuer ist, sind INT10-Aufrufe, sofern der Prozessor im VM86 ist, also Du in der DOS-Box von Windows 95 bist, oder EMM386 geladen ist.

Sofern der Speichermanager keine Untersützung für die Pentium-VM86-Extensions hat (von denen ich nicht mal weiß, ob sie vom K6 unterstützt werden), springt INT10 aus Deinem Assembler-Programm erst mal in den Speichermanager im Protected Mode, der dann zurück in den virtuellen Modus schalten muss, um den Code des Grafikkarten-BIOS auszuführen. Der Rücksprung aus dem BIOS geht vermutlich dann aber ohne Umweg durch den Speichermanager.

Und besonders langsam wird die Kiste, wenn sie in einem DOS-Fenster von Windows 95 ausgeführt wird, weil dann auch die Zugriffe des Grafikkartenbios auf die Harfware-Register des Grafikchips abgefangen werden müssen, damit Windows den virtuellen Cursor an die richtige Stelle positionieren kann. Probiere das Benchmark-Programm am besten mal mit einem Start "abgesichert, nur Eingabeaufforderung".
DerPeter
MemMaker-Benutzer
Beiträge: 87
Registriert: Mi 8. Jan 2014, 22:20
Kontaktdaten:

Re: Kleines Benchmark-Programm in Assembler - Werte gesucht

Beitrag von DerPeter »

So, und was soll mir das alles sagen ?
Egal wie man es dreht, es wird die Ausführungszeit sowohl des Programms, als auch der mehrfachen Aufrufe der INT 10h Funktion gemessen. Und nein, Funktion 0Eh funktioniert definitiv NUR im Graphik-Modus, zumindest bei CGA, EGA und VGA Karten. Ob das bei Hercules-Karten anders ist, weiß ich nicht. Ich nutze *kein* ANSI.SYS, und setze das natürlich auch nicht voraus. Ich habe das auch nicht mit geladenem ANSI Treiber probiert - warum auch ?
Der AMD K6-2/400 steckt in einem Soyo SY-5EAS5 Board drin. Da ist die Option für's Shadowing gesetzt. Allerdings ist keine ISA ET4000 drin, sondern eine PCI ATi Xpert 98 (MACH64) Karte.

Mir geht es hier im ersten Posting nicht um eine philosophische Betrachtung des Benchmarking-Problems.
Ich wollte eigentlich nur ein paar Werte REALER Systeme unter MS-DOS dazu einsammeln. Keine DOSBOX-Werte, kein VMware oder VirtualBox Werte. Mit Shadowing und ohne Shadowing Option im BIOS meinetwegen. Da würde ich mich auch ordentlich im Voraus dafür bedanken.
Benutzeravatar
schubl
CONFIG.SYS-Autor
Beiträge: 271
Registriert: So 17. Mär 2019, 19:14

Re: Kleines Benchmark-Programm in Assembler - Werte gesucht

Beitrag von schubl »

Ich hab den Benchmark mal auf einem meiner Rechner laufen lassen...
- Gigabyte GA-586HX
- Pentium MMX 233
- 64 MB RAM - 512KB Cache
- Matrox Mystique 4MB PCI

Shadowing im BIOS macht (bei mir) keinen Unterschied, ist beide Male gleich schnell...
Einen riesen Unterschied macht die Speicherkonfiguration, jeweils mehrmals laufen lassen...
Nur konventioneller Speicher: 957
Nur himem.sys geladen: 961
himem.sys und emm386: 215
Bei emm386 ist egal, ob mit der Option RAM oder NOEMS...

EDIT: Diese Werte bekam ich mit meiner Standardconfig, wo auch Maustreiber und Doskey usw geladen werden...
Wenn ich die Boot-Dateien komplett umgehe, somit auch kein Maustreiber oder Doskey geladen sind, kommt der P-MMX233 auf 1007 loops...

Schnell mal noch einen anderen Rechner aus dem Keller geholt:
- Acer 1125E
- 386DX 25
- 8MB RAM
- ET4000 ISA 1MB

Hier ist ein signifikanter Unterschied zwischen shadow-RAM ein oder aus festzustellen...
Und die selbe Verlangsamung durch emm386...

Code: Alles auswählen

shadow 	on	off
conv	50	6
himem	50	6
emm386	15	5
schubl
Zuletzt geändert von schubl am Fr 19. Feb 2021, 15:24, insgesamt 1-mal geändert.
Soviel Retro und nur sowenig Zeit... laufender WIP...
8086, 286, 386, 486, P1, P2, P3, P4 und dann noch Amiga, Atari, C64/128,...
DerPeter
MemMaker-Benutzer
Beiträge: 87
Registriert: Mi 8. Jan 2014, 22:20
Kontaktdaten:

Re: Kleines Benchmark-Programm in Assembler - Werte gesucht

Beitrag von DerPeter »

Vielen Dank für die Werte !
Wie bereits von mkarcher geschrieben, habe ich inzwischen auch einen großen Unterschied gesehen, wenn EMM386 geladen ist, oder nicht. Prüfe gerade ob man den für die Zeit der Messung nicht abschalten kann.
Benutzeravatar
schubl
CONFIG.SYS-Autor
Beiträge: 271
Registriert: So 17. Mär 2019, 19:14

Re: Kleines Benchmark-Programm in Assembler - Werte gesucht

Beitrag von schubl »

Und weil ich so in Fahrt min, gleich noch ein dritter hinterher:
- Compaq ProLinea 4/66
- 486DX2 66
- 40MB RAM
- ET4000W32 VLB

Hier kann ich wegen dem Compaq-BIOS leider shadow nicht aus- und einschalten
conv 83
xms 83
ems 55

schubl
Soviel Retro und nur sowenig Zeit... laufender WIP...
8086, 286, 386, 486, P1, P2, P3, P4 und dann noch Amiga, Atari, C64/128,...
Antworten