Jesterfox schrieb:
Dann solltest du dieses Wissen mal nachholen, den FX gibt's ja nicht erst seit gestern. Ein Modul hat 2 Kerne die sich nur ein paar externe Komponenten teilen (es sind sogar 2 FPUs die nur für die 256Bit bBefehle zu einer kombiniert werden)
Ganz klares "Nein". Das ist schlichtweg falsch. Folgendes ist Tatsache und zahlreich nachlesbar:
Das BD-"Kern"-Design ist nicht "komplett bis auf ein paar Einheiten". Das Gegenteil ist der Fall. Es ist alles bis auf ein paar Einheiten nur einfach vorhanden. Ein AMD Modul ist auch nur ~12% größer (Fläche), als es das selbe Modul ohne "zweiten Kern" wäre und allein daran erkennt man schon, dass "teilen sich nur ein Bisschen" falsch sein muss. Das macht nämlich 88% eines "tatsächlichen Kerns" die dann geteilt werden müssen.
Ein AMD-"Kern" hat keinen eigenen L1-Instruction-Cache. Ein Intel-Kern schon.
Ein AMD-"Kern" hat keinen eigenen L2-Cache. Ein Intel-Kern schon.
Ein AMD-"Kern" hat keine eigenen Einheiten zum holen (fetchen) und decodieren von Instruktionen. Ein Intel-Kern schon.
Ein AMD-"Kern" hat nur eine 128-bit-FPU. Ein Intel-Kern kann 256-bit-FP rechnen.
Und am wichtigsten:
Das (einzige), was tatsächlich zwei mal pro Modul vorhanden ist, ist der Integer-Cluster. Dieser besteht aus kleinen Recheneinheiten, die bestimmte Aufgaben rechnen können. Entscheidend!: Anzahl, Art und Aufteilung dieser Einheiten in einem Cluster sind auch Faktoren, die nicht fix sind. Ein Intel-Integer-Cluster ist viel, sehr viel komplexer als einer von AMD. AMD hat halt seine Integereinheiten nur in zwei Cluster geteilt, die sie Threads zuordnen. Intel hat das pro Kern in einem Integer-Cluster realisiert (tatsächlich sitzt da auch FPU mit drin, also ein Mixed-Cluster). Das heißt aber noch nicht einmal, dass AMD insgesamt mehr Integer-Einheiten hat. Das heißt noch nicht einmal, dass AMD die besser parallel nutzen kann. Denn Instruktionen können auch auf einem Kern parallel berechnet werden. Das nennt sich ILP (Instruction-Level-Parallelism) und ist alles andere als neu.
Intel Haswell hat z.B. an seinem "Cluster" 8 Ports. An 4 davon können parallel ALU-Operationen ausgeführt werden. Ein AMD-Modul hat auch nur 2 ALUs pro "Kern" und damit 4 pro Modul. Ist nix mit mehr Einheiten, ist auch nix mit "gleichzeitiger"...
Wie man nun sieht, gibt es da zwischen einem einem Intel-Kern und einem AMD-Modul weniger Unterschiede, als zwischen einem AMD-"Kern" und einem Intel-Kern.
Daher ist es schon irgendwo problematisch, da die Bezeichnung Kern für beide eine Gleichheit suggeriert, die nicht vorhanden ist. Wenn man dann, dass 8 AMD-"Kerne" in irgendeiner Form irgend etwas "mehr" bzw. "mehr gleichzeitig" können als ein 4-Kerne von Intel, dann ist das einfach falsch, wird aber schon so suggeriert. Denn es ist nicht mehr als eine (nicht einmal vorteilhaft) veränderte Anordnung der Einheiten.
Das hat wie erwähnt nicht einmal Vorteile. Denn es sorgt nur dafür, dass man für volle Leistung 2 Threads
braucht, während bei Intel auch ein Thread die volle Leistung eines Kerns abgerufen werden kann, weil eben nicht die Hälfte der Integer-Einheiten brach liegt, wenn nur ein Thread läuft.
Das Design bewirkt lediglich eines: einen zweiten logischen Kern. Den hat man aber auch schon mit HT (was aber praktisch nur ein weiterer Registersatz ist) sowie jedem Multithreading-Ansatz.
Interessante Frage: Wenn ich also nun einen Haswell mit HT nehme und ihm sage, dass die eine Hälfte seiner Integer-Einheiten nur den einen Registersatz benutzen darf und die andere eben den anderen Registersatz, habe ich praktisch das selbe bewirkt, wie in einem AMD-Modul. Hier bin ich mir nicht sicher, aber vielleicht könnte man solch ein Verhalten schon durch einen "dummen" Compiler oder Mikrocode erzielen. Hätte ich den Intel dann zu einem 8-Kerner gehackt?