German_Ripper am 17.12.2005 17:26 schrieb:
Hallo Leute,
vielleicht kann mir einer bei der Frage helfen.
Wie viele Befehle kann ein gängiger 3 gHz-Prozessor während eines Hauptspeicherzugriffs von 40 nsec ausführen. Mit welchen technischen Kniffen wird dieser Engpass umgangen?
Vielen Dank im Voraus
ich weiß es nicht genau, aber afaik sollte er pro sekunde 3milliarden mal befehle annehmen können und jedesmal afaik 3stück (pipelines beim p4 - n at64 hat afaik 4 stück)
allerdings werden die afaik nicht alle auch in der zeit abgearbeitet - pro takt springen sie afaik in der pipeline einen schritt weiter und z.b. so prescott hat derer ~30.
wärend der ersten 30takte kommen also noch rechenergebnisse aus der vorangegangen sekunde und die letzten 30 werden erst in der nächsten bearbeitet.
so, das ganze jetzt noch auf 40ns runtergerechnet macht 40x3 befehle.
was für einen engpass du meinst, weiß ich aber nicht so ganz. meinst du, dass der prozessor nicht bei jedem schritt auf den speicher zugreifen kann?
dafür gibts seit ewigkeiten den 1st level cache, seit dem coppermine (zweite PIII generation) den 2nd level cache (war bei so7 extern, bei pII mit halben takt unterwegs) und bei einigen prozessoren (xeon mp, erste generation p4ee) den 3rd level cache, die mit vollem prozessortakt arbeiten. (der k6III hat auch 3cache stufen, die dritte war aber deutlich niedriger getaktet)
die daten darin wurden entweder kurz vorher eh schon benötigt/gerade erst erstellt oder von einem "prefetcher" vorgeladen. (was natürlich nicht immer klappt, aber die teile sind gar nicht mal so schlecht darin, programme daraufhin zu anylisieren, welche daten vielleicht bald benötigt werden könnten)
sollten die daten übrigens tatsächlich aus dem speicher geladen werden müssen, so wartet die cpu. (oder rechnet mit einem anderen programm weiter, wenn es sich um einen ht prozessor handelt und mehrere threads laufen)
deswegen bringt mehr cache auch mehr leistung - es muss nicht so oft gewartet werden.