Entscheidungsfaktor Hardware

Die Hardware-Sensitivitätsanalyse ist genau das richtige Instrument, um einzuschätzen, wie stark sich historische DOS-Engines und dedizierte Schachrechner bei unterschiedlicher CPU-Leistung wirklich verhalten. Eine präzise, reproduzierbare Textanalyse mit:

  • einer einfachen, transparenten Mathematik (Formel) zur Abschätzung von Elo-Änderungen bei veränderter CPU-Taktfrequenz,
  • empfohlenen Parametern (drei „Scaling-Raten“: konservativ / typisch / aggressiv),
  • konkreten Beispielen für die hier genannten Engines/Device-Typen bei typischen CPU-Punkten (486/66, P90, P133, P233, P333, K6/450),
  • einer Diskussion der Nichtlinearitäten und weiterer Einflussfaktoren (Speicher/Cache, Hash, Tabellendaten, Architektur, Compiler/ASM), und
  • einer kurzen Praxisanleitung, die Abschätzung für andere Kombinationen selbst anzuwenden

Grundmodell — wie Elo von CPU-Takt abhängt

Viele historische Messreihen zeigen: Elo wächst (nicht linear) mit der Rechenleistung. Ein einfaches, gut brauchbares Modell ist die logarithmische Skalierung (Verdopplung der CPU gibt ungefähr konstanten Elo-Zuwachs):

  • (\text{Elo}{\text{ref}}) = bekannte (Referenz-)Elo auf (\text{clock}{\text{ref}}).
  • (\text{clock}) in MHz (oder beliebiger Einheit — wichtig ist das Verhältnis).
  • (k) = Elo-Gewinn pro Verdopplung (einstellbar; hängt vom Engine-Typ / Alter / Suchalgorithmus ab).

Warum diese Form?

  • Bei α–β/iterative-deepening-Engines führt mehr Geschwindigkeit typischerweise zu größerer Suchtiefe, und Suchtiefe wächst ungefähr mit dem Logarithmus des Knotenausstoßes; dadurch ist die Elo-Zunahme pro Verdopplung ungefähr konstant (bis zu den Grenzen des Algorithmus).

Empfohlene Werte für (k) (Elo pro Doubling)

Anhand historischer Beobachtungen (SSDF/CCRL/Retro-Messungen) und Praxiserfahrung drei typische Szenarien zu empfehlen:

  • Konservativ: (k \approx 35) Elo / Doubling — für sehr gut skalierende, bereits optimierte Engines (z. B. stark in Assembler oder mit effizienten caches).
  • Typisch: (k \approx 50) Elo / Doubling — Faustwert für viele gut geschriebene DOS-Engines der 90er.
  • Aggressiv: (k \approx 65) Elo / Doubling — für einfache, taktikorientierte Engines bzw. hardware-simple Programme, die stark von Takt profitieren (oder für kleine Schachcomputer, bei denen jede Verdopplung drastisch die Knotenzahl erhöht).

Hinweis: Für herkömmliche Schachcomputer (z. B. 8-Bit-Designs wie MM II) kann (k) deutlich größer ausfallen (bei Verdopplung von 3.7→7.4 MHz haben historische Messungen z. B. ~+100 Elo gezeigt). Für moderne multi-core Engines ist die Skalierung komplizierter (mehrere Kerne, Hash-Synchronisation, diminishing returns).

Konkrete Beispiele (mit (k=50) als Standard)

Angewendet wird die Referenz-Elo und Referenz-Takte, die zuvor verwendet wurde:

  • Nimzo 3.5: Referenz (= 2301) Elo bei Pentium-90 (90 MHz).
  • Hiarcs 3: Referenz (= 2276) Elo bei Pentium-90.
  • Rebel 10: Referenz (= 2550) Elo bei Pentium-II-333 (333 MHz).
  • ChessTiger 12: Referenz (= 2601) Elo bei K6-2 450 MHz (450 MHz).
  • Mephisto MM II (Schachcomputer): bekannte Messwerte: ≈1800 Elo bei 3,7 MHz und ≈1900 Elo bei 7,4 MHz (d.h. eine Verdopplung brachte hier ~+100 Elo).

Berechnet wird exemplarisch für fünf Zieltakte (in MHz): 66, 90, 133, 333, 450. (Rechenschritte sind unten transparent angegeben.)

Formel angewendet: (\Delta = k \cdot \log_2(\text{target}/\text{ref})) und (\text{Elo}{\text{target}}=\text{Elo}{\text{ref}}+\Delta).

A) Nimzo 3.5 (Ref 90 MHz → 2301 Elo)

  • target 66 MHz: ratio = 66/90 = 0.7333; (\log_2) ≈ −0.447 → Δ ≈ −22.4 → ≈ 2279 Elo
  • target 90 MHz: 2301 Elo (Referenz)
  • target 133 MHz: ratio ≈ 1.478; (\log_2) ≈ 0.563 → Δ ≈ +28.2 → ≈ 2329 Elo
  • target 333 MHz: ratio ≈ 3.700; (\log_2) ≈ 1.888 → Δ ≈ +94.4 → ≈ 2395 Elo
  • target 450 MHz: ratio =5.0; (\log_2) ≈ 2.322 → Δ ≈ +116.1 → ≈ 2417 Elo

B) Hiarcs 3 (Ref 90 MHz → 2276 Elo)

  • 66 MHz: ≈2254 Elo
  • 90 MHz: 2276 Elo (Ref)
  • 133 MHz: ≈2304 Elo
  • 333 MHz: ≈2370 Elo
  • 450 MHz: ≈2392 Elo

(Die Zahlen parallel zu Nimzo, aber ~25 Elo tiefer wegen anderem Referenzwert.)

C) Rebel 10 (Ref 333 MHz → 2550 Elo)

  • 66 MHz (sehr langsame Maschine): ratio = 66/333 ≈ 0.198; (\log_2) ≈ −2.333 → Δ ≈ −116.6 → ≈ 2433 Elo
  • 90 MHz: ratio ≈ 0.270 → (\log_2) ≈ −1.885 → Δ ≈ −94.3 → ≈ 2456 Elo
  • 133 MHz: ratio ≈ 0.399 → (\log_2) ≈ −1.327 → Δ ≈ −66.3 → ≈ 2484 Elo
  • 333 MHz: 2550 Elo (Ref)
  • 450 MHz: ratio ≈ 1.351 → (\log_2) ≈ 0.435 → Δ ≈ +21.7 → ≈ 2572 Elo

D) ChessTiger 12 (Ref 450 MHz → 2601 Elo)

  • 66 MHz: ratio ≈ 0.1467; (\log_2) ≈ −2.773 → Δ ≈ −138.7 → ≈ 2462 Elo
  • 90 MHz: ratio 0.200 → (\log_2) ≈ −2.322 → Δ ≈ −116.1 → ≈ 2485 Elo
  • 133 MHz: ratio ≈ 0.296 → (\log_2) ≈ −1.761 → Δ ≈ −88.0 → ≈ 2513 Elo
  • 333 MHz: ratio ≈ 0.740 → (\log_2) ≈ −0.435 → Δ ≈ −21.7 → ≈ 2579 Elo
  • 450 MHz: 2601 Elo (Ref)

E) Mephisto MM II (dediziertes Gerät; zwei reale Messpunkte)

  • 3.7 MHz → ≈1800 Elo (historisch gemessen)
  • 7.4 MHz → ≈1900 Elo (historisch gemessen)
    Das bedeutet: eine Verdopplung (3.7→7.4) brachte hier ~+100 Elo, also (k_{\text{MMII}} \approx 100). Bei sehr einfachen / stark taktikorientierten Engines / festverdrahteten Schachcomputern ist (k) in der Tat viel höher als bei komplexen x86-Programmen, weil jede zusätzliche Rechenpower die Suchtiefe dramatischer erhöht.

Was die Zahlen praktisch aussagen (Interpretation)

  • Grobregel: Ein Pentium-II (333 MHz) erzielt für viele gut optimierte DOS-Engines deutlich höhere Elo-Werte als die alte 486er/P90-Plattform. Beispiel: Nimzo 3.5 steigt von ~2300 (P90) auf ~2395 Elo (P2-333) bei (k=50). Das kann eine Änderung von „gegen CM knapp chancenlos“ zu „gegen CM konkurrenzfähig“ bedeuten.
  • Hardware-abhängige Spitzenwerte (z. B. ChessTiger12 bei K6-450 mit >2600) sind realistisch — aber auf schwächerer Hardware (P2-333) sinkt diese Zahl spürbar (beispielsweise ~2580 Elo).
  • Für dedizierte Schachcomputer (Mephisto MM II) gilt: schon kleine Taktsteigerungen können große Elo-Sprünge bewirken (hier +100 Elo pro Verdopplung beobachtet), weil die Engines sehr „rechenabhängig“ sind.

Wichtige Nichtlinearitäten & zusätzliche Einflussfaktoren (warum einfache Takt- → Elo-Modelle limitiert sind)

Die oben gezeigte Skalierung ist eine nützliche Näherung, aber reale Messungen weichen ab, weil:

  1. Prozessorarchitektur unterscheidet stark: ein 450-MHz K6-2 kann in Schach-Loops anders performen als ein 450-MHz Pentium. Manche Engines sind in Assembler für 486/Pentium feinoptimiert; portierte C-Versionen profitieren anders.
  2. Cache / Pipeline / Memory-Bandbreite: hohe Takte nützen nur, wenn der Cache/Memory-Subsystem mithält. Moderne Out-of-order-CPUs gewinnen mehr aus Rechenparallellität als reine Taktzahl.
  3. Compiler & Assembler-Optimierung: einige DOS-Engines waren in handoptimiertem Assembler (bessere Knotenausbeute / MHz). Bei Umstellungen auf andere CPUs ohne erneute Optimierung verliert man / gewinnt man.
  4. Hash-Size / RAM: größere Hash-Tables können die Effektivität bei Multi-PV und Wiederverwendung stark erhöhen. Hardware mit viel RAM erlaubt große Hashes; DOS-Systeme hatten oft Limitierungen (EMS/XMS).
  5. Endspieltabellen (EGTB): Einsatz von Tablebases verändert Endspiel-Elo dramatisch (vor allem gegen sehr starke Gegner). Historische Schachcomputer hatten meist keine (oder nur kleine) EGTB, moderne Engines profitieren stark davon.
  6. Parallel-Scaling (Multi-Core): Für Engines, die Mehrkern-Suche unterstützen, ist Skalierung nicht mehr eine reine Funktion der Taktfrequenz: Zunahme von Threads bringt ab einem Punkt immer kleinere Elo-Zuwächse (Kommunikations-Overhead, Shared Hash).
  7. Zeitkontrolle/Time-Management: einige Engines nutzen Mehrzeit sehr effizient — das heißt, Elo-Gewinn bei zusätzlicher CPU wird unter langen Kontrollen wirkungsvoller.

Praktische Faustregeln

  • Faustformel (schnelle Schätzung): Nutze obenstehende Formel mit (k=50) als Default. Das gibt in den meisten historischen Fällen eine brauchbare Näherung.
  • Wenn Engine in Assembler/auf einfachen Geräten: erhöhe (k) (z. B. 60–100), weil Verdopplung deutlicher „tiefer“ in die Suche reicht.
  • Für moderne multi-thread Engines: verwende kleinere effektive (k) für Takt (z. B. 20–40 pro Verdopplung einer einzelnen Kernfrequenz) — stattdessen berücksichtige Anzahl Kerne separat.
  • Wenn genaue Werte nötig sind: Nimm zwei bekannte Messpunkte (z. B. SSDF bei 90 MHz und 450 MHz) und kalibriere (k) aus diesen echten Messungen — das reduziert Fehler durch Architekturunterschiede.

Kurze Beispiele zur Anwendung

Angenommen: es gilt zu wissen, wie stark Hiarcs 3 auf einem P2-333 läuft, wenn Referenz ist P90→2276:

  1. ratio = 333/90 = 3.7
  2. log2(3.7) ≈ 1.888
  3. Δ ≈ 50 * 1.888 ≈ +94.4
  4. Elo ≈ 2276 + 94.4 ≈ ≈2370 Elo.

Wenn konservativ gerechnet wird (k=35), dann Δ≈65.6 → Elo≈2341 (also Spanne ~2340–2370, je nach k).

Ergebnis aus der Sensitivitätsanalyse

  • Elo ist sehr sensitiv zur verfügbaren Rechenleistung, aber nicht linear — Verdopplungen sind die sinnvolle Maßeinheit.
  • Für DOS-Engines der 90er bedeutet ein Sprung von P90 → P333 typischerweise ~80–120 Elo Gewinn (bei (k) in [40…60]). Das kann ein Programm vom „starken Klubspieler“ in die Nähe von CM/FM bringen.
  • Kleine, dedizierte Schachcomputer reagieren noch empfindlicher auf Taktänderungen; bereits moderate Overclocks können große Elo-Sprünge bringen.
  • Die Architektur, Speicher, Hash-Einsatz, Endspieltabellen und Compiler/ASM-Optimierung sind mindestens so wichtig wie die nackte Taktfrequenz — für genaue Vorhersagen müssen diese Faktoren mit einbezogen werden.