Kann erhöht wird ein Register verwendet, um die Taktrate zu bestimmen?
-
22-07-2019 - |
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?
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 wirdEs 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.