Pentium 4, multiprocessing?
-
Hi!
Wen ich die Prozessauslastung (windows xp) anschaue, dann läuft mein Programm nur auf einem "Prozessor" meines Pentium 4. (Ich habe auch nur einen, aber irgend wie wird der P4 als 2 Prozessorsystem erkannt) auf alle fälle habe ich noch andere "normale" Programme die Automatisch die ganz Bandbreite Ausnutzen.Ich arbeite mit Visual Studio.net V7.0, gibt es da irgend ienne Trick das er das progamm Pentium 4 freundlich compiliert?
Vielen Dank
Greets ChRiZ
-
Hyper Threading heißt das, aber so viel ich weiß ist das nur bei alle Pentium 4 integriert, erst bei den neueren versionen.
Das ganze bringt bei optimierung zwar bis zu 30% mehr leistung, aber ich persönlich bin trotzdem nicht so der fan davon, das bremst sich meiner meinung nach ja eh beim Contex Switch wieder aus ...Ich würde mich auf jeden fall mal erkundigen ob dein Pentium 4 das schon unterstützt .... allerdings ist der so und so nicht ganz ideal, der CPU hat schon fast mehr von einem Heizwiderstand Oo
-
wie der Vorredner gesagt hat, hast du offensichtlich einen P4 mit Hyper Threading. Diese Technologie beschleunigt Multitasking (bzw. dem Namen nach wohl eher Multithreading)... anyway: es gibt keine Moeglichkeit, das Visual Studio zu optimieren, dass es von HT gebraucht macht, das regelt die CPU von sich aus...
Aber Bedenke: auch wenn 2 CPUs angezeigt werden, steckt nur 1 CPU in deinem Rechner! d.h. du hast im Grunde nix davon, ob die Last im Windows Taskmanager gleichmaessig auf den beiden virtuellen CPUs verteilt ist oder nicht... 1 CPU kann nur so schnell rechnen wie 1 CPU, nie so schnell wie 2 CPUs
-
Vielen Dank für euere Antworten!!!
Ja es ist ein Hyper threading...Es ist mir bewusst das isch nur einen CPU habe..
(leider)
Das komische ist nur, dass gewisse Applikationen z.B. SETI in der Prozessauslastung von beiden virtuellen prozessoren auslastung anzeigt, aber mein Programm nur die eine zu 100% auslastet...Das Management liegt doch im Betriebssystem, und nicht vom CPU.. oder machen die das beise zusammen?
-
Das Betriebssystem managet das.
cu
-LC
-
Nen Prozessor der HT benutzt, kann aber effektiver ausgelastet werden, als einer der kein HT verwendet, also bringt es doch was, nur eben keine 2CPUs sondern 1 gut ausgelastete CPU
-
Erzeug einfach mehrere Prozesse/Threads in deinem Programm, der Scheduler deines Betriebssystems verteilt schon die Prozesse/Threads auf die CPUs (bzw. faked-CPUs ;))
Wenn du wissen willst wie man Threads in C++ anlegt, google mal nach boost::thread
@SirLant
naja, die Prozesse können sich aber auch gegenseitig ausbremsen, da die Technik ja darauf basiert, dass ungenutzte Teile von einem anderen Prozess genutzt werden. Wenn nun aber beide Prozesse die gleichen Teile nutzen wollen, kann es wohl zu Cache-Misses und Warteschlangen kommen => schlechtere Performance. Aber ich hab damit selber keine Erfahrung!
-
Der Hauptvorteil liegt darin, dass der andere Thread weiterrechnen kann, während der eine auf den Speicher wartet. Im Schnitt erzielt man damit ca. 20% mehr Durchsatz, als wenn nur eine virtuelle CPU ausgelastet wird.
-
Ringding schrieb:
Der Hauptvorteil liegt darin, dass der andere Thread weiterrechnen kann, während der eine auf den Speicher wartet. Im Schnitt erzielt man damit ca. 20% mehr Durchsatz, als wenn nur eine virtuelle CPU ausgelastet wird.
Es gibt eine Leistungssteigerung bis zu 30%, aber ich habe mir sagen lassen, das es im schnitt eher an die 10-15% sind.
Hyper Threading macht im prinzip folgendes:
Du hast im Prozessor eine Pipeline von 30 Steps, und durch Hyperthreading wird immer geschaut, das die Pipleline voll bleibt:
+ .... Thread
. Freier step+++++.+++++
Wenn diese situation auftritt, dann wird durch das Hyperthreading ein weiterer Thread in den freien Step "geschoben"
+++++++++++
Also, es hat schon seine vorteile, und die grundidee ist ja gar nicht mal so schlecht, und hardwaremäßig recht leicht durchzuführen, aber softwaremäßig verbraucht das teilweise so viele resourcen, das man von den 30% Leistungssteigerung runter auf die 15% kommt.
Hm, eine wirklich gute Beschreibung kann ich dir leider nicht bieten, aber ich denke im BUN-Script meines Profs steht das schon ausführlich genug drinnen, allerdings habe ich es mir nicht durchgelesen, da ich mal einen netten Fachartikel dazu hatte:
http://home.pcc.ac/ernst.graf/BUN/bs_hyperthreading.html
Aber der P4 ist ja generell etwas ... schrottig, ne pipeline mit 30 Steps ist viel zu lang, die Atholn 64 hat 10, so viel ich weiß, und das hat schon einen geschwindigkeitsvorteil, und zwar einen gewalltigen.
-
Naja, was meinste warum die die Pipeline-steps so klein gemacht haben? Damit die einzelnen Arbeitsschritte schön klein sind und man den Takt hochdrehen kann. Hohe Taktraten verkaufen sich nämlich prima.
-
Jester schrieb:
Naja, was meinste warum die die Pipeline-steps so klein gemacht haben? Damit die einzelnen Arbeitsschritte schön klein sind und man den Takt hochdrehen kann. Hohe Taktraten verkaufen sich nämlich prima.
Ja, und genau deswegen wird der Prozessor als Folge auch so unglaublich heiß, das man schon fast glauben könnte, man hat einen Heizwiderstand im Prozessorsockel stecken *g* - das ist ja einer der größten Sachen, die mich am P4 so stören, durch die Abwärme muss einfach irsinnig gekühlt werden, und das ist wiederum mit Lautstärke verbunden .