Pentium-Maskerade

Leider scheiterte der Versuch, per Software Unterschiede zwischen mobilem und Desktop-Pentium festzustellen -- als Nebeneffekt entlarvten sich aber einige interessante Merkwürdigkeiten der verschiedenen Pentium-Masken.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 4 Min.
Von
  • Andreas Stiller

Weder mit CPUID, noch über den APIC (Advanced Interrupt Controller) oder mit Hilfe der MSRs (maschinenspezifische Register) ist es mir gelungen, einen Notebook-Prozessor zu identifizieren - schade, gerade die Notebook-Käufer wüßten doch gern, ob ein echter Notebook-Prozessor mit 2,5-V-Kernspannung im schwer zugänglichen Gehäuse rackert oder ein vergleichsweise stromhungriger Desktop-Prozessor mit 2,8-V-Kernspannung. Beide tragen unglücklicherweise die gleiche, per CPUID auslesbare Stepping-Nummer.

Um mehr über die Pentium-Innereien zu erfahren, kann man die sogenannten maschinenspezifischen Register (MSR) des Pentium durchsuchen. Hier sind allerhand Feinheiten der Architektur des Prozessors niedergelegt. Inzwischen sind die MSRs auch offiziell dokumentiert, wenn auch zum Teil sehr dürftig. Früher war ihre Beschreibung gar Bestandteil eines ominösen Appendix-H, ein Zusatz zum Datenbuch, den nur Auserwählte zu Gesicht bekamen. Über MSR 0Eh kann man beispielsweise die zweite Pipeline oder die Sprungvorhersage des Pentium-Prozessors abschalten.

Auskunft darüber, was der Prozessor tatsächlich macht, geben andere MSRs: die Pentium-Performance-Register. Hierüber kann man feststellen, wie viele Instruktionen der Prozessor ausgeführt hat, wie oft er Treffer im L1-Cache landete, wie viele Sprünge er richtig oder falsch vorhersagte, wie oft die zweite Pipeline zum Einsatz kam und vieles mehr. Unser Testprogramm CPUp.exe gibt CPU-Typ, -Maske, -Eigenschaften und -Takt aus und `monitort´ folgende harmlose kleine Schleife:

@loop:
mov ax,dx
mov bx,cx
dec edx
jnz @loop

Die beiden Mov-Befehle sind voneinander unabhängig, so daß sie problemlos parallel ausführbar sind, gleiches gilt für die letzten beiden Befehle. So erhält man beim Pentium die zu erwartende Ausführungszeit für die Schleife von drei Takten (pro Befehl 0,5 Takte + 1 Takt für den Sprung). Schaltet man die zweite Pipeline ab, benötigt jeder Befehl einen Takt, man erhält also insgesamt fünf Takte. Ohne Sprungvorhersage verlängert sich die Ausführungszeit jeweils um vier Takte, da der Pentium-Prozessor fälschlicherweise davon ausgeht, daß der Sprung nicht stattfindet.

Mit überraschenden Ergebnissen wartet jedoch der Pentium-MMX auf. Neben den MMX-Befehlen hat der Pentium-Nachfolger auch einen neuen Cache zu bieten, der nicht nur größer, sondern auch besser organsiert ist. Das zeigt sich beispielsweise, wenn man mit unserem Cache-Meßprogramm (aktuelle Version 1.6k in der c't-Mailbox) mit der Option /Scan über verschiedene Adressen mittelt. Während der Pentium dabei gegenüber dem optimalen Fall (ohne Verschiebung) ganz erheblich einbricht, zeigt sich der MMX-Kollege nahezu unbeeindruckt von der jeweiligen Adreßlage der Speicherblöcke. Das ist soweit ganz gut, doch mit der ebenfalls geänderten Sprungverzweigeeinheit und der verlängerten Pipeline scheint´s manchmal noch etwas zu hapern.

Zunächst einmal ist es ziemlich verwunderlich, daß die MMX-Version mit der höheren Stepping-Nummer 4 (Maske xA3) älter ist als Stepping 3 (Maske xB1). Die Step-4-Version führt im Unterschied zum Pentium nur die ersten beiden Befehle parallel aus. Sie braucht für die Schleife aber nicht nur vier, sondern gleich fünf Takte - wohl wegen der längeren Pipeline. Der Pentium-MMX ist dann bei dieser Schleife also gut 66 Prozent langsamer als sein Vorgänger. Konkurrent Cyrix 6x86MX hängt mit nur zwei Takten beide locker ab.

Etwas besser sieht die Sache beim MMX-Stepping 3 aus. Wie das Performance-Monitoring zweifelsfrei ermittelt, vermag er genauso wie der alte Pentium je zwei Befehle parallel auszuführen. Trotzdem braucht er mindestens vier Takte - übrigens auch dann, wenn man die v-Pipeline abschaltet. Step 3 ist hier also 20 Prozent schneller als Pentium-MMX Step 4. Und so wundert es nicht, daß Benchmarkprogramme aus kleinen Schleifen, etwa Norton SI ebenfalls weit auseinanderliegen (568 gegenüber 418 bei 166 MHz). Merkwürdig nur, daß sich bei den von Intel veröffentlichten `Pentium Specification Update´ (developer.intel.com/design/pentium/specupdt oder übersichtlicher in www.sandpile.org) kein Wort zu diesen Maskenunterschieden finden läßt. Immerhin findet man hier die Auflistung (fast) aller verschiedenen S-Nummern und Maskentypen.

Wie sich die MMX-Maskenunterschiede auf reale Applikationen auswirken (etwa beim BAPCo-Benchmark), konnten wir kurz vor Redaktionsschluß leider nicht mehr klären, das holen wir in der nächsten Ausgabe nach. (as) (as)