Frage

Kann ein Register erhöht (in einer Schleife) verwendet werden, um die (effektive) Taktrate zu bestimmen? Ich habe angenommen, natürlich kann es, aber ich wurde kommentiert, dass Cpu Super-Skalar Techniken implantieren kann, die diese Art von Berechnung unbrauchbar machen. Auch wurde mir gesagt, dass der Register auf CPU Inkrementieren kann in weniger als einem Taktzyklus durchgeführt werden.

ist es wahr?

War es hilfreich?

Lösung

Nein, nicht zuverlässig. Die Anzahl der Zyklen, die es ein Register zu erhöhen, nimmt kann zwischen verschiedenen Arten von Prozessoren variieren, und Sie müssen auch den Aufwand für das Schleifen umfassen. In jedem modernen Betriebssystem, Sie gehen mit präemptiven Multitasking zu tun haben, so haben Sie keine Ahnung, wie viel CPU-Zeit der Prozess-Scheduler Sie geben wird. Je nachdem, wie viel Arbeit andere Prozesse tun, können Sie viel oder wenig CPU-Zeit erhalten, so dass die Anzahl der Register Schritten Sie pro Sekunde durchführen kann, ist sehr variabel.

Ferner wird in einer Multi-Core-Umgebung, die Uhren mit der gleichen Rate Zutreffendes nicht. Wenn Ihr Prozess zwischen den Kernen durch den Scheduler aus irgendeinem Grund oder einem anderen, Ihre Taktrate könnte unvorhersehbar ändern.

bewegt wird

Es gibt viele besseren Möglichkeiten, um die Taktrate des Erhaltens, wie das Betriebssystem danach zu fragen (natürlich, wie dies mit O variiert zu tun).

Andere Tipps

Nein, Sie können nicht, dass verwenden, um Taktrate zu bestimmen. Es gibt keine Garantie, dass ein Register kann pro Takt genau einmal erhöht werden.

Welche CPU zielen Sie ab? Es gibt mehr bestimmte Arten von Taktrate bestimmen, zumindest auf x86.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top