Экстремальный разгон процессора

       

прикладная функция выгружающая драйвер из памяти


А вот при снятии показаний со счетчиков производительности без ассемблера уже не обойтись! Для упрощения программирования можно использовать ассемблерные вставки, хоть это и является признаком дурного тона, затрудняющих перенос программы на другие платформы и препятствующей ее компиляции другим компилятором. Правильным решением было бы создание отдельного ассемблерного модуля, но это слишком хлопотно, тем более, что мы пишем не коммерческую программу, а всего лишь демонстрационный макет.

       // ИНИЦИЛИЗАЦИЯ ДРАЙВЕРА 996

       if (_996_init()==0) return printf("-ERR: 996 driver not loaded!\n");

      

       // ВЫБОР СОБЫТИЯ ДЛЯ МОНИТОРИНГА И ЗАПУСК СЧЕТЧИКА

       _996_select(DCU_MISS_OUTSTANDING, PrefCtrl0);

      

       for(;;)

       {

              __asm

              {

                     mov    ecx, PrefCtrl0       ; // читаем регистр PrefCtrl0...

                     RDPMC                ; // ...и помещаем результат в EDX:EAX

                    

                     mov _edx, edx        ; // сохраняем EDX:EAX в...

                     mov _eax, eax        ; //          ...одноименных переменных

              }

             

              // анализ кол-ва кэш-промахов

              // ===========================

             

              …

              Sleep(0);
                  ; // отдаем остаток кванта и спим

       }



Содержание раздела