Einzelnen Beitrag anzeigen
Alt 04.10.2004, 21:27   #4 (permalink)
Fr@ddy
Extrem Tweaker
 

Registriert seit: 01.07.2002
Beiträge: 2.031

Fr@ddy ist ein sehr geschätzer MenschFr@ddy ist ein sehr geschätzer MenschFr@ddy ist ein sehr geschätzer Mensch

Standard

Hm naja ich hoffe jetzt wirds nicht zu kompliziert.
Naja um zu begreifen was eingroßes Problem aktueller PCs ist sollte man mal einen Blick zurück werfen.
Zu 486er Zeiten hatte man noch RAM der Synchron zum CPU-Takt lief. Die CPU konnte also bei jedem Takt Daten aus dem RAM anfordern.
und jetzt hat man eine 3Ghz CPU und RAM der auf 200MHz läuft. also kann man bei 15 Takten einmal neue Daten anfordern.
Und was macht man in den verbleibenden 15 Takten?
Erstmal die Daten aus dem Cache verwenden denn der soll ja verhindern das die CPU nix zu tun hat.
Cache ist aber teuer und daher leider etwas zu klein um dieses Problem ganz zu beheben.
(P4s haben mickrige L1 caches das ist einer der Gründe warum sie nicht besonders effizient arbeiten der Centrino ist das beste Gegenbsp.)
(Das DDR Verfahren und in die CPU integrierte Speichercontroller sowie dual Channel und große Caches sind alles Mittel um das Problem des langsamen Speichers zu umgehen).

Parallelverarbeitung:
MMX und SSE sind Befehlssatzerweiterungen um gleiche Operationen auf integer bei MMX und floats bei SSE anzuwenden. Hat man jetzt im idealfall 8 Integer Werte auf die die gleiche Operation angewendet wird könnte das bei MMX in einem Takt geschehen während man sonst eben 8 Takte bräuchte.
Diese Einheiten haben alle aktuellen X86 CPUs also da liegt der performance Unterschied nicht. Könnte nur sein das ein CPU-Typ diese Einheiten gleich mehrfach hat dann wäre der in einer Disziplin wohl schneller. Das gilt auch für andere Befehlseinheiten ich meine das die aktuellen AMD CPUs mehrere ALUs haben daher können die eben mehrere Berechnungen parralel ausführen(könnte mich aber auch irren).


Pipelining:
Wurde ja bereits angesprochen. Vorteil ist das man in einem Takt theoretisch so viele Operationen ausführen kann wie die Pipeline Stufen hat. Klappt leider nicht immer. Hat man jetzt eine 30Stufige Pipeline dauert es 30 Takte bis man mal ein ergebnis bekommt.
Dafür kann man in jeder Pipeline Stufe gleichzeiti eine Operation ausführen also bei 30 Stufen 30 pro Takt.
Da man ja teilweise Ergebnisse aus der Pipeline braucht die noch nicht berechnet sind könnten Wartezeiten entstehen. Und ein anderes Problem ist das man die Pipeline richtig füllen muss gibt es sprünge im ausgeführen Programm kann es dazu führen das man dinge berechnet die garnicht angefordert sind. Dann hat man bei einer 30 Stufigen pipeline 29 Schritte umsonst berechnet. Um das zu verhindern gibt es Sprungvorhersagen die mitlerweile weit über 90% der Sprünge erkennen und die Pipeline eben mit anderen Daten füttert. Eine gute Sprungvorhersage ist bei solch langen Pipelines wie sie heute verwendet werden wichtiger als ein paar MHz mehr.

Naja ich hoffe ich habs nicht unnötig kompliziert gemacht aber man sollte an dem Text schon erkennen das Taktrate nicht alles ist es gibt genug Mittel mehr Performance aus einer CPU zu kitzeln ohne den Takt anzuheben.
Fr@ddy ist offline   Mit Zitat antworten