Forum: Programmieren allgemein
by ripper8472,
28. Jul 2004
Sprünge werden nicht gecacht, um es einfach auszudrücken. Der Prozessor kann nicht vorahnen, wohin gesprungen wird.
HyperThreading (von Intel) simuliert 2 CPUs. Wenn eine CPU mit dem Cachen beschäftigt ist, bekommt die andere die volle physische Zeit. Sonst teilen sich beide die physische CPU.
Forum: Programmieren allgemein
by ripper8472,
28. Jul 2004
aber die Pipelines werden in jedem Fall geleert! :-D
Forum: Programmieren allgemein
by ripper8472,
28. Jul 2004
Ich habs noch nie probiert, aber es müsste rein theoretisch möglich sein, mit so einem goto aus ner Rekursion zu springen, *irgendwo anders* weiterzumachen, dann wieder in die Rekursion zurückzuspringen und regulär beenden. Muss man nur zusehen, dass man nur dann zurückspringt, wenn der Stackpointer auch wieder die richtige Position hat... Nur mal zum Thema "Schwachsinn mit Calls und Jumps" *g*
Forum: Programmieren allgemein
by ripper8472,
27. Jul 2004
Ob ihr das nun Sprung nennen wollt oder nicht, der Programmzeiger wird trotzdem auf einen anderen Speicherbereich gesetzt. Und das bei Call und Jump.
Forum: Programmieren allgemein
by ripper8472,
27. Jul 2004
Ich hoffe, die heutigen Sprungvorhersagealgorithmen können wie schon angedacht solche Sprungbefehle berücksichtigen und dementsprechend anders cachen.
Wenn das wirklich stimmen sollte, dann ist ja ein Funktionsaufruf fast so "schlimm" wie ein GOTO :roll:
Der einzige Grund, ein goto nicht zu benutzen, ist, dass dabei nicht auf Verschachtelungen (also den Stack) geachtet wird. Wenn du in...