Infos über K8L

mehrere zusammengeschaltet? Wie soll das gehen?
 
mehrere zusammengeschaltet? Wie soll das gehen?

Indem der Prozessor selbstständig die Befehle aus einem Thread in mehrere Threads aufteilt, damit die Kerne gleichzeitig rechnen können.
 
Was meiner Einschätzung nach technisch nicht wirklich realisierbar sein wird.
Um eine Art "Anti-HT" zu basteln braucht es einen anderen Ansatz. Aber fragt mich nicht welchen, wenn ich es wüsste säß ich nicht hier sondern würde mir meine Idee vergolden lassen. ;)
 
Was meiner Einschätzung nach technisch nicht wirklich realisierbar sein wird.
Wenn ich mich recht erinner war das damals in der Anti HT Diskussion so, dass aus zwei 3fach superskaleren Kernen eben einer mit 6fach wird. Superskalarietät gibt "nur" die Menge von Befehlen an, die in einem Takt verarbeitet werden bzw. eingelesen werden. Beim Opteron sind das eben 3, beim Core2 4. Sollte also kein Problem sein, da dann eben 6 Befehle zu dekodieren, 3 für Kern 1; 3 für Kern 2. Quasi Raid0 für die CPU. Aber das ganze muss dann eben am Ende wieder zusammen geführt werden bzw. synchronisiert sein.

Dresdenboy hat mal dazu ein paar Patente gepostet, verwende dazu vielleicht die Suchfunktion.

ciao

Alex
 
Indem der Prozessor selbstständig die Befehle aus einem Thread in mehrere Threads aufteilt, damit die Kerne gleichzeitig rechnen können.
Das ist sicherlich möglich, daran arbeiten AMD und Intel nach wie vor daran ...

... Um eine Art "Anti-HT" zu basteln braucht es einen anderen Ansatz. ...
Der auch schon gemacht wird.

Die Programmierer müssen für die Auslastung der CPUs sorgen. Das forciert Intel mit seinem Itanium, Sun mit seinen multiplen Multicores, bzw. massiven Multithread-CPUs (Niagara, Niagara 2, Rock, UltraSparc IV/III). IBM scheint auch auf der Party dabei zu sein. Dort ist der Cell, der Power6 (wenngleich der auch dennoch vermutlich komplizierte Reorderlogik hat) und der Tricore für die Xbox Xenon.


Natürlich haben die Hersteller zusätzlich Softwaretools, die die Code-Optimierung vornehmen, allerdings kann der grundsätzliche Gedankenfehler der Programmierer auch nicht mehr zurechtbiegen. Intel hat seine Compiler, wie Sun ebenso (Sun Studio 12 für Solaris, Linux auf x86-64/x86, SPARC).

Wenn man bedenkt, dass x86 auf AMD64 und Windows Vista komplett auf x87-Gleitkomma-Code zugunsten von SSE2/3 verzichtet, dann ist ein Teil der Software schon ausgerichtet auf "vereinfachter" Streaming-Hardware.

Wenn man die NEC-Mannen zu den Vorzügen ihrer SX-Vektor-Prozessoren befragt, dann wird auch die höhere Auslastung des CPU-Kerns immer wieder in die Runde geworfen. Wenn ein Problem vektorisiert werden kann, dann spricht NEC von einer Auslastung von 30-40 Prozent gegenüber "Anderen" (skalaren)Architekturen (unausgesprochen x86), die bei 10 Prozent Rechenauslastung liegen sollen.

AMD, Intel, Nvidia arbeiten alle an ihrer Art der Vektorisierungs-Prozessoren (AMDs Streaming mit CTM, Intels Terascaleprojekte 1,2 und Nvidia mit ihren GPUs und der CUDA-Initiative).

Nun zur Anfangsfrage, wie soll das anordnen von effektiven Code gehen? Nun, es wird auch ganz per Hand sein müssen, bzw. Das Problem muss in vielfach-Threads angedacht werden müssen, oder auch mit geschickter Middleware und Compilern.

MFG Bobo(2007)
 
@ Opteron: Das ist auch ein Ansatz an den ich gedacht habe. Aber das ist ja schon ein gewisser Unterschied zu einer Technik die singlethreaded Anwendungen zu parallelisieren versucht. Dafür muss eine Anwendung auch das notwendige Potential haben.


Ich werd meinen Gedankengang dazu mal an einem Beispiel erklären. (irgendjemand hat dazu mal das Beispiel Kaffeekochen verwendet das find ich gut und führe es weiter)

Wir sind alle extremst Kaffeesüchtig und wollen den besten Kaffeeroboter der Welt bauen.
Gesagt getan, alles aufgebaut, Roboter legt los. Der Roboter ist ein helles Köpchen und will unseren Wunsch nach Kaffee möglichst schnell erfüllen. Weil er aber eine Grenze hat an der er sich nicht mehr schneller bewegen kann holt er sich seine Kollegen zu Hilfe und versucht den Prozess des Kaffeekochens zu parallelisieren.

a) Bohnen aus dem Schrank holen (inkl. Behälter öffnen, Bohnen abfüllen etc.)
b) Bohnen mahlen
b) Kaffeefilter holen
c) Wasser holen
d) alles rein in die Kaffeemaschine
e) Kaffeemaschine aktivieren

Die 6 Roboter legen los, wenige Minuten später ist die Küche ein Trümmerfeld.
Die Roboter haben alle gleichzeitig die ihnen zustehende Arbeit verrichtet, dafür hat man nun eine schöne Kuhfleckentapete. :)

Klar können Bohnen nicht gemahlen werden bevor man sie in der Kaffeemühle hat. Allerdings kann man natürlich gleichzeitig die Bohnen holen, die Kaffeefilter holen und das Wasser holen, das sind parallelisierbare Bestandteile.
Bis hier hin hat man also Arbeit für 3 Roboter, die 3 anderen werden garnicht erst gebraucht.
Die Bohnen auspacken und in der Kaffeemühle mahlen kann nur einer der drei, zwei Roboter müssen warten.
Sobald das fertig ist kann ein Roboter die Kaffeemaschine befüllen, wieder müssen zwei warten.
Sobald die Kaffeemaschine angeworfen ist müssen alle 3 warten.

Die Kaffeemaschine ansich ist ja auch auf eine gewisse Art und Weise ein Roboter, für die anderen Roboter stellt es allerdings eine Blackbox da. Sie tun nur ihre bisher hergestellten Bestandteile hinein, und holen fertigen Kaffee wieder heraus.
Die Kaffeemaschine kann auch nichts parallelisieren: Das Wasser muss gekocht werden, dann damit der Kaffee aufgegossen werden und durch das Filterpapier ziehen *hmmmm, wie das duftet* ;). Was die Kaffeemaschine nicht machen kann ist Das Wasser zu kochen, gleichzeitig das Kaffeepulver in den Auffangbehälter zu schmeissen und nachher das Wasser einfach durch den leeren Kaffeefilter auf das Kaffeepulver zu gießen, das wäre Murks.

Nun ist die Kaffeemaschine fertig, die 3 Roboter haben brav gewartet und wollen nun die 3 Kaffeetassen schnell befüllen. Auch das versuchen sie parallel zu machen, reissen sich gegenseitig die Kaffeekanne aus der Hand die schließlich in Trümmern zu Boden geht, die Roboter werden mit heißem Kaffee gegrillt und bekommen einen Kurzschluss. ;)

The End

Was ich mit dieser netten Geschichte sagen will: Programme lassen sich nicht beliebig parallelisieren, schon beim schreiben ist das schwierig genug.
Parallelisierung bringt doch sehr viele Probleme mit und das müsste die Hardware alles berücksichtigen wenn sie es selber macht.

Daher glaube ich an so eine Möglichkeit nicht bevor ich es nicht mit eigenen Augen gesehen habe, dass es funktioniert ;)

Der Ansatz mit der aufgebohrten Superskalarität ist davon doch etwas unterschiedlich und hört sich für mich daher besser an.
 
Das Beispiel mit dem Kaffekochen geht an der aktuellen Computer-Praxis vorbei.

Heutzutage werden vielfältige Programme parallel ausgeführt. Zudem ist immer noch ein gewisser Stamm an sehr alten Programmen vorhanden, die neu geschrieben sicherlich besser in parallel arbeitende Threads arbeiten könnten.

Ich möchte nicht wissen was in den aktuellen Betriebssystemen heute alles "zugleich" abgearbeitet wird (Windows, Solaris, Linux ... ). Mit dem Stichwort Virtualisierung gewinnt das um so mehr an Fahrt.

Um bei dem Beispiel Kaffekochen zu bleiben. Bei Solaris kann man einzelne Virtuelle Maschinen mit den Containern einrichten. In jedem Container wird dann ein eigenes Betriebsystem eingerichtet:
So kann man so mit Container 1 eine Windows 2000-Kaffemaschine, in Container 2 ein Windows XP 32 Bit, in Container 3 ein Windows XP 64 Bit, in Container 4 ein Windows Vista 32 Bit ... usw. betreiben.

Was ich sagen will, nur weil manche Probleme sich nicht parallelisieren lassen, muss man andere Programme nicht stur weiterhin auf Einzel-Thread-Betrieb programmieren. Es gibt heute schon Hilfsmittel und Tools, das den Programmfluss visualisiert, um dann eine bessere Auslastung zu erreichen ... darunter gehört auch das kostenlose* Studio 12 von Sun, wenn man unter Linux, oder Solaris programmiert.

Warum ich Sun hier besonders erwähne sollte klar sein. Sun setzt schon sehr lange auf SMT- UND SMP-Betrieb. Wer einen Octacore mit 4-fach-SMT (Niagara) schon seit fast zwei Jahren führt, der will die CPU-Kerne auch auslasten ...

MFG Bobo(2007)

* = ist dann ohne Service/Support.
 
Hmm, vielleicht war es mißverständlich ausgedrückt, wir reden glaub ich ein bisschen aneinander vorbei. Den Sinn von Parallelisierung, speziell bei Software die noch geschrieben werden muss, habe ich damit nicht angezweifelt.
Es ging in dem Beispiel mit dem Kaffeekochen nicht darum was der Programmierer macht, sondern darum was die CPU macht:
Der CPU wird ein singlethreaded-Programm vorgesetzt und sie muss jetzt gucken was sie daraus macht - eben so viel parallelisieren wie möglich. Das ist doch die Idee hinter dem Gedanken einer "Anti-HT"-Technologie.

D.h. sie müsste zur Laufzeit wenn möglich einzelne Abschnitte des Programms parallelisieren, dafür ist eine tiefere Kenntnis des Programms nötig. Aber viele Abschnitte eines Programms sind zur Laufzeit garnicht bekannt bevor sie nicht eingetreten sind, daher doch auch die ganzen Prefetch-Logiken und Sprungvorhersagen.
Die CPU müsste über diese Vorhersagen hinaus ganz detailiert lernen können welche Abschnitte des Programms sie auf verschiedene Kerne aufteilen kann und gleichzeitig abarbeiten.
Mein Kaffeebeispiel sollte nur deutlich machen, dass das wenn es machbar ist aufgrund der Struktur der Programme irgendwo seine Grenzen hat.

Natürlich können Programme neu geschrieben werden und somit stärker auf parallelisierung setzen, aber das muss auch erstmal jemand machen - da geht es ja nicht nur um Machbarkeit sondern auch um Wirtschaftlichkeit.
Klar, im Serverbereich wird man davon wesentlich mehr sehen, aber auf dem Desktop?
Da wo es sich lohnt und nicht so schwierig ist findet dieser Prozess ja auch schon längst statt bzw. gibt es dann auch teilweise schon länger. :)

Aber nochmal zum Thema Nutzen mehrerer Kerne.
Für den Desktopbereich stellt sich die Frage kaum, selbst nicht mehr allzu aktuelle Einkernprozessoren reichen doch für die normalen Officearbeiten mehr als aus.
Mehrere Kerne braucht es für den Desktop in den Bereichen Spiele, Packen, Contentcreation, HTPC, Distributed Computing (wobei das ja nur ein Bruchteil der Nutzer macht).
Ergänzt mich wenn ich etwas wichtiges vergessen habe.
 
Aber nochmal zum Thema Nutzen mehrerer Kerne.
Für den Desktopbereich stellt sich die Frage kaum, selbst nicht mehr allzu aktuelle Einkernprozessoren reichen doch für die normalen Officearbeiten mehr als aus.
Mehrere Kerne braucht es für den Desktop in den Bereichen Spiele, Packen, Contentcreation, HTPC, Distributed Computing (wobei das ja nur ein Bruchteil der Nutzer macht).
Ergänzt mich wenn ich etwas wichtiges vergessen habe.

Mach ich doch gerne: Ich finde doch, dass unter XP und Vista auch für Office-Anwendungen das ganze System sich auf einem dual-core Rechner flüssiger anfühlt, auch bei gleichem Takt sc vs. dc. Alles reagiert einfach einen Tick flotter, es geht "leichter von der Hand". Spätestens, wenn man einen Browser, Word und Excel gleichzeitig offen hat und da zwischen Dokumenten hin und herschaltet, ist es sehr deutlich IMHO. Und so ein Anwendungsscenario ist nun keineswegs völlig utopisch......
 
Hier ist nochmal ein bericht zum K10

http://www.hardware-infos.com/news.php?news=1192

Die beziehen sich zwar auf Infos von Fudzilla, schreiben aber von durchschnittlich 15% mehr Leistung gegenüber einen Kentsfield bei gleichem Takt. Allerdings war bei Fud in letzter Zeit nix zu lesen bezüglich dieser 15%
 
Nachdem der Fud es nicht lassen kann, will ich auch mal wieder meine ganz persönlichen Spekulationen loswerden:

Eventuell nutzt AMD die neuen Steppings des K10 gleich, um die IPC desKerns weiter zu verbessern. Daher vielleicht auch keine öffentlichen Benchmarks, weil die Geschwindigkeit noch nicht Final sein könnte. *noahnung*
 
mtb][sledgehammer;3252912 schrieb:
Nachdem der Fud es nicht lassen kann, will ich auch mal wieder meine ganz persönlichen Spekulationen loswerden:

Eventuell nutzt AMD die neuen Steppings des K10 gleich, um die IPC desKerns weiter zu verbessern. Daher vielleicht auch keine öffentlichen Benchmarks, weil die Geschwindigkeit noch nicht Final sein könnte. *noahnung*


Das halte ich für praktisch ausgeschlossen. Die IPC wesentlich zu erhöhen bedeutet ein recht deutliches Redesign. Die IPC dürfte seit locker einem Jahr feststehen. Die neuen Revisionen ändern neben Bugfixes mal hier und da was an speed-paths, aber Durchsatz und Latenz für die einzelnen Befehle, das steht lange fest.

Demnächst ist es dann ja auch ein Samsung K10......http://de.theinquirer.net/2007/07/16/wildes_geruecht_samsung_will_a.html ;)
 
Ich hol die Diskussion mal hier her, weil die News-Kommentare-Diskussionen doch meist recht schnell verschwinden.

http://www.planet3dnow.de/cgi-bin/newspub/viewnews.cgi?id=1184665739

Im größeren Stil Desktop K10 erst im März 2008. Letztlich also wirklich sehr ähnlich zur K8-Einführung.

Für mich persönlich perfekt, bis dahin reicht mein S.939 X2-4400+ nämlich locker. Bin aber doch mal gespannt, wie gut AMD das finanziell durchhält.

AMD wird jetzt halt offenbar schnell die wenigen halbwegs taktbaren K10 als Opteron auf den Markt schmeißen. Größere Stückzahlen mit für Desktops konkurrenzfähigen Taktraten sind halt einfach nicht drin. Was ich nach der ganzen Sache mit Steppings etc. jedenfalls nicht mehr glaube, ist, dass bei Server-Prozessoren jedes Stepping erstmal monatelang (hier wurde ja oft von 6 Monaten und länger geredet) durchgetestet wird. Nach allem, was man weiß, wird das Stepping, was frühestens im Juni vom Band lief, im August ausgeliefert........So gesehen glaube ich auch weiterhin nicht wirklich, dass AMD durch Konzentration auf Desktop-Prozessoren in der Entwicklung irgendwie schneller verkaufsfertige Produkte gehabt hätte. Ich glaube nämlich auch nicht, dass ein dual-core K10 mit dem aktuellen Stepping wesentlich höher gehen würde im Takt. Das würde nur so sein, wenn die Taktprobleme beim Quad-core auf Temperatur-Probleme zurückzuführen wären, wofür aber die Gerüchteküche keine Hinweise liefert......
 
Zurück
Oben Unten