PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Keine Beschleunigung durch Dualcore


Dj dicke Brust
2004-11-21, 10:56:54
Ja ich hab mich gerade so gefragt was die Dualcore Prozessoren denn Beschleunigen können. Da ist mir aufgefallen das Programme die parallel ablaufen natürlich durch den 2. Core an Performance gewinnen, aber was ist mit Programmen die nicht parallel ausgeführt werden können und dazu noch den Prozessor voll auslasten können?
Dazu würde ich gerne mal die Meinung von jemandem haben der sich etwas besser mit der Materie auskennt. Gibt es solche Programme überhaupt (diese die nicht parallel sind und den Prozessor auslasten) und inwiefern ist diese betrachtung für den Einsatz wichtig?

Weil so könnte es ja passieren das durch den Dualcore mehr Performance vorhanden ist und parallel ausführbare Programme schneller werden. Die nicht parallelen Programme aber langsamer werden weil es ja voraussichtlich die Dualcores nicht mit den hohen Frequenzen wie die Single sores geben wird.

BlackBirdSR
2004-11-21, 11:03:42
Ja ich hab mich gerade so gefragt was die Dualcore Prozessoren denn Beschleunigen können. Da ist mir aufgefallen das Programme die parallel ablaufen natürlich durch den 2. Core an Performance gewinnen, aber was ist mit Programmen die nicht parallel ausgeführt werden können und dazu noch den Prozessor voll auslasten können?
Dazu würde ich gerne mal die Meinung von jemandem haben der sich etwas besser mit der Materie auskennt. Gibt es solche Programme überhaupt (diese die nicht parallel sind und den Prozessor auslasten) und inwiefern ist diese betrachtung für den Einsatz wichtig?

Weil so könnte es ja passieren das durch den Dualcore mehr Performance vorhanden ist und parallel ausführbare Programme schneller werden. Die nicht parallelen Programme aber langsamer werden weil es ja voraussichtlich die Dualcores nicht mit den hohen Frequenzen wie die Single sores geben wird.


Genau so sieht es aus.
Grob gesagt, verhält sich das wie mit Intels Hyperthreading.
Wenn das Programm nicht auf Multithreading ausgelegt ist, dann kann es die 2. CPU nicht nutzen.
Die 2. CPU erledigt vielleicht einige Systemaufgaben, und arbeitet im Hintergrund auf Minimallast, was 1-2fps mehr bei Spielen bringen kann.
Allerdings haben DualCore CPUs zu Beginn wohl einen geringeren Takt.

Aber keine Sorge. DualCore CPUs werden selbst langfrisitg nicht in jeder Manns Rechner arbeiten. Das wird noch ein bischen dauern. Bis dahin gibt es entweder Ansätze um Spiele/Software anzupassen, oder schnellere Taktraten für die CPUs ;)
Gerade für Spieler werden "normale" CPUs noch recht lange aktuell sein.

mapel110
2004-11-21, 11:05:51
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=181080
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=183363&highlight=dual+core
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=178199&highlight=dual+core
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=178259&highlight=dual+core
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=172688&highlight=dual+core
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=171918&highlight=dual+core

Dj dicke Brust
2004-11-21, 11:07:28
Gibt es denn diese von mir grob beschriebenen Programme die nicht parallel ausführbar sind???

Ich meinte damit weniger Programme die nicht auf parallelen Betrieb ausgelegt sind sondern eher Programme bei denen dies nicht möglich ist.

Dj dicke Brust
2004-11-21, 11:21:18
Sorry ich sollte vielleicht doch ein bisschen besser mit solchen Suchanfragen umgehen lernen. Trotzdem danke für die antworten

Coda
2004-11-21, 11:22:28
Gibt es denn diese von mir grob beschriebenen Programme die nicht parallel ausführbar sind???
Nehmen wir an du hast einen Algorithmus der immer das Ergebnis der letzen Berechnung für die nächste braucht.
Den kannst du nicht parallelisieren. Und so wenige sind das gar nicht, die sich so verhalten.

Demirug
2004-11-21, 12:25:17
In diesem Zusammenhang ganz Interesant:

http://www-hydra.stanford.edu/

Zusammengefasst geht es dabei um eine Erweiterung für Multicore CPUs welche Programe die nicht Multithreaded programmiert sind denoch auf mehrere Cores verteilen kann.

Exxtreme
2004-11-21, 13:04:57
Ja ich hab mich gerade so gefragt was die Dualcore Prozessoren denn Beschleunigen können. Da ist mir aufgefallen das Programme die parallel ablaufen natürlich durch den 2. Core an Performance gewinnen, aber was ist mit Programmen die nicht parallel ausgeführt werden können und dazu noch den Prozessor voll auslasten können?
Dazu würde ich gerne mal die Meinung von jemandem haben der sich etwas besser mit der Materie auskennt. Gibt es solche Programme überhaupt (diese die nicht parallel sind und den Prozessor auslasten) und inwiefern ist diese betrachtung für den Einsatz wichtig?

Weil so könnte es ja passieren das durch den Dualcore mehr Performance vorhanden ist und parallel ausführbare Programme schneller werden. Die nicht parallelen Programme aber langsamer werden weil es ja voraussichtlich die Dualcores nicht mit den hohen Frequenzen wie die Single sores geben wird.
Naja, man sollte auch bedenken, daß verschiedene Programme auch Threads sind. Mit Dualcore-CPUs wird man viel besser mehrere Sachen gleichzeitig machen können. Z.B. was zocken und im Hintergrund kompilieren. :D

Byteschlumpf
2004-11-21, 13:43:47
Naja, man sollte auch bedenken, daß verschiedene Programme auch Threads sind. Mit Dualcore-CPUs wird man viel besser mehrere Sachen gleichzeitig machen können. Z.B. was zocken und im Hintergrund kompilieren. :D
Allerdings sollte der Rechner dann auch reichlich RAM zur Verfügung haben, sonst Ruckelts im Spiel u.U. etwas. :)

Dj dicke Brust
2004-11-21, 13:58:59
@coda

meinst du ungefähr sowas wie folgendes??

while(i<a)
{
i=i+b;
i++;
}

BlackBirdSR
2004-11-21, 14:13:46
@coda

meinst du ungefähr sowas wie folgendes??

while (i<a)
{
i=i+a;
a++;
}

Du musst dafür nicht einmal eine Schleife bauen.

Ganz simpel, auf Ebene der Ausführung.
a + b = c
d = c

das kannst du drehen wie du willst. Bevor du c nicht berechnet hat, kannst du es keiner Variable zuweisen.
Und von dieser Sorte gibt es massig code.
Ein Grund warum unsere CPUs pro Takt vielleicht nur 1-1.5 Befehle ausführen, und nicht 3.

Dj dicke Brust
2004-11-21, 14:21:39
oho dann ist das natürlich schon noch übler als ich es bis jetzt gedacht habe.

An diese Stelle mit nur 1-1.5 Befahlen kann doch HT dann ansetzen und die brachliegenden Teile noch untzen oder hab ich da etwas falsch die Sache verstanden?

@BlackBirdSR

BlackBirdSR
2004-11-21, 14:24:56
oho dann ist das natürlich schon noch übler als ich es bis jetzt gedacht habe.

An diese Stelle mit nur 1-1.5 Befahlen kann doch HT dann ansetzen und die brachliegenden Teile noch untzen oder hab ich da etwas falsch die Sache verstanden?

@BlackBirdSR

Ja an dieser Stelle versucht SMT (Hyperthreading bei Intel) anzusetzen.
Speziell beim P4 vermute ich allerdings, dass es hier weniger darum geht auf 2 oder 3 Befehle pro Takt zu kommen.
Es scheint insgesamt eher darauf hinauszulaufen, dass die CPU weniger Leerlauf hat, wo sonst gar nichts passieren würde.

Dj dicke Brust
2004-11-21, 14:28:50
Hab ich das denn richtig mitgekriegt das bei den Dualcores dann kein HT mehr sein soll weil man ja zwei physikalische CPU´s hat. Weil wäre das so müsste man ja die Performanceverluste durch weniger Takt und dazu noch die (ehrlich gesagt meist wenigen) verluste durch kein vorhandenes HT einrechnen oder?

Chatt
2004-11-23, 00:21:59
Moment, ein Programm das von HT profitiert wird von einer Dual-Core CPU deutlich profitieren. Natürlich fehlen jedem Kern die entsprechenden HT-Register, allerdings wird das durch das vorhanden Sein von 2 Cores mehr als ausgeglichen. Sofern die Netburst-Doppelpacks so kommen sollten wie angekündigt, wäre mir allerdings schleierhaft warum man plötzlich Abschied davon nehmen sollte (zumal HT wie gesagt zur besseren Auslastung des P4 dient und man nebenbei noch mit 4 statt nur 2 Kernen werben könnte).
Chatt (der wo gleich vor Müdigkeit mit dem Schädel aufm Keyboard einschlägt)
edit: *patsch* OK, ein Grund gegen HT fällt mir doch ein; die Abwärme. Ist ja nun schon beim aktuellen Netburstkern nicht unerheblich, wie das bei 65nm aussieht wird die Zeit zeigen.

Tria
2004-11-27, 21:41:36
Man kann durch Dual Core, bzw. Dual Prozessoren sicherlich keine Steigerung mit dem Faktor 2 erwarten. Jedoch gibt es auch in Spielen genug Aufgaben, die parallel ablaufen und daher von zwei Prozessoren profitieren könnten.

* 3D-Grafik
* 3D-Sound
* KI
* Netzwerk

Sobald in einem FPS die aktuelle Position der Spielfigur vorliegt, dann muss die Game Engine dazu die Grafik zeichnen, den Sound erzeugen, die Reaktion der Gegner berechnen und ggf. die neuen Daten ins Netzwerk leiten.

Daher sollte sich durch zwei Prozessoren auch in Spielen eine Leistungsteigerung erzielen lassen. Leider ist das den meisten Entwicklern aber zu aufwändig, und man verzichtet auf solche Maßnahmen. Mir sind bisher nur die Quake3 Engine sowie UT2004 als positive Ausnahmen bekannt. Auf dem Mac nutzt UT2004 den zweiten Prozessor, um die Soundausgabe zu berechnen. Das bringt etwa 25% mehr Leistung auf den großen Power Macs.

immi
2004-11-27, 23:14:57
also, eine richtige beschleunigung auch auf der oberflaeche wird man unter win wohl nie erleben!
Aber es gibt ja alternativen! BeOS z.b., jetzt Zeta genannt. OS/2 fuer PowerPC oder auch Irix sind solche Beispiele, die in jeder Hinsicht davon profitieren. Grund: Auch die Oberflaeche/Grafik ist hyperthreaded, sogar die Treiber (bei OS/2 damals, diese Version war nur eine machbarkeitsstudie :-( ). Bei Be ist gewissermassen jedes "Fenster-Bauelement" ein eigener Thread, so dass die Oberfleache direkt von mehr prozessoren profitiert.
X duerfte zu monolithisch sein, genau wie Win, bei dem es ueber einen ebenso monolithischen Grafiktreiber laeuft, der sowieso nur single-threadedder flaschenhals zum quasi-multithreadeden Grakacore darstellen duerfte.
Wenn sich jemand an Geoworks erinnern kann: da lief auch alles "gleichzeitig" ab, auch textaufbau im Hintergrundfenster... Nur, wenn die Font-Engine multithreaded laufen koennte, waere so etwas auch unter win moeglich.

Natuerlich ist es richtig, dass mehrere Anwendungen beim gleichzeitigen Laufen insgesamt schneller sind, der Flaschenhals bleibt aber trotzdem, also im Benutzerfall weniger die Grafik, sondern Festplatte/explorer/netzwerk.
Die Beschleunigung duerfte weniger eine Beschleunigung im "doppelten" sein, sondern eher ein verstecken von latenzen auf Anwendungsebene, die allenfalls im merklichen Bereich (max.20%) bleiben duerfte - leider.

mein nachster proz wird trotzdem ein pentium m ht dualcore ;-)

immerhin kann man dann auf jedem proz seti laufen lassen mit voller leistung :-)))

PatkIllA
2004-12-06, 00:26:56
Also eigentlich ist es bei fast allen besseren Anwendungen so, dass die Grafikausgabe in einem aigenen Thred läuft. In dem einen Thread kann etwas berechnet werden, was während der Berechnung von einem anderen ausgegeben wird.
Das wird aber eigentlich eher deshalb gemacht, damit die GUI bei Auslastung noch reagiert. Die mögliche Performancesteigerung mit SMT, SMP ist da nur ein Nebeneffekt.

Ich will aber auch wieder ein DualSystem. Das ragiert unter Last einfach viel besser. Wie sieht es denn mit S939 DualCores aus? Wann kommen die denn? Hoffentlich nicht nur als sau teure FX Versionen. Ich könnte auch mit ein paar MHZ weniger leben.

ShadowXX
2004-12-07, 16:23:55
Nur gerade bei Games hat man das Problem, das man zwar in der Theorie viel Paralell nebeneinander machn könnt, aber diese ganzen Sachen (KI,Grafik,Sound,etc) irgendwie alle voneinander abhängen.

D.h. man muss das ganze dan Syncronisieren, was im schlimmste falle dazu führt, das eine CPU dauert auf das Ergebnis/Ereignis der anderen wartet...vom Sync-Overhead gar nicht zu sprechen...

Coda
2004-12-07, 18:07:07
Naja man muss eher Microparalallitäten als Macroparalellitäten ausnützen, d.h. Schleifen per OpenMP auf Threads aufteilen o.ä.

Oder man lässt die KI einen Frame vorraus laufen, würde auch keinem auffallen.

Byteschlumpf
2004-12-07, 18:07:48
Man kann durch Dual Core, bzw. Dual Prozessoren sicherlich keine Steigerung mit dem Faktor 2 erwarten. Jedoch gibt es auch in Spielen genug Aufgaben, die parallel ablaufen und daher von zwei Prozessoren profitieren könnten.

* 3D-Grafik
* 3D-Sound
* KI
* Netzwerk

Sobald in einem FPS die aktuelle Position der Spielfigur vorliegt, dann muss die Game Engine dazu die Grafik zeichnen, den Sound erzeugen, die Reaktion der Gegner berechnen und ggf. die neuen Daten ins Netzwerk leiten.

Daher sollte sich durch zwei Prozessoren auch in Spielen eine Leistungsteigerung erzielen lassen. Leider ist das den meisten Entwicklern aber zu aufwändig, und man verzichtet auf solche Maßnahmen. Mir sind bisher nur die Quake3 Engine sowie UT2004 als positive Ausnahmen bekannt. Auf dem Mac nutzt UT2004 den zweiten Prozessor, um die Soundausgabe zu berechnen. Das bringt etwa 25% mehr Leistung auf den großen Power Macs.

3D-Grafik, 3D-Sound sowie Netzwerk werden bereits durch angepaßte Prozessoren übernommen (GeFurz, Schundblaster, Netzzwergkarten), was mehr als reichlich die eigentliche CPU entlastet! ;)

Paralleles-Rechnen bei Spielen halte ich für ziemlich albern. Bei Servern und Analysesystemen macht das zweifelsohne Sinn.


Mehr außer zu Zocken macht ihr wohl nicht mit euren PCs, oder?
Mit einer viel preiswerteren Konsole würdet ihr da deutlich besser fahren. :)

Audio/Bild/Videobearbeitung kann, abhängig von der eingesetzten Software, natürlich auch sehr stark von multiplen CPUs profitieren -> siehe Renderfarmen.