Was macht die CPU * wirklich während der Speicheranweisungen?

428
Guru Prasad

Ich habe kürzlich das Linux-cpufreq-Modul getestet und festgestellt, dass das cpufreq-Modul immer die maximale Frequenz gewählt hat, unabhängig davon, ob ich einen CPU-intensiven Benchmark oder einen speicherintensiven Benchmark verwendet.

Ich verstehe, dass der Regler eine wichtige Rolle bei der Festlegung der Frequenzeinstellungen spielt. Also habe ich es sowohl mit OnDemand als auch mit konservativen Governors getestet und festgestellt, dass die Ergebnisse fast gleich sind (konservativ hat einen winzigen Anstieg auf Max-Frequenz, während OnDemand nur die Max-Frequenz sofort auswählt).

Dies wirft die Frage auf, was die CPU während eines Ladens / Speichers tatsächlich macht. Wir alle wissen, dass der Speicher wesentlich langsamer läuft als die CPU, und für das Laden / Speichern von Anweisungen sind normalerweise mehrere CPU-Zyklen erforderlich.

bearbeiten : Ich merke, dass viele solcher Lade- / Speicheranweisungen wahrscheinlich den Cache erreichen werden. Was ist mit denen, die es nicht tun?

Was macht die CPU eigentlich während dieser Zyklen? Ist es beschäftigt zu warten oder im Leerlauf?

0

1 Antwort auf die Frage

2
tay10r

Die Begriffe CPU, Prozessor und Prozessorkern sind sehr wichtig für Ihre Frage. Was Sie wahrscheinlich fragen möchten ist, was der Prozessorkern wirklich tut, während er auf Speicher wartet.

In den meisten modernen Intel-Prozessoren beginnt er mit der Ausführung eines weiteren Befehlszweigs. Dies wird als Hyper-Threading bezeichnet .

Bei den meisten anderen Prozessoren verbringt er im Wesentlichen Zeit im Wartezustand.

Nur zum Hyper-Threading hinzufügen: Wenn einer der Laufstreifen auf Speicher warten muss und der andere Laufstreifen nicht, dann führt er tatsächlich den anderen Laufstreifen aus. Wenn beide Nicht-Speicher-Sachen machen, muss man warten (es gibt immerhin nur einen Kern, obwohl er zwei Schritte zeigt). Wenn beide auf nicht zwischengespeicherten Speicher zugreifen müssen, warten beide. Hennes vor 10 Jahren 0
Ich führte eine Simulation mit sehr strengen Parametern durch, die einen einzelnen Kern in einer In-Order-Pipeline enthielten. Ich habe kein Hyper-Threading auf meinem Prozessor. Was würde der Prozessor unter diesen Bedingungen am wahrscheinlichsten während eines Ladens / Speichers tun? Guru Prasad vor 10 Jahren 0
@ user1761555 * Es verbringt im Wesentlichen Zeit im Wartezustand. * tay10r vor 10 Jahren 0