Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi CPU-Frequenzbestimmung bei Core Duo (https://www.delphipraxis.net/80540-cpu-frequenzbestimmung-bei-core-duo.html)

kriegste 10. Nov 2006 15:55


CPU-Frequenzbestimmung bei Core Duo
 
Hallo,
die Messung mit Hilfe zweier RDTSC-Befehle und Wartezeit dazwischen funktioniert ja normalerweise prächtig. Jetzt hat sich Intel aber für den RDTSC etwas Mieses ausgedacht: Bei den neueren CPUs (Conroe etwa) läuft der TSC nicht mehr synchron zum CPU-Takt. Und etwaige Speedstep-Änderungen kriegt man so auch nicht mit.
Hat jemand noch eine Idee, wie man unter Windows trotzdem noch an den aktuellen(!) Takt kommt? CPUZ kann's ja auch irgendwie.

C.Schoch 10. Nov 2006 17:35

Re: CPU-Frequenzbestimmung bei Core Duo
 
Vieleicht gehts hiermit:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender : TObject);
var
  i : integer;
  dwSAffinity, dwDummy, dwPHandle : DWORD;
begin
dwPHandle := OpenProcess(PROCESS_QUERY_INFORMATION, true, GetCurrentProcessId); // Prozesshandle holen
if dwHandle <> INVALID_HANDLE_Value then
begin
  if GetProcessAffinityMask(dwPHandle, dwDummy, dwSAffinity) then // System Prozessoren holen
  begin
  for i := 0 to 31 do // dwSAffinity ausmaskieren und Prozessor dem Process zuweisen
  begin
    if (dwSAffinity shr i and 1) = 1 then
    begin
      if SetProcessAffinityMask(dwPHandle, i + 1) then
      begin
      //RDTSC durchführung
      end;  
    end;
  end
end;
Ich hoffe es klappt ist nur so heruntergeschrieben.

kriegste 10. Nov 2006 17:49

Re: CPU-Frequenzbestimmung bei Core Duo
 
Hi,

danke für den Versuch, aber auch dieser greift nur auf die RDTSC-Geschichte zu, die ja nicht mehr funktioniert. Dass ich den Thread auf einen Core zuweisen muss, ist mir klar (das wird auch so gemacht, ich wollte es nicht explizit nochmal erwähnen).

Ich habe ein paar Experimente mit RDPMC machen wollen (auf Verdacht hin, weil diese Performance Counter vielleicht noch nutzbar sind), aber leider braucht man wohl einen Treiber, um das Auslesen der Performance Counter im Userspace freischalten zu können.

negaH 10. Nov 2006 20:33

Re: CPU-Frequenzbestimmung bei Core Duo
 
Suche benzutzen, guckst du hier http://www.delphipraxis.net/internal...488&highlight=

In kurz: geht nicht, APIC funkt auch noch dazwischen und drosselt den CPU Takt nach belieben.

Gruß Hagen

kriegste 10. Nov 2006 21:25

Re: CPU-Frequenzbestimmung bei Core Duo
 
Danke für die Antwort. Das Ganze ist leider sehr unbefriedigend. Das Problem sind auch nicht "Multiprozessoren" an sich, da ich prinzipiell deren Takt (auch bei dynamischer Änderung) schon messen kann. Einzig Intels neuester "Clou", eben, dass es nur noch einen asynchronen, konstanten TSC gibt, macht mir Probleme.
Und naja, dass es nicht geht, lasse ich nicht so recht gelten, da CPUZ es ja kann. :mrgreen:

kriegste 14. Nov 2006 11:54

Re: CPU-Frequenzbestimmung bei Core Duo
 
Keine Ideen mehr?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz