[C++] Taktowania procesora i pamięć cache

0

Witam!

Chciałbym prosić o pomoc w wykonaniu zadania pomiaru częstotliwości taktowania procesora na trzy sposoby (jeden z nich to zapewne RDTSC() choć nie wiem jak go używać) oraz rozmiaru pamięci podręcznej cache (tutaj nie mam w ogóle podejścia :( ). Jeśli ktoś z Was miałby jakiś pomysł i mógłby mi pomóc byłbym bardzo wdzięczny!

0

Jeśli chodzi o rdtsc, to najlepiej używać tego w takim stylu:

static inline uint64_t rdtsc() {
   uint32_t lo, hi;

   __asm__ __volatile__ (  // przykład pod gcc
         "xorl %%eax, %%eax\n\t" // potrzebne do cpuid
         "cpuid\n\t"    // teraz mamy pewność, że zakończono wszystkie poprzednie zadania
                                // można ewentualnie zmierzyć ile taki cpuid trwa i potem odejmować stałą od wyniku
         "rdtsc\n"
         : "=a" (lo), "=d" (hi)
         :
         : "%ebx", "%ecx" );

   return (static_cast<uint64_t>(hi) << 32 | lo);
}

Inna sprawa, że na systemie wielozadaniowym wyniki zawsze będą z jakimś marginesem błędu i tego nie obejdziesz...

1 użytkowników online, w tym zalogowanych: 0, gości: 1