MountWalker schrieb:
Sind die Zugriffe bei x86 nicht mittlerweile auch randomisiert? Kann sein, dass ich das falsch verstanden habe, aber mir ist irgendwie so, dass das mal als Sicherheits-Feature eingeführt wurde.
Ja da hast du was falsch verstanden, ich rede von etwas anderem.
Wenn du einen Algorithmus hast der den Speicher sequentiell durchiteriert hast du kaum Cache-Misses, da der Hardware-Prefetcher den Speicher auf den du zugreifen willst schon vorher in den Cache holt.
Wenn du allerdings einen Algorithmus hast der randomisiert auf den Speicher zugreift, hast du bei sogut wie jedem Zugriff einen Cache-Miss und deine Performance fällt in den Keller.
Bei x86 gibt es Cache-Prefetch-Instruktionen, welche der CPU sagen "Bitte lad mir mal den Speicherbereich in den Cache".
Somit kannst du während ein Datum abgearbeitet wird, das nächste schon in den Cache laden und hat dann keinen Cache-Miss mehr.
MountWalker schrieb:
Naja, ich hab noch kein Prozessorbild gesehen, auf dem Caches mehr als die Hälfte eingenommen haben - auch bei Prozessoren ohne GPU on Die. Die GPU on Die ist wiederum für mich kein Grund, mehr Platz für Decoder zu erlauben, da die Decoder ja weder der GPU noch dem SIMD-Prozessor etwas bringen. Beim SoC spart man Strom, indem man mehr auf einem Die vereint, aber weil auch das alles nicht vom Decoder profitiert, sehe ich auch keinen Grund, hier mehr für den Decoder zu verbraten. In allgemeinen Artikeln zu Vergleichen von x86 mit anderen ISAs lese ich immer wieder gelegentlich (so viele Artikel gibts dazu ja nicht), dass bei Desktop- und Serverprozessoren der Decoder eine untergeordnete Rolle spiele, weil pro Decoder mehr Rehenleistung geschaffen worden wäre, wenn ich mir aber ansehe, dass die zwei Designs, die wirklich versucht hatten, weniger Decoder zu verwenden - Intel Pentium IV und AMD Bulldozer - mehr oder weniger Flops waren und das auch gerade aufgrund ihrer schlechten "Performance per Watt", dann zweifle ich schon an, dass der Decoder da eine untergeordnete Rolle spielt.
Hier das Bild einer Haswell-CPU:
Man kann sehr gut sehen wie groß GPU & L3-Cache im vgl. zu den CPU-Kernen sind. Und wenn man jetzt bedenkt, dass ein signifikanter Teil der einzelnen Kerne der L2-Cache ist, dann kann man sich vorstellen wie klein so ein Dekoder ist.
Wenn man da unbedingt etwas Flächen-mäßig optimieren will, dann versucht man die größeren Teile zu optimieren
Ich behaupte auch nicht, dass der Dekoder Performance-mäßig eine untergeordnete Rolle spielt, im Gegenteil, er ist essentiell für die x86-Architektur. Aber flächenmäßig spielt er definitv eine untergeordnete Rolle.
MountWalker schrieb:
P.S.
Wobei man eingestehen muss, dass Power auch keine Glanzleuchte in Sachen Performance per Watt ist, weil IBM seit drei Prozessorgenerationen als oberstes Designziel den Ansatz verflogt, auf Biegen und Brechen so viel Leistung wie möglich auf einen Prozessorsockel zu bringen, weil Softwarelizenzkosten nach der Anzahl der Prozessorsockel berechnet werden.
Performance/Sockel ist zwar eine schöne Sache, aber Performance/Kern ist wichtiger. Zweiteres bewirkt ersteres hat aber noch andere Vorteile. Zb. eine wesentlich leichtere und sinnvollere Implementation von häufig verwendeten Funktionen in Libraries.