Dir ist aber schon klar, dass der Compiler den Quellcode übersetzt und die Executable erstellt (Linker)?
Klar. Was ich meinte ist, dass es ne Zeit dauert, bis sich neue Compiler verbreiten und überhaupt benützt werden. Bei nem Mini-"Witz" Freizeitprogramm könnte man vielleicht doch gemacht haben, aber da spricht nichts dafür.
1995 erschien Watcom 10.5. Warum soll der noch keine Pentium Pro Optimierungen gehabt haben? Aber wie gesagt, ohne Compiler (Version) und konkreten Flags bringt uns das Rätselraten nicht weiter.
Weil es - im Gegensatz zur Pentium Optimierung bei 9.5 - nicht in der Featureliste erwähnt wird:
Watcom C 9.5/386
- C++ compiler added
- Pentium optimizations
- Windows NT host and target support
[
edit]
Watcom C/C++ 10.0
- 16-bit and 32-bit tools merged into single package
- Graphical IDE for Windows and OS/2
- Redesigned debugger
- C++ class browser added
- Precompiled header support
- Windows resource editors added
- MFC included
[
edit]
Watcom C/C++ 10.5
- Windows 95 and NT 3.5 support
- Native C++ exception handling on OS/2 and Win32
- TCP/IP remote debugging
History - Open Watcom
Aber nur bis zu einem gewissen Grad. Wenn man alles im Prozessor neu ordnen könnte, so wie man es braucht, warum gibt es bei Compilern überhaupt noch Optimierungsflags für Mikroarchitekturen?
Ja ok, das meinte ich mit der Tiefe, gibt ja keine grenzenlosen Reservation Stations bei OoO. Also meinst Du, dass die aktuellen Puffer nicht tief genug sind, um schlechten InO Code "richtig" zu ordnen. Hmm, wäre mal interessant das auszutesten, gibt bei den Intel Compilern ja jetzt auch Atom als Targetplattform, wäre interessant, wie unterschiedlich das am Ende zu nem normalen SSE3 Compilat wäre.
Nee, K8/K10 hat einen Scheduler für FP und jeweils einen Scheduler für jede Int Pipe. Also 4 Scheduler für einen Kern insgesamt. Intel hat lediglich einen Scheduler für alles.
Aaah, Du meinst die 3 INT Scheduler, sags doch gleich
Beispiel, in jedem Takt kommen 50% Int, 50% FP MicroOps. Was macht der Intel Scheduler? Er schickt die MicroOps an die EUs, so wie sie am besten passen. Int und FP EUs befinden sich ja teils an den selben Ports. Was machen die AMD Scheduler hingegen? 50% der MicroOps (Int) müssen von 6 EUs verarbeitet werden (3x ALU/AGU), während die anderen 50% der MicroOps (FP) von lediglich 3 EUs verarbeitet werden müssen (FADD/FMUL/FMISC). Oder etwas überspitzt formuliert, während die FP EUs schwitzen, drehen die Int EUs Däumchen. Du kannst das Beispiel natürlich auch umdrehen, indem du 90% Int und 10% FP MicroOps nimmst. Wie auch immer. Im Grunde ist die AMD Lösung "sauberer". So ermöglicht sie auch das CMT Design bei Bulldozer mit einer geteilten FPU und separaten Integer Clustern. Nur benötigt sie eben auch mehr Optimierungsarbeit.
Ok, verstanden was Du meinst. Pro AMD kann man noch anmerken, dass die 3 FP Scheduler pro Lane mehr Einträge haben, als die INT, und INT+FP zusammen mehr Einträge haben als Intel. Aber das nützt halt nicht, da AMD damit bei FP pro Lane nur max 14 Befehle umsortieren kann, Intel dagegen 36 (Nehalem) bzw. jetzt 54 (Sandy). Wie man sieht klotzt Intel da bei Sandy richtig ran, und AMD steht beim Bulldozer mit 40INT(pro Cluster)+60FP auch nicht hinten dran. Schon interessant, wie sich das Ganze entwickelt. Da macht AMD nen großen Schritt zu mehr OoO Fähigkeit.
Ja, dann geht es hier wirklich nur um Sprungvorhersage. Wie gesagt, das könnte bei Super Pi schon eher eine Rolle spielen als der Loop Stream Detector.
Hm, ja aber was sagst Du dann zum mäßigen Dothan Ergebnis? Ist ja nicht soo der Bringer.
Lustig ist, Intel schreibt, dass es den Loop Detector seit dem P6 gibt.
Echt, wo ? Kann mich noch daran erinnern, das D.Kanter auch gemeint hat, dass Intel das erst seit den P-Ms hat.
Fragt sich nur, was später verbessert wurde. Von Pentium-M zu Core (Yonah) gab es scheinbar einen ordentlichen Sprung in Super Pi.
Hm, aber wieso ? Dachte erst, dass sich da nicht viel tuen würde,
Yonah ist doch nur ein dual Dothan in 65nm mit unified Cache. Aber SuperPi legt da wirklich gut zu. Hab hier praktischerweise nen Dothan <> Yonah Test gefunden:
[M] Battle of the Mobile CPUs: Core Duo vs Pentium M
Was passiert da bloß .. strange, selbst die Cachegröße ist gleich.
Edit:
Yonah ist doch mehr als 2xDothan, Insgesamt ist wohl "Intel's Digital Media Boost" daran schuld ... nur blöd das man nicht soviele Details findet, hier 2:
Intel stattet Yonah mit der "Digital Media Boost" getauften Technologie aus. Dabei erweitert der Hersteller die MicroOps-Fusion des Pentium M auf die SSE2-Instruktionen. Die MicroOps-Fusion-Technologie analysiert die Instruktionen des Programmablaufs. Wenn sich mehrere Operationen zusammenfassen lassen, werden sie zu einem neuen Befehl verschmolzen. Yonah nutzt für die SSE2-Instruktionen zudem alle drei Decoder-Einheiten.
Zusätzlich erhält Yonah zehn SSE3-Befehle: fünf für komplexe Arithmetik, einen für Video-Encoding und vier für grafiklastige Operationen. Die Floating-Point-Performance verbessert Intel außerdem durch ein erweitertes Data Prefetching und zusätzliche Write Output Buffers.
http://www.tecchannel.de/pc_mobile/...ino_2006_dual_core_fuer_notebooks/index6.html
Er bietet im Vergleich zu Dothan nicht nur einen zweiten Kern, sondern auch etliche Architekturverbesserungen. So wurde die SSE/SSE2-Einheit beschleunigt, ebenso die FPU und die Division per IDIV-Befehl. Die Dekoder sind deutlich schneller geworden, die Mikrooperationen mächtiger und SSE3 sowie Virtualisierung (VT) sind hinzugekommen. Einige dieser Verbesserungen fasst Intel unter dem Namen "Digital Media Boost" zusammen. 64-Bit-Unterstützung (EM64T) hat der Prozessor indes noch nicht, das bleibt seinem Nachfolger Merom vorbehalten.
http://www.heise.de/newsticker/meldung/IDF-Vor-Merom-kommen-Yonah-und-Sossaman-125154.html
Hat der SuperPi Code vielleicht IDIV Befehle dabei ? Oder die "Write Output Buffers" ? Was auch immer das ist ^^
[/Edit]
Noch was zu dem Thema, Sandy hat auch *keinen* Loop Detector:
3.7 Branch prediction in Intel Sandy Bridge
The Sandy Bridge reverses the trend of ever more complicated branch prediction algorithms
by not having a separate predictor for loops. The redesign of the branch prediction
mechanism has probably been necessary in order to handle the new µop cache (see page
95 below). A further reason for the simplification may be a desire to reduce the pipeline
length and thereby the misprediction penalty.
Und Core2 und PentiumM angeblich den gleichen Predictor(mit LoopDet):
3.5 Branch prediction in PM and Core2
The branch prediction mechanism is the same in PM and Core2.
http://www.agner.org/optimize/microarchitecture.pdf
Also irgendwie ist der Schlüssel zu SuperPi wohl wirklich der Unterschied zw. Dothan und Yonah, und der Loop Detector kanns wher nicht sein. Vielleicht haben sie beiM Yonah die reservation stations aufgebohrt, wie kürzlich bei Sandy? Mal googlen... auf alle Fälle ein interessanter Fall.
Nee,
Bobcat soll bei ~48 Sekunden (1M) liegen. Woher die hohen Werte kommen? Vielleicht wieder irgendwelche verkrüppelten Samples? Etwas weniger als 50 Sekunden für 1,6 GHz ist jedenfalls ziemlich gut. Das ist vergleichbare Taktperformance zu meinem X2 240. Sicherlich bremst die halbierte FPU bei Bobcat nicht, ist ja eh nur x87. Dennoch, für ein so kompaktes 2-fach OoO Design, mit einem Speicherdurchsatz der knapp über der Grasnarbe liegt, beachtlich. Da hat man intern offenbar ordentlich optimiert. Das lässt für Bulldozer hoffen.
Lol, merke: Nächstes Mal wenigstens nen 2ten Googletreffer auswerten ^^
50s sind ganz ok, stimmt. Da scheint der neue, "genetische" Branch Predictor ganz gut zu sein(bin mit bei dem "genetic" nicht mehr sicher, irgedwas mit "g" war es. Auf alle Fälle soll das Teil für die DIE Größe Spitzenwerte liefern, ein AMD Entwickler wurde irgendwo sehr stolz zitiert. Und/oder der unified INT(16entries) bzw. unified FP Scheduler(18e) ist der "Schuldige" ;-)
Ist zwar 'ne schöne Theorie, halte ich aber nicht für sonderlich wahrscheinlich. In der Vergangenheit hat dieser Test auch schon mal Nullnummern angezeigt, weil er bestimmte Prozessoren noch nicht kannte. Ich sehe momentan eigentlich nur zwei Probleme, Fakes und falsch berechneter Takt (Multi).
Hm ok, aber trotzdem könnte es noch ein Hardwaredefekt sein. Wieso sollte das Programm eigentlich 0 Nummern anzeigen, was messen die da? Mehr als ein paar MOVs oder sonstige Speicheroperationen wirds doch nicht sein, wie kann man da auf 0er Ergebnisse kommen, strange ...
ciao
Alex
P.S:
Hier noch ein 3GHz Yonah SPi Run, passend zum vorherigen Dothan:
http://www.abload.de/img/fileem90.jpg
19sec. also 5 sec. besser als Dothan.
Und dazu passend noch ein Conroe Run@3 Ghz:
http://imageshack.us/photo/my-images/291/superpic2d3ghzvu9.jpg/
17s. nur 2 Sec. mehr, das kann auf Konto der +2MB Cache gehen.