AMD Zen - 14nm, 8 Kerne, 95W TDP & DDR4?

Jetzt haben wir das doppelt drin.
 
Eine kurze Frage zu Bulldozer und Zen: Bei einer Intel 2-Kern-CPU mit Hyperthreading hat man die logischen Kerne 0 bis 3. Die logischen Kerne 0 und 1 gehören zum ersten realen Kern, die logischen Kerne 2 und 3 zum zweiten realen Kern. Ich denke, da bin ich mir jetzt nicht ganz sicher, so ist es auch beim Atom. Hat man zwei unabhängige Programme, wäre es ideal, wenn eines auf dem logischen Kern 0 und 1 läuft, das zweite auf 2 und 3.
Wie sieht das beim Bulldozer aus und was ist dort für Zen geplant? Microsofts Windows bekommt das mit dem Aufteilen der Aufgaben ja leider nicht wirklich hin, so dass man da hin und wieder von Hand nachhelfen muss.
 
Die Core-Zuordnung Bulldozer-Windows hatte ich seinerzeit mit einem FX-8120 und Win7/64 getestet. Ergebnis: Sicher ist nur, das der BD-Core0 auch der Windows-Core0 ist (sog. Boot-Core). Die restliche Zuordnung wird bei jedem Rechner-Start neu "ausgewürfelt". Lässt sich z.B. mittels CPUID ermitteln (Stichwort: Initial APIC ID). Bestätigt wurden meine Tests durch AMDs PSCheck. Dort findet man unter File/Settings/CPU-Settings genau die mit CPUID ermittelten Zuordnungen. Also z.B.: Windows-Core3 (Task-Manager) ist nicht unbedingt BD-Core3, kann 1 bis 7 sein (bei 8 aktiven Cores).
ZEN werden wir sehen...
 
Die Core-Zuordnung Bulldozer-Windows hatte ich seinerzeit mit einem FX-8120 und Win7/64 getestet. Ergebnis: Sicher ist nur, das der BD-Core0 auch der Windows-Core0 ist (sog. Boot-Core). Die restliche Zuordnung wird bei jedem Rechner-Start neu "ausgewürfelt". Lässt sich z.B. mittels CPUID ermitteln (Stichwort: Initial APIC ID). Bestätigt wurden meine Tests durch AMDs PSCheck. Dort findet man unter File/Settings/CPU-Settings genau die mit CPUID ermittelten Zuordnungen. Also z.B.: Windows-Core3 (Task-Manager) ist nicht unbedingt BD-Core3, kann 1 bis 7 sein (bei 8 aktiven Cores).
ZEN werden wir sehen...

Helle, ich weiß nicht ob deine Antwort weiter hilft. Mal davon ab das die Fragestellung so nicht zu beantworten ist. Bulldozer hatte kein HT. Bei HT, dass das schnellere Abarbeiten eines weiteren Thread ja nur durch die bessere Auslastung des echten Kerns erreicht mag eine solche Zuorndung sinvoll gewesen sein [wobei - warum eigentlich - sinvoll wäre ja eigentlich Threads die in Hardware einen Kern sehr stark auslasten mit Threads zu bündeln die in Hardware den Kern wenig auslasten - und da wäre die freie Wahl über alle "Kerne" die eigentlich flexiblere Vorgehensweise um so in der Theorie eben eine 100%ig Auslastung des Hardwarekerns zu erreichen].
Mal davon ab das die Zuordnung von Threads ja das OS macht. Und ja Windows war da dynamisch - aber wie oben gezeigt vielleicht ist das sogar die bessere Lösung? Ich meine mich aber auch erinnern zu können, das man in einer Datei Windows z.B. beibringen konnte, dass der Virenscanner z.B. immer auf Kern X laufen sollte. Die Datei wurde beim OS-Start gelsen und entsprechend die Threads der Anwendung dann auf den "Kern" "verschoben".
 
Bulldozer hatte kein HT. Bei HT, dass das schnellere Abarbeiten eines weiteren Thread ja nur durch die bessere Auslastung des echten Kerns erreicht mag eine solche Zuorndung sinvoll gewesen sein
HyperThreading (HT) ist ja nur der Intel-Markenname für Simultaneous Multithreading (SMT). Bulldozer nutzte aufgrund der Modulbauweise eine mit SMT verwandte Technologie, die von AMD CMT genannt wurde. Dabei wurde nicht ganz so viel geshared wie bei Intel, es waren mehr Bauteile doppelt und exklusiv für die beiden Threads eines Kerns vorhanden als bei SMT. Aber zum Beispiel die FPU lief bei Bulldozer auch schon im SMT-Betrieb, denn die mussten sich zwei Threads je Modul teilen.
 
Der Windows-Sheduler verteilt die Aufgaben nicht klug auf die Kerne, deshalb mache ich's für meine Software jetzt selbst, was für meinen Rechner funktioniert. Es soll aber nicht nur auf einem Rechner funktionieren, sondern immer. :)

Die Core-Zuordnung Bulldozer-Windows hatte ich seinerzeit mit einem FX-8120 und Win7/64 getestet. Ergebnis: Sicher ist nur, das der BD-Core0 auch der Windows-Core0 ist (sog. Boot-Core). Die restliche Zuordnung wird bei jedem Rechner-Start neu "ausgewürfelt". Lässt sich z.B. mittels CPUID ermitteln (Stichwort: Initial APIC ID). Bestätigt wurden meine Tests durch AMDs PSCheck.
Das wäre das blödestes überhaupt, wie man die CPU-Kerne gruppieren könnte. Dann müsste jedes Programm das erst austesten.
Ich hoffe mal, du hast unrecht. Hast du das mittels eines Benchmarks validiert?

Helle, ich weiß nicht ob deine Antwort weiter hilft. Mal davon ab das die Fragestellung so nicht zu beantworten ist. Bulldozer hatte kein HT. Bei HT, dass das schnellere Abarbeiten eines weiteren Thread ja nur durch die bessere Auslastung des echten Kerns erreicht mag eine solche Zuorndung sinvoll gewesen sein
Die feste Zuordnung wäre auch bei Bulldozer sinnvoll. Der erste Kern eines Moduls wird langsamer, wenn der zweite Kern des Moduls was zu tun hat. Bei Zen ist ähnliches zu erwarten.

EDIT: Ich habe das jetzt nochmal für einen Intel Atom N570 mit Windows XP 32 Bit überprüft. Dort sieht's wie folgt aus:
Logischer Kern 0 => Rechnet auf Kern A
Logischer Kern 1 => Rechnet auf Kern B
Logischer Kern 2 => Rechnet auf Kern A
Logischer Kern 3 => Rechnet auf Kern B

Das blieb zumindest über zwei Reboots so. Dort kommen also erst die "realen" Kerne und dann die SMT-Zwillinge. Beim i7-2640M auf Windows 7 64 Bit ist es immer gerade anders herum. :(

Bleibt die Frage, wie bekomme ich das als Programmierer heraus, wie die Kerne miteinander verquickt sind?
 
Zuletzt bearbeitet:
Der Windows-Sheduler verteilt die Aufgaben nicht klug auf die Kerne, deshalb mache ich's für meine Software jetzt selbst, was für meinen Rechner funktioniert. Es soll aber nicht nur auf einem Rechner funktionieren, sondern immer. :)

Bleibt die Frage, wie bekomme ich das als Programmierer heraus, wie die Kerne miteinander verquickt sind?
Welche Windows Version und build?
Bei Win10 - 14393 RS1 habe ich mal kurz mit dem CPUz Bench nachgeschaut:
http://abload.de/img/cpuz_bench_2tstock1ifrnx.jpg
http://abload.de/img/cpuz_bench_4tstock1k7r7t.jpg
http://abload.de/img/cpuz_bench_6tstock1yrr1v.jpg

Der erste Test, SingleThread startet immer zwischen Kern 0-3.
Bevor der erste Test zuende ist, starte auf einem anderem Modul* der zweite Test, Multi-Thread.
Sieht fast nach 3-Fach SMT aus. *chatt*

*Wenn der erste Test auf Core #2 läuft, startet Core#0 oder #1 für den zweiten Test.
Ich hoffe das hilft weiter...?
 
So richtig hilft das noch nicht weiter. Man bräuchte ein Benchmark, was man einmal startet und das beständig vor sich hinrechnet und ständig Punktewerte liefert. Diese exe-Datei bindet man dann per Task-Manager fest an einen logischen Prozessorkern. Dann startet man die Exe-Datei nochmal zusätzlich und bindet sie per Task Manager an einen zweiten Kern.
Sofern beide zugewiesenen Kerne signifikant Resource teilen, sollte das ermittelte Punkteergebnis des Benchmarks einbrechen. Den Turbo müsste man derweil ausschalten.

Ich kann da mal was machen, dass dauert jedoch etwas. Und ist inbetreffs Zen eigentlich auch ziemlich offtopic.
 
So richtig hilft das noch nicht weiter. Man bräuchte ein Benchmark, was man einmal startet und das beständig vor sich hinrechnet und ständig Punktewerte liefert. Diese exe-Datei bindet man dann per Task-Manager fest an einen logischen Prozessorkern. Dann startet man die Exe-Datei nochmal zusätzlich und bindet sie per Task Manager an einen zweiten Kern.
Sofern beide zugewiesenen Kerne signifikant Resource teilen, sollte das ermittelte Punkteergebnis des Benchmarks einbrechen. Den Turbo müsste man derweil ausschalten.

Ich kann da mal was machen, dass dauert jedoch etwas. Und ist inbetreffs Zen eigentlich auch ziemlich offtopic.
NT/HT ist zwischen 22Uhr und 6 Uhr morgens.
#2 oder #3, je nach dem wer kühler ist.
 
@Marrrrtin
Woher hast du das es ein Marketing Name von AMD sein soll und mit SMT verwand wäre?
SMT ermöglicht ohne zusätzliche Recheneinheiten dem Kern einen zweiten Thread zu bearbeiten, bei AMDs CMT Ausführung gibt es hingegen sehr wohl zusätzliche Recheneinheiten die aber vom anderen Kern nicht genutzt werden können. Seitens der Recheneinheiten müssen sich beide Kerne lediglich die FPU teilen. Es ist eine Zwischenform zwischen SMT und getrennten Kernen.
 
@Marrrrtin
Woher hast du das es ein Marketing Name von AMD sein soll und mit SMT verwand wäre?
Hä? Das hab ich nicht gesagt. Ich hab gesagt, dass Hyper-Threading ein Markenname von Intel ist für SMT.
SMT ermöglicht ohne zusätzliche Recheneinheiten dem Kern einen zweiten Thread zu bearbeiten, bei AMDs CMT Ausführung gibt es hingegen sehr wohl zusätzliche Recheneinheiten die aber vom anderen Kern nicht genutzt werden können. Seitens der Recheneinheiten müssen sich beide Kerne lediglich die FPU teilen. Es ist eine Zwischenform zwischen SMT und getrennten Kernen.
Genau. Das hab ich doch geschrieben:
Bulldozer nutzte aufgrund der Modulbauweise eine mit SMT verwandte Technologie, die von AMD CMT genannt wurde. Dabei wurde nicht ganz so viel geshared wie bei Intel, es waren mehr Bauteile doppelt und exklusiv für die beiden Threads eines Kerns vorhanden als bei SMT. Aber zum Beispiel die FPU lief bei Bulldozer auch schon im SMT-Betrieb, denn die mussten sich zwei Threads je Modul teilen.
Verstehe jetzt nicht wo das Problem liegt?! *kopfkratz
 
Die feste Zuordnung wäre auch bei Bulldozer sinnvoll. Der erste Kern eines Moduls wird langsamer, wenn der zweite Kern des Moduls was zu tun hat. Bei Zen ist ähnliches zu erwarten.

Das blieb zumindest über zwei Reboots so. Dort kommen also erst die "realen" Kerne und dann die SMT-Zwillinge. Beim i7-2640M auf Windows 7 64 Bit ist es immer gerade anders herum. :(

Bleibt die Frage, wie bekomme ich das als Programmierer heraus, wie die Kerne miteinander verquickt sind?

Deine Grundannahme, das die "feste" verdrahtung Sinn macht ist einfach falsch. Sinn macht, solange man weniger/gleichviel Aufgaben hat wie physische Kerne werden natürlich nur diese belegt weil so die Aufgaben am schnellsten abgearbeitet werden können. Wenn man nun darüber hinaus kommt also Anzahl Aufgaben größer realer Kerne kommt HT oder SmT zum Einsatz. Hier wäre es sinvoll, sofern dass das OS bestimmen kann - Threads auf einem Kern zu bündeln die zusammen den phisykalisch existierenden Kern maximal auslasten.
Es mag hier dann noch eine Ausnahme von geben, wenn Threads untereinander logisch verlint sind - weil Sie z.B. gegenseitig auf teilergebnisse oder Events des anderen Threads warten müssen. Hier könnte ich mir vorstellen das es Sinn machen kann beide auf einem Kern laufen zu lassen - weil durch selben Cache etc. Zugriffszeiten optimiert werden.

Gedankenexperiment:
Wir haben einen physikalischen Kern der dank HT 2 Threads bearbeiten kann.
Wir haben zwei Aufgaben = unabhängige Threads Ideal wäre, wenn der eine Thread z.B. 80% der Leistung des Kerns braucht und der andere nur 20%, denn dann würden wir in der Theorie die vollen 100% des physikalischen Kern abrufen können.
Braucht aber der 2te Thread 50% so werden beide Threads in Summe langsamer abgearbeitet, weil das der Kern nicht her gibt (130%).
Ich finde es auch dreist einfach zu behaupten Windows macht das schlecht. Im normalen Umfeld behaupte ich das Gegenteil, Windows macht das sehr gut, denn die Sache an sich ist in meinen Augen nicht trivial.
Und ich beleibe auch dabei - Bulldozer Aussagen wirst du nicht auf Zen übertragen können, da die zu grundelegende Technik zwar im Prinzip die selbe ist aber dann im Detail doch ganz anders ablief, da in vielen Bereichen viel weniger wirklich geteilt werden musste.
Es hat ja auch einen Grund wieso HT selbst heute nicht per se zu einem besseren Ergebnis führen muss.
 
Die meisten vermuten ja, dass nur aktive Tasks (also gestartete Programme) CPU-Zeit benötigen und so die Kerne durch den Scheduler sinnvoll belegt werden sollten. Natürlich findet Taskhopping statt und gerade bei den AMD-APUs/Bullis oder auch Intel-CPUs mit HT sollten zuerst alle "echten Kerne" belegt werden bevor HT oder eben die zweiten Recheneinheiten eines Kernes genutzt werden. Gerade System-Tasks oder Anwendungen die im Hintergrund laufen brauchen auch, nicht viel oder jede Menge, Rechenzeit. Mitlerweile macht der Scheduler das auch unter Windows 7 sehr gut. (In der Hoffnung, dass die Kerne 1+2 sowie 3+4 meiner A10 6700 APU zusammen gehören.) Jedenfalls belegt er bei 7-Zip, wenn ich 2 Kerne nutzen will, auch nur Kern 1 und 3.

Unter dem Strich ist es aber trotzdem nicht unbedingt die Aufgabe der CPU die Tasks zu verwalten, sondern vom Betriebssystem. Sollten die Tasks erheblich springen und immer wieder den Kern wechseln, sieht es wahrscheinlich blöd aus, aber unterm Strich wird es kaum schneller gehen, wenn man den Task auf einem Kern festtackert.
 
SMT ermöglicht ohne zusätzliche Recheneinheiten dem Kern einen zweiten Thread zu bearbeiten, bei AMDs CMT Ausführung gibt es hingegen sehr wohl zusätzliche Recheneinheiten die aber vom anderen Kern nicht genutzt werden können.
Das halte ich für eine nicht belegbare Aussage. Jegliches SMT nutzt zusätzliche Transistoren. Ich weiss natürlich nicht was du unter "Recheneinheiten" verstehst.
Damals so ausgeführt worden:
Bei SMT arbeiten mehrere logische Prozessoren in einem Chip, bei Intels Hyper-Threading sind es derzeit derer zwei. Beide rechnen weitgehend unabhängig voneinander, was helfen kann, den Durchsatz zu steigern. Dazu packt Intel nicht etwa zwei komplette Prozessor-Cores auf den Silizium-Chip (das ‘Die’), sondern spendiert nur einen zusätzlichen Registersatz sowie einen eigenen Interrupt-Controller (APIC) und einige interne Verwaltungsstrukturen. Sowohl die Anzahl der Rechenwerke als auch Zahl und Größe der Caches bleiben gleich, beide logische Prozessoren nutzen diese gemeinsam.
Also SMT lässt einen weiteren logischen Prozessor entstehen, ob der nun schon eine Recheneinheit ist gälte es zu klären. Ich würde sagen Ja. Natürlich kein kompletter Kern. Doch das ist ja bei vielen bzgl. Bulldozer ja auch noch umstritten ob ein Modul 2 Kerne besitzt. Ich bin der Meinung ein CMT-Modul hat 2xINT Kerne allerdings eine gemeinsame FPU, daher hinge es dann vom Workload ab ob da nun zusätzliche "Recheneinheiten" zum Zug kommen oder nicht. Jedenfalls ist die Grenze hier nicht so leicht zu ziehen.
 
Eine gemeinsame FPU die ABER Internet geteilt werden kann.
Und für Mich ist das eigentlich egal ob ich jetzt für 2 Häuser jeweils ne separate Garage habe oder ne Doppelgarage wobei ne Doppelgarage mehr Vorteile hat.
Dennoch hat jeder Hausbesitzer eine Garage.
 
CMT: Kleinere Rechenkerne, (ursprünglich) geteilter Scheduler, ganz andere Baustelle als SMT....
SMT: Scheduler verteilt 2 oder mehr Threads auf die vorhandenen Recheneinheiten.

Sogesehen stimmt die Aussage, dass SMT vorhandene Recheneinheiten (besser) nutzt....
 
Ist hier OT (vielleicht bei Programmieren besser aufgehoben), deshalb nur kurz: Habe eben ein kleines Progrämmchen geschrieben, das 2 Threads mit 256-Bit-Code (Float-DP) erstellt. Diese Threads werden unterschiedlichen Cores zugewiesen und dann die Ausführungszeiten gemessen. Die Zeiten, die sich signifikant (länger) von anderen Core-Kombinationen unterscheiden, repräsentieren ein "Bulldozer-Paar" (wegen FPU-Sharing 256-Bit). Im Moment sind bei mir beispielsweise die "Windows-Cores" 2 und 5 ein solches Paar. Diese Zuordnung lässt sich auch aus der InitialAPICID-Liste (CPUID) herleiten.
Getestet mit FX-8120 und Win7/64.
 
Ist hier OT (vielleicht bei Programmieren besser aufgehoben), deshalb nur kurz: Habe eben ein kleines Progrämmchen geschrieben, das 2 Threads mit 256-Bit-Code (Float-DP) erstellt. Diese Threads werden unterschiedlichen Cores zugewiesen und dann die Ausführungszeiten gemessen. Die Zeiten, die sich signifikant (länger) von anderen Core-Kombinationen unterscheiden, repräsentieren ein "Bulldozer-Paar" (wegen FPU-Sharing 256-Bit). Im Moment sind bei mir beispielsweise die "Windows-Cores" 2 und 5 ein solches Paar. Diese Zuordnung lässt sich auch aus der InitialAPICID-Liste (CPUID) herleiten.
Getestet mit FX-8120 und Win7/64.

Scheint mir aber arg merkwürdig zu sein, dass Microsoft das so durch würfelt? Das hört sich ja schon fast nach Sabotage an - ich würde mal wetten, dass praktisch keine Software z.B. GetLogicalProcessorInformationEx korrekt auswertet.

Edit: Wie sieht bei solchen AMD-Prozzis der Output von coreinfo aus?
 
Zuletzt bearbeitet:
@Marrrrtin
Das war doch deine Aussage:
Bulldozer nutzte aufgrund der Modulbauweise eine mit SMT verwandte Technologie, die von AMD CMT genannt wurde.
Die Module an sich haben herzlich wenig mit SMT zu tuen, lediglich die Arbeitsweise der FPU ähnelt dem und wenn es lt. deiner Aussage von AMD so genannt wurde dann wäre es wie Intels HTT ein Marketing Name.

@Complicated
Und berechnen diese zusätzlichen Transistoren auch was oder tuen sie nach außen nur so als gäbe es einen zweiten Kern um die vorhandenen Recheneinheiten eines Kerns besser auszulasten? Genau das ist der grundsätzliche Unterschied zwischen SMT und CMT.

--- Update ---

kleine Ergänzung @Complicated:
Unterm Strich hast du dir deine Frage doch schon selbst beantwortet

Ein CMT-Modul hat 2 von einander unabhängige INT Kerne und eine gemeinsame FPU die aufgeteilt werden kann. Daran ändert auch der Workload nichts.
Bei SMT ist es vollkommen egal ob mit oder ohne, es bleibt bei dem INT Kern und der FPU.
Auch deine Frage was man unter "Recheneinheiten" versteht finde ich irgendwie seltsam. Was berechnet denn bei dem Prozessor? Das dürften wohl jene INT Kerne und die FPU sein, der Rest ist für die Verwaltung, Zwischenspeicherung und Fütterung der Arbeit für jene Rechenwerke zuständig.
 
Die Module an sich haben herzlich wenig mit SMT zu tuen, lediglich die Arbeitsweise der FPU ähnelt dem und wenn es lt. deiner Aussage von AMD so genannt wurde dann wäre es wie Intels HTT ein Marketing Name.
Ich habe nicht gesagt, dass SMT und CMT dasselbe ist. CMT ist auch kein Trademark wie Hyper-Threading, sondern wie SMT die Abkürzung einer Variante des Multi-Threadings.

1_amd_smt_bulldozer2_dh_fx57.jpg


Wie Du selbst sagst ist der SMT- und CMT-Ansatz bezogen auf die FPU sehr ähnlich: Ein gemeinsamer Decoder meldet dem Betriebssystem zwei logische Kerne und schleust zwei Threads durch eine physische Einheit, die FPU.

Der Unterschied liegt lediglich im Integerbereich, wo bei CMT der Decoder zwei Threads auf zwei physisch vorhandene aber relativ schmale ALUs verteilt, während bei SMT die beiden Threads durch eine relativ breite ALU geschleust werden.

Erst mit Einführung von Steamroller wurde das ursprüngliche Konzept erheblich aufgeweicht, da nun jeder ALU ein eigener Decoder vorgeschaltet ist.
 
Das halte ich für eine nicht belegbare Aussage. Jegliches SMT nutzt zusätzliche Transistoren. Ich weiss natürlich nicht was du unter "Recheneinheiten" verstehst.
Also SMT lässt einen weiteren logischen Prozessor entstehen, ob der nun schon eine Recheneinheit ist gälte es zu klären. Ich würde sagen Ja. Natürlich kein kompletter Kern.
Das ist eine seltsame Betrachtungsweise. Als Recheneinheit würde ich die INT-Kerne, die FPU usw. sehen, eben alles was die theoretische max. Leistung erhöht. Mit SMT kommen hingegen keine zuästzlichen Ausführungseinheiten dazu, sondern sie helfen nur die vorhandenen besser auszulasten.

Doch das ist ja bei vielen bzgl. Bulldozer ja auch noch umstritten ob ein Modul 2 Kerne besitzt.
Da man mit zwei Threads den INT-Durchsatz verdoppelt kann, würde ich ja sagen. Ich denke die Frage würde sich nicht stellen, wenn die Kerne nicht so schwachbrüstig wären. Das die FPU geteilt ist, widerspricht dem zwar ein bisschen, aber da die FPU historisch gesehen nur eine Erweiterung ist und es durchaus auch heute noch CPUs ohne FPU gibt, würde ich es durchgehen lassen.
 
Zuletzt bearbeitet:
Zurück
Oben Unten