Точное определение частоты CPU

Тема в разделе "WASM.ASSEMBLER", создана пользователем mr_Infern0, 4 май 2007.

  1. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    PSR1257DMI он врет. Я статистику собирал. На чостоте он врет больше всего темболее он отоброжает не дейстивительное, а номинальное.
    Exp10der
    Чтобы в SMBus лезть надо знать какая у нас материнка и что там за чип стоит. А то идентификационного кода там не предусмотренно хотя есть но у разных моделей в разных местах. Тем более там скорее всего постоянная частота, а проц уже сам снижает частоту.
     
  2. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Exp10der
    Почему не дзен? :) smi круче ring0, его [возможно] не вырубить из ring0 даже зная что там "кто-то" есть.

    Pavia
    Нельзя ли поподробнее о твоих экспериментах? Я имел в виду вызов его "API" и он (по идее) просто вернет содержание какого-то MSR (возможно вызовет при этом callback из BIOS.

    ps Возможно вообще все методы основанные на принятии факта что некоторые команды выполняются за _фиксированное_ число тактов имеют неустранимый вклад переменного числа этих самых тактов в зависимости от уровня привелегий (читал что in на 3-ем уровне выполняется за большее число тактов чем на 0-м), кэширование, может что-то еще... только очень тщательно подобранная последовательность команд при очень аккуратном следовании документации может работать корректно.

    pps Вспомнил еще читал про некий ~"ROB" - можно каким-то образом считать историю выполнения процессором команд и увидеть на что они были разбиты и как исполнились... не помню точно.
     
  3. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    PSR1257
    Это я описался. Там DMI а не SMI.
    А вот SMI он вроде о частоте не знает.

    Если нужно мерить время кода, то лучше через ROB и др отладочные средства.
    Можно еще частоту зафиксировать через MSR.
     
  4. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    По идее должен быть способ "прочесть откуда-то" и винда его явно знает "Свойства системы -> общие" показывает правильную текущую частоту в соответствии загрузкой, а не нечто промежуточное "с копейками".
    Прямой замер полюбому сталкивается с проблемой SpeedStep - в лучшем случае замеряется высокая или низкая частота (/2) но может быть и переключение во время замера, тогда никак не узнать сколько % cpu был на какой частоте в замеряемом промежутке. Можно попробовать на время sleep запустить параллельный поток (а лучше несколько по числу ядер, или сделать привязку обоих потоков к одному ядру), гарантирующий 100% загрузку процессора.

    leo как выяснилось QueryPerformanceХХХ + rdtsc не годится, поскольку зависит от SpeedStep ;) остаётся только timeBeginPeriod + Sleep + гарантированная загруженность cpu на время Sleep.
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Y_Mur
    Ядро определяет частоту процессора при запуске, процедура KiInitMachineDependent() в секции .INIT ядра, собственно в сорсах такаяже как на реальном ядре:
    Код (Text):
    1.             // Determine the MHz for the processor
    2.             //
    3.  
    4.             KeGetCurrentPrcb()->MHz = 0;
    5.  
    6.             if (KeFeatureBits & KF_RDTSC) {
    7.  
    8.                 Index = 0;
    9.                 pSamp = Samples;
    10.  
    11.                 for (; ;) {
    12.  
    13.                     //
    14.                     // Collect a new sample
    15.                     // Delay the thread a "long" amount and time it with
    16.                     // a time source and RDTSC.
    17.                     //
    18.  
    19.                     CPUID (0, &Junk, &Junk, &Junk, &Junk);
    20.                     pSamp->PerfStart = KeQueryPerformanceCounter (NULL);
    21.                     pSamp->TSCStart = RDTSC();
    22.                     pSamp->PerfFreq.QuadPart = -50000;
    23.  
    24.                     KeDelayExecutionThread (KernelMode, FALSE, &pSamp->PerfFreq);
    25.  
    26.                     CPUID (0, &Junk, &Junk, &Junk, &Junk);
    27.                     pSamp->PerfEnd = KeQueryPerformanceCounter (&pSamp->PerfFreq);
    28.                     pSamp->TSCEnd = RDTSC();
    29.  
    30.                     //
    31.                     // Calculate processors MHz
    32.                     //
    33.  
    34.                     pSamp->PerfDelta = pSamp->PerfEnd.QuadPart - pSamp->PerfStart.QuadPart;
    35.                     pSamp->TSCDelta = pSamp->TSCEnd - pSamp->TSCStart;
    36.  
    37.                     pSamp->MHz = (ULONG) ((pSamp->TSCDelta * pSamp->PerfFreq.QuadPart + 500000L) /
    38.                                           (pSamp->PerfDelta * 1000000L));
    39.  
    40.  
    41.                     //
    42.                     // If last 2 samples matched within a MHz, done
    43.                     //
    44.  
    45.                     if (Index) {
    46.                         if (pSamp->MHz == pSamp[-1].MHz ||
    47.                             pSamp->MHz == pSamp[-1].MHz + 1 ||
    48.                             pSamp->MHz == pSamp[-1].MHz - 1) {
    49.                                 break;
    50.                         }
    51.                     }
    На реальном ядре XPSP2:
    Код (Text):
    1. 005E77BC                          64:A1 20000000         mov eax,dword ptr fs:[20]
    2. 005E77C2                          8998 10090000          mov dword ptr [eax+910],ebx
    3. 005E77C8                          F605 6C5A4800 02       test byte ptr [_KeFeatureBits],2
    4. 005E77CF                          0F84 F2000000          je ntoskrnl.005E78C7
    5. 005E77D5                          895D EC                mov dword ptr [ebp-14],ebx
    6. 005E77D8                          8DB5 D4FCFFFF          lea esi,dword ptr [ebp-32C]
    7. 005E77DE                          8D45 F8                lea eax,dword ptr [ebp-8]
    8. 005E77E1                          50                     push eax
    9. 005E77E2                          50                     push eax
    10. 005E77E3                          50                     push eax
    11. 005E77E4                          50                     push eax
    12. 005E77E5                          53                     push ebx
    13. 005E77E6                          E8 CB840000            call ntoskrnl._CPUID@20
    14. 005E77EB                          53                     push ebx
    15. 005E77EC                          FF15 28104000          call dword ptr [<&HAL.KeQueryPerformanceCounter>]                  ; HAL.KeQueryPerformanceCounter
    16. 005E77F2                          8906                   mov dword ptr [esi],eax
    17. 005E77F4                          8956 04                mov dword ptr [esi+4],edx
    18. 005E77F7                          E8 E7840000            call ntoskrnl._RDTSC@0
    19. 005E77FC                          8D7E 18                lea edi,dword ptr [esi+18]
    20. 005E77FF                          834F 04 FF             or dword ptr [edi+4],FFFFFFFF
    21. 005E7803                          57                     push edi
    22. 005E7804                          53                     push ebx
    23. 005E7805                          53                     push ebx
    24. 005E7806                          8946 20                mov dword ptr [esi+20],eax
    25. 005E7809                          8956 24                mov dword ptr [esi+24],edx
    26. 005E780C                          C707 B03CFFFF          mov dword ptr [edi],FFFF3CB0
    27. 005E7812                          E8 E232E2FF            call ntoskrnl.KeDelayExecutionThread
    28. 005E7817                          8D45 F8                lea eax,dword ptr [ebp-8]
    29. 005E781A                          50                     push eax
    30. 005E781B                          50                     push eax
    31. 005E781C                          50                     push eax
    32. 005E781D                          50                     push eax
    33. 005E781E                          53                     push ebx
    34. 005E781F                          E8 92840000            call ntoskrnl._CPUID@20
    35. 005E7824                          57                     push edi
    36. 005E7825                          FF15 28104000          call dword ptr [<&HAL.KeQueryPerformanceCounter>]                  ; HAL.KeQueryPerformanceCounter
    37. 005E782B                          8946 08                mov dword ptr [esi+8],eax
    38. 005E782E                          8956 0C                mov dword ptr [esi+C],edx
    39. 005E7831                          E8 AD840000            call ntoskrnl._RDTSC@0
    40. 005E7836                          8B4E 0C                mov ecx,dword ptr [esi+C]
    41. 005E7839                          FF77 04                push dword ptr [edi+4]
    42. 005E783C                          8946 28                mov dword ptr [esi+28],eax
    43. 005E783F                          8B46 08                mov eax,dword ptr [esi+8]
    44. 005E7842                          2B06                   sub eax,dword ptr [esi]
    45. 005E7844                          FF37                   push dword ptr [edi]
    46. 005E7846                          1B4E 04                sbb ecx,dword ptr [esi+4]
    47. 005E7849                          8946 10                mov dword ptr [esi+10],eax
    48. 005E784C                          8B46 28                mov eax,dword ptr [esi+28]
    49. 005E784F                          2B46 20                sub eax,dword ptr [esi+20]
    50. 005E7852                          894E 14                mov dword ptr [esi+14],ecx
    51. 005E7855                          8BCA                   mov ecx,edx
    52. 005E7857                          1B4E 24                sbb ecx,dword ptr [esi+24]
    53. 005E785A                          8956 2C                mov dword ptr [esi+2C],edx
    54. 005E785D                          51                     push ecx
    55. 005E785E                          50                     push eax
    56. 005E785F                          8946 30                mov dword ptr [esi+30],eax
    57. 005E7862                          894E 34                mov dword ptr [esi+34],ecx
    58. 005E7865                          E8 23C1E1FF            call ntoskrnl._allmul
    59. 005E786A                          53                     push ebx
    60. 005E786B                          8BF8                   mov edi,eax
    61. 005E786D                          68 40420F00            push 0F4240
    62. 005E7872                          FF76 14                push dword ptr [esi+14]
    63. 005E7875                          8BC2                   mov eax,edx
    64. 005E7877                          FF76 10                push dword ptr [esi+10]
    65. 005E787A                          81C7 20A10700          add edi,7A120
    66. 005E7880                          13C3                   adc eax,ebx
    67. 005E7882                          8945 E0                mov dword ptr [ebp-20],eax
    68. 005E7885                          E8 03C1E1FF            call ntoskrnl._allmul
    69. 005E788A                          52                     push edx
    70. 005E788B                          50                     push eax
    71. 005E788C                          8B45 E0                mov eax,dword ptr [ebp-20]
    72. 005E788F                          50                     push eax
    73. 005E7890                          57                     push edi
    74. 005E7891                          E8 64BFE1FF            call ntoskrnl._alldiv
    75. 005E7896                          33DB                   xor ebx,ebx
    76. 005E7898                          395D EC                cmp dword ptr [ebp-14],ebx
    77. 005E789B                          8946 38                mov dword ptr [esi+38],eax
    Процедура CPUID в какомто топике скозали что нужна для повышения точности.
    Код (Text):
    1. 005EFCB6 _CPUID@20                53                     push ebx
    2. 005EFCB7                          56                     push esi
    3. 005EFCB8                          8B4424 0C              mov eax,dword ptr [esp+C]
    4. 005EFCBC                          0FA2                   cpuid
    5. 005EFCBE                          8B7424 10              mov esi,dword ptr [esp+10]
    6. 005EFCC2                          8906                   mov dword ptr [esi],eax
    7. 005EFCC4                          8B7424 14              mov esi,dword ptr [esp+14]
    8. 005EFCC8                          891E                   mov dword ptr [esi],ebx
    9. 005EFCCA                          8B7424 18              mov esi,dword ptr [esp+18]
    10. 005EFCCE                          890E                   mov dword ptr [esi],ecx
    11. 005EFCD0                          8B7424 1C              mov esi,dword ptr [esp+1C]
    12. 005EFCD4                          8916                   mov dword ptr [esi],edx
    13. 005EFCD6                          5E                     pop esi
    14. 005EFCD7                          5B                     pop ebx
    15. 005EFCD8                          C2 1400                ret 14
    И собственно rdtsc:
    Код (Text):
    1. 005EFCE3 _RDTSC@0                 0F31                   rdtsc
    2. 005EFCE5                          C3                     ret
     
  6. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Pavia
    SMI сам по себе может и не знает, но он как бы часть BIOS, а BIOS выводит значение частоты (если не ошибаюсь) в своем меню. Возможно, позвать напрямую даже из ring0 эти процедуры BIOS нельзя, так как для этого нужен RM. Однако при переключении в SMI это [возможно] уже сделать разрешено, равно как и читать MSR и прочее. Может, я ошибаюсь, но я видел некий интерфейс у SMI - например, тот считывал определнные MSR и передавал их по подготовленному в регистрах указателю на что-то вроде пакета вызвавшему SMI.

    Clerk, по поводу Вашего примера. Я вот что не пойму: break по достижению двух идентичных "сэмплов". Если она реально "дрожит", скажем 2000-2400-2800, но статистически 2400, скажем, даже 95%, то да, в большинстве случаев будет 2400, но есть малая вероятность что будет 2000 или 2800. Я бы еще понял если далее идет усреднение по всем сэмплам... Если можно, приведите значения этих сэмплов. А если там всегда const, зачем тогда цикл?
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    PSR1257
    Это не мой пример, это мелкомягкие сделоли. частота не дрожит так, в ядре такой погрешности быть не может и тск за малое время замера не врёт, на данной фазе прерывания запрещены, поэтому ничего не скачет. Посмотрел в KPRCB обоих для обоих процессоров значение 0xBC6.
    Cpl показывает это(исходную частоту):
    [​IMG]
    Эверест показывоет это:
    [​IMG]
    ЗЫ: Это вы привыкле в юзермоде rdtsc юзоть, вот вам и "скачет" .D
     
  8. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Clerk
    Я не имел в виду что это Вы написали. Прерывания запрещены - даже от таймера? Может, это как раз попытка найти окно между двумя прерываниями которые вряд ли идут чаще 1мкс (скорее еще реже).
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    PSR1257
    Какие прерывания, это юзоется на 1-й фазе инициализации ядра, когда есчо даже менеджер памяти не запущен. Ядро не запущено. Да и вообще не понятно чего ты споришь. Хочешь или не хочешь всё идеально работает.
    [А насчёт частоты прерываний она может быть огромной - взять тоже профилирование, по таймеру апик прерывания вырабатываются во много раз быстрее чем 1мкс.]
     
  10. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Clerk
    Не ну я просто не знал что на этой фазе. Тогда разумееццо. Тогда я по-прежнему не понимаю "двойного сэмпла".
    Полагая что это "обычная" (т.е. могущая быть вызванной в любой момент и неоднократно) процедура, я полагал что винда не станет устанавливать системный таймер <1ms.
    Гм. Если найду время то пропатчу этот кусок и посмотрю сколько итераций у этого цикла в реале..
     
  11. Exp10der

    Exp10der Мастер дзена

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    337
    Адрес:
    Красноярск
    Как вариант можно подизасмить код биоса и посмотреть что и от куда он читает, он же по идее не с потолка значение частоты ядра берёт - само числовое значение FSB и множителя должно же где то храниться
     
  12. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Кому еще интересен сабж, то советую хотя бы ознакомиться с этим http://www.wasm.ru/forum/viewtopic.php?id=28456
    Если не лезть в глубокое изучение SMI вообще, дабы не морочить себе голову, то измеритель частоты(периода) нужно делать так, чтобы из массива замеренных RDTSC значений, скажем 1000 шт., выискивать и усреднять ТОЛЬКО ТЕ заначения, у которых % разброса не превышает, скажем 3% от превалирующих в массиве. Тогда мы получаем не только высокую точность, игнорируем "поглощенные" и "добавленные" такты появляющиеся при вычитывании с помощью RDTSC + якобы стабильного и известного периода IRQ0.
    И это проверенный факт, что является демонстрацией и следствием работы SMI ввиду откладывания на потом ВСЕХ IRQ возникающих в моменты работы CPU в теле обработчика SMI...
    Для меня лично неясно, как это сейчас у двуголовых в смысле SMI и кто его обслуживает ,какая голова дракона?.... и еще имеет или нет винда(ы) свой, собственный обработчик SMI и если да, то как они борются в этом случае с вендорозависимостью, т.е. имеется несколько вариантов(версий) обработчиков в зависомости от HW или еще как нить? Надеюсь на профессиональные комменты.
     
  13. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Проникнуться сокровенной правдой про SMI на русском языкеможно тут ftp://ftp.prosoft.ru/pub/Hardware/Fastwel/QNX/6.3.x/technotes/SMI_handler_overlay_QNX.pdf. Несмотря на то, что речь идет про специфическое изделие фирмы FastWell на базе PC платформы, тут в технической заметке есть гланое и общее для основной массы процов, матерей и ОС. Это как и на что влияет SMI с каких пор он является причиной "тахикардии" чуть ли не во всех платформах... Лично у меня на тертьей странице случился ШОК, когда я узнал правду в размере 8мс(!) хаотичекого убиения процессорного времени у проца с 1,8 ГГц тактовой... Кто занимается(занимался) измерениями физвеличин, разными РЭА и АСУ ТП думаю меня поймет.
    ИМХО это надо знать каждому, дабы порой не задаваться вопросами "почему"?
    P.S. Остается надеяться и мечтать, что биосописатели и производители мат плат всеже примут меры для того чтобы современные процы(особенно многоголовые) не убивали по N мс процессорного времени циклом в каждые, скажем 64-250 мс для того чтобы выяснить вращается ли кулер проца и какие у него обороты?.... :dntknw:
     
  14. Exp10der

    Exp10der Мастер дзена

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    337
    Адрес:
    Красноярск
    во первых, разве аппаратный мониторинг не в отдельной микрухе реализован, которая в случае чего просто дёргает прерывание (которое кстати может и не обрабатываться) или сама отключает напругу? ..по крайней мере Winbond w83627hf которые мне встречались работали именно так.
    во вторых откуда 16 битному коду биоса взяться в защищённом режиме?
    да кстати и термал-троттлинг по крайней мере на пне 4 работает полностью аппаратно..
     
  15. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Представь себе машину, у которой Winbond сидит на шине SMBUS(встречались P4) и никакое прерывание не дергает там, а сравнение значений, отключение, типа понижение частоты проца... осуществляется именно в SMI обработчике ВНЕ зависимости от типа оси и тем более битности, RM, PM... к стати разработчики ведь именно для этого его и придумали как некий "инопланетный" SMM сам себе бог! :)
    Вот и работает несчастный CPU с чипом аппаратного мониторинга путем последовательного обмена запрос-ответ по черепахоподобной шине SMBUS (если ее вообще шиной можно назвать), ну например таким макаром:
    Код (Text):
    1.         mov dx, 5002h
    2.         mov al, ch
    3.         out dx, al
    4.         out 0EBh, al
    5.         mov dx, 5003h
    6.         mov al, 0
    7.         out dx, al
    8.         out 0EBh, al
    9.         mov dx, 5000h
    10.         mov al, 0Bh
    11.         out dx, al
    12.         call    sub_C30C
    13.         jb  locret_C20D
    14.         xor cx, cx
    15.         inc si
    16.         mov dx, 5024h
    17.         in  al, dx
    18.         and al, 1Fh
    19.         out 0EBh, al
    20.         mov [si], al
    21.         inc si
    22.         movzx   cx, al
    23.         mov dx, 5004h
    24. loc_C205:
    25.         in  al, dx
    26.         mov [si], al
    27.         inc si
    28.         inc dx
    29.         loop    loc_C205
    30.         clc
    31. locret_C20D:   
    32.         retn
    33.  
    34. sub_C30C:
    35.         push    cx
    36.         mov dx, 5001h
    37.         clc
    38.         mov cx, 100h
    39. loc_C314:
    40.         in  al, dx
    41.         out 0EBh, al
    42.         test    al, 80h
    43.         jnz loc_C322
    44.         loop    loc_C314
    45.         jmp short loc_C32A
    46.         nop
    47. loc_C322:
    48.         and al, 1Fh
    49.         or  al, al
    50.         jz  loc_C32D
    51. loc_C32A:
    52.         mov al, 0FFh
    53.         stc
    54. loc_C32D:
    55.         pop cx
    56.         retn
    поскольку вложенные прерывания НЕВОЗМОЖНЫ в SMI, проц тупо
    убивает своё время (суммарно это миллисекунды) при любой CуперМегаЗадачной ОС на подобные "интеллектуальности":
    Код (Text):
    1.         mov cx, 100h
    2. loc_C314:
    3.         in  al, dx
    4.         out 0EBh, al
    5.         test    al, 80h
    6.         jnz loc_C322
    7.         loop    loc_C314
    и таковых в обработчике нанизано тупейшим ленточно-гирляндным способом
    десятки(!), а то и сотни в случае рекурсий, условий переходов....
    Печально и то, что коды БИОСов, не блещут оригинальностями биосописак и подобные "интеллектиальные куски" находятся на раз-два-три по сигнатурным характерным местам в очередных попавших в руки матерях....
    Отмечу еще и то страшное обстоятельсво, что черепашья временная диаграмма винбонда, скажем по SMBUS НЕ зависит от скорости проца! Что страшного в этом?
    Отвечаю. Пусть, допустим, для подобного выше "обслуживания" со стороны CPU аппаратного измерителя "здоровья" матери некой фирмы производителя(ну винбонд пусть, не суть важно!) требуется совокупно по всем датчикам 1мс, тогда посчитайте сколько тактов(циклов опроса) требуется УБИТЬ CPU НА ХОЛОСТОЙ ХОД в ожидании ОДНОГО БИТА готовности(!!!!!!) в коде, что выше приведен, для тактовой частоты 0,5, 1, 2, 3 ГГЦ??? Ведь получается парадокс ,т.к., чем лучше, круче проц, тем больше его надо именно УБИТЬ( ! ) меняя
    Код (Text):
    1. MOV   CX, nnnn
    все в большую и большую сторону!!!
    Не верите? Тогда всем кто не верит, или ошарашен личным открытием рекомендовал бы покачать PDF`ы на свои винбонды(не поленитесь открыть системник и найти чип и маркировку выписать или в кижонке нм мать указан), слить свой реальный BIOS или скачать с сайта свою прошивочку, расковырять ее, например с помошью тулзов от www.rom.by, затем найти там SMI обработчик, хотябы по сигнатуре RSM и загнав в IDA найти заветные LOOP ...
    Дальше подсчет их количества и анализ величин MOV CX(ECX), nnnn....
    Вот это и есть объективный, конструктивный подход и анализ, я так думаю.
     
  16. Exp10der

    Exp10der Мастер дзена

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    337
    Адрес:
    Красноярск
    ...кстати позыркал свои бивис... проц никого не опрашивает в случае чего питало сам ХВ монитор отрубает как я и думал (но это частный случай...) понижения частоты с п4 нет в принципе, а есть только троттлинг типа чем горячее тем больше тактовых импульсов проц пропускает и то схема зашитая в сам проц фильтрует тактовые импульсы не зависимо ни от чего кроме температуры, кроме того в случае превышения температуры сам проц может отключить питание у него для этого вроде даже отдельная нога есть (ну по крайней мере пень 4)....
     
  17. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Winbond сидит на LPC и доступ к нему есть двумя путями через SMBus или через порты 2eh - pnp и 290h-мониторинг.

    И еще как раз таки там идет система прирываний которая в случии перегрева дергает SMI.
    Вот чтобы понизить часто-ту там да надо дергать PLL (генератор частот) который на SMBus сидит.
    Хотя тут надо изучить повнимательнее потому что насколько помню вроде тоже на механизме прерывания был.
     
  18. Exp10der

    Exp10der Мастер дзена

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    337
    Адрес:
    Красноярск
    да и ещё разве нельзя в этот обработчик джампов напихать на выход и всё а винбонд перепрограммировать на использование прерываний (хотя можно его вообще отрубить HW монитор, пень 4 и сам может #THERMTRIP выдать и отрубиться).. да и помимо всяких бондов встречаются аппаратные мониторы зашитые в южник они разве тоже на SMI висят там по идее нормальные шины.. типа локал бас и т.п...
     
  19. Exp10der

    Exp10der Мастер дзена

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    337
    Адрес:
    Красноярск
    Pavia во во не может быть чтобы бивис девеолперы так позорно тупили
    кстати HW монитор полезная шутка я вот прогу забацал которая смотрит темп и выводит мессаг в случае чего... конфигурирование по 2Eh/2Fh опрос по 290h
     
  20. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Они там завязаны прямыой связью. Первый выдает аларм о перегреве второй реагирует. Отключить возможно и можно но тогда твой проц просто перегреется.