Rozhovor s tvorcom HWiNFO. Arrow Lake? Nezabudnite aktualizovať

Na technologický rozhovor sme dostali autora jedného z najrozšírenejších diagnostických nástrojov na monitorovanie počítačového hardvéru. Martin Malík sa rozpísal o tom, čo a ako funguje v HWiNFO. Hoci sám spracovanie údajov nepovažuje za žiadnu vedu, tak bežnému používateľovi tento článok určite rozšíri obzory. Mimochodom, viete, čo má HWiNFO spoločné s HWCooling? Napríklad krajinu pôvodu – Slovensko.

Aplikáciu HWiNFO na monitorovanie rôznych parametrov PC komponentov používate viacerí a preto veríme, že vás bude zaujímať, „čo všetko je za tým“. O fungovaní a prístupe k jednému z celosvetovo najpoužívanejších diagnostických nástrojov sme sa bavili priamo s jeho vývojárom, Martinom Malíkom.

HWCooling: Na začiatok úplne základná otázka: Ako HWiNFO vie, že štvrté jadro procesora má práve 75 °C?

Martin Malík (HWiNFO): Nie je v tom žiadna mágia. Výrobcovia umiestňujú do procesorov veľké množstvo senzorov – niektoré sú určené pre verejnosť, iné len pre interné použitie/diagnostiku. Treba len vedieť, ktorý z tisícov hardvérových registrov treba prečítať a ako ho správne interpretovať tak, aby poskytol user-friendly hodnotu. Taktiež je treba vedieť čo presne daný senzor/hodnota predstavuje. Moderné procesory môžu obsahovať desiatky teplotných senzorov, niekedy však zobrazenie nadmerného množstva senzorov môže byť skôr mätúce.

Na druhej strane taktiež nadmerné zjednodušovanie alebo abstrakcia môže viesť k chybnej interpretácii. Ako príklad uvediem Windows Task Manager, ktorý zobrazuje frekvenciu procesora ako jednu hodnotu. Väčšina používateľov však vie, že každé jadro zvyčajne pracuje na inej frekvencii, takže v procesore neexistuje niečo ako jediná frekvencia. Čo teda hodnota v Task Manager skutočne predstavuje? Je to priemerná hodnota frekvencie všetkých jadier, maximálna hodnota, alebo niečo iné? Podobne je to aj pri teplotách – rôzne senzory snímajú okamžitú teplotu rôznych častí a tieto sa potom kombinujú (buď ako priemerná teplota za určitý časový interval alebo maximálna hodnota teplôt v danej oblasti). Ak dochádza k rýchlym zmenám hodnôt (tzv. peaky), tak je zvyčajne užitočnejšie poznať priemernú hodnotu (za istý časový interval) danej oblasti. HWiNFO teda nie len že zobrazuje hodnoty, ale snaží sa im dať aj zmysel tak, aby užívateľ vedel čo dané hodnoty predstavujú.

HWCooling: Z vlastného pozorovania vieme, že rôzne diagnostické nástroje môžu pre rovnaký snímač hlásiť rôzne hodnoty? Čím je to spôsobené a ako používateľ vie, že sa dostáva (napríklad z HWiNFO) k správnej informácii?

Martin Malík (HWiNFO): Tu je ťažké dať jednoznačnú odpoveď bez presného uvedenia senzora a pozorovaných rozdielov. Najčastejší rozdiel môže ale spočívať v tom, že zmeny v hardvéri sa dejú veľmi rýchlo (napr. k zmene frekvencie môže dochádzať v milisekundách) a žiadny softvér nedokáže všetky tieto zmeny zachytiť v reálnom čase. Takže ak rôzny softvér číta rýchlo sa meniace hodnoty v rôznom čase, môže dostať rozdielne výsledky. HWiNFO si kladie veľký dôraz na správnosť údajov a myslím, že je aj práve pre túto vlastnosť veľmi cenené. Ako jeden príklad môžem uviesť pohľad na rýchlo sa meniaci takt procesora, tzv. Effective Clock, viac info tu (odkaz na vlákno na fóre hwinfo.com).

HWCooling: Pokiaľ je hlásená hodnota niekedy zjavne nesprávna. Technicky nič nemôže mať 1000+ stupňov Celzia, ale podobné anomálie sme už videli. Aké môžu byť pre ne dôvody?

Martin Malík (HWiNFO): Toto môže mať tiež viaceré príčiny. Môže sa napríklad jednať o momentálnu chybu senzora pri čítaní. Ďalší problém môžu predstavovať niektoré senzory (alebo ich interface), ktoré nie sú navrhnuté tak, aby umožňovali synchronizovaný prístup viacerých aplikácií v rovnakom čase. Ak dôjde k situácii, že k takému senzoru naraz pristupuje viacero aplikácií (command-response, alebo read-after-write), môže dôjsť ku konfliktu a chybnej interpretácii príkazu a výsledku. HWiNFO, ako aj mnohé iné monitorovacie nástroje sa dohodli a definovali jednoduchý synchronizačný mechanizmus (mutual exclusion/mutex), ktorý zabráni tomuto konfliktu. Vyžaduje to však, aby všetky aplikácie podporovali tento mechanizmus a správne ho používali. Napriek našej veľkej snahe propagovať tento mechanizmus (aj u veľkých výrobcov ako napr. Asus AI Suite, Gigabyte SIV, MSI Core Center), niektorí výrobcovia softvéru stále tento mechanizmus buď nepodporujú, alebo ho síce implementovali, ale nie správne, čo môže spôsobovať iné problémy.

Ďalšou príčinou nesprávnych hodnôt (ak je chybný výstup trvalý), môže byť aj senzor ktorý nemá pripojenú sondu. Napríklad, hlavné dosky využívajú LPC/SIO čipy, ktoré podporujú viaceré vstupy pre senzory, ale v závislosti od danej dosky, na niektoré z týchto vstupov nemusia byť pripojené senzory. Keďže neexistuje univerzálny mechanizmus, ktorý by vedel určiť či daný vstup je pripojený, tak sa môže stať, že hodnota vyčítaná z takého senzora sa zdá správna (v takom prípade sa môže jednať o plávajúce hodnoty), alebo výsledok ukazuje nezmyselné hodnoty. HWiNFO sa snaží odfiltrovať senzory, ktoré sa zdajú nezapojené, ale najlepší spôsob je spolupráca s OEM/ODM výrobcami ktorí poskytujú detailné informácie o zapojení všetkých senzorov na hlavnej doske. Toto zapojenie býva často iné pre každý model dosky, takže si asi viete predstaviť aké množstvo informácií je potrebné len pre kvalitnú podporu hlavných dosiek.

HWCooling: Bližšie špecifikujem situáciu okolo hlásenia rôznych hodnôt naprieč rôznymi diagnostickými aplikáciami. Bolo to už dávno, ale stále mám v živej pamäte, že teplotné snímače Core Tempu sa minimálne u procesore Core i9-920 rozchádzali, čo sa týka výstupu, tak s HWiNFO ako aj myslím s HWMonitorom (TechPowerUp!). Vyhodnotil som to vtedy tak, že to nevadí, pretože táto chyba bude snáď vždy rovnaká a na absolútnej hodnote pre potreby testov chladičov CPU zase až tak nezaléží. Čiže bavme sa konkrétne o teplotných snímačoch. Prečo aplikácia od aplikácie ich hodnoty nemusia škálovať?

Martin Malík (HWiNFO): Neviem, či máte na mysli zrovna Core i7-920 (Nehalem/Bloomfield family), ale práve u starších generácií bol problém s interpretovaním hodnôt teplôt jadier procesora. Vysvetlím to detailne. Intel pridal od prvých generácií Core Duo/Solo (Yonah family) takzvaný Digital Thermal Sensor (DTS), ktorý umožňoval meranie teplôt každého jadra. Tieto senzory boli však navrhnuté tak, aby dokázali zachytiť prehrievanie a teda hodnota ktorú hlásili nebola aktuálna teplota, ale rozdiel od maximálnej teploty pri ktorej malo dôjsť k spomaleniu taktu (thermal throttling). Táto maximálna teplota sa nazýva Tj,max.

Čiže aby softvér mohol hlásiť aktuálnu teplotu potreboval vedieť dve veci – hodnotu DTS senzora (Distance to Tj,max) a aktuálnu hodnotu Tj,max pre daný procesor. Tj,max je konštanta ktorá bola rôzna pre každý model a stanovovala sa počas výroby. No, ale keďže výrobca zrejme neočakával taký veľký záujem verejnosti o aktuálnu teplotu, u starších generácií nezabudoval mechanizmus, akým by bolo možné zistiť Tj,max pre daný procesor – bolo možné vedieť len hodnotu DTS (teda Distance to Tj,max), ktorá čím bola nižšia, tak tým bol procesor bližšie k maximálnej teplote. Prvé nástroje na hlásenie teploty sa snažili rôznymi spôsobmi (na základe odhadov a reálnych pozorovaní) odhadnúť správnu hodnotu Tj,max a teda vypočítať aj aktuálnu hodnotu teploty (t = Tj,max – DTS_value). To však bolo často nepresné a zistilo sa, že v niektorých prípadoch nie je možné zaručene odhadnúť Tj,max pre niektoré procesory.

Intel sa to snažil neskôr napraviť tým, že zverejnil hodnoty Tj,max pre niektoré generácie CPU, ale ani tento zoznam nebol presný a ani po niekoľkých úpravách (a pridaní istých „flags“ do registrov) nebolo možné stanoviť správnu hodnotu pre všetky modely. Práve tento spôsob „odhadovania“ Tj,max pre daný CPU spôsoboval rozdiel v hlásení teploty medzi rozdielnymi programami – každý využíval iný spôsob “odhadovania” Tj,max a potom sa výsledné teploty líšili vždy o konštantnú hodnotu. Tieto programy umožňovali aj používateľovi definovať vlastnú hodnotu Tj,max ak si myslel, že program to zle stanovil. Intel až od generácie Nehalem pridal register, ktorý hlásil aktuálnu hodnotu Tj,max pre daný CPU a tým sa tento problém vyriešil. Napriek tomu existoval ešte jeden problém o ktorom veľa používateľov nevie – presnosť, resp. odchýlka. Každý senzor pracuje podľa istých charakteristík v závislosti od dizajnu a kalibrácie.

Keďže prvé DTS senzory boli navrhnuté tak, aby správne zachytili prehrievanie CPU, dôraz pri presnosti bol kladený na teploty blízke k Tj,max a u mnohých senzorov klesala presnosť s klesajúcou teplotou. To malo za následok, že u niektorých generácií CPU pri teplote pod 50 °C tieto DTS senzory prakticky začali hlásiť nezmyselné hodnoty a boli teda takmer nepoužiteľné. Intel, po tom ako si uvedomil záujem o sledovanie aktuálnej teploty, začal zlepšovať presnosť DTS a od Nehalem/Sandy Bridge dosiahol akceptovateľnú presnosť. AMD malo podobný „nedostatok“ u starších generácií CPU/APU, kde senzor hlásil hodnoty na akejsi „ľubovoľnej“ škále (nie v °C) a keďže nikto nevedel v akej, tie senzory boli prakticky nepoužiteľné. Až od generácie Zen boli implementované desiatky senzorov, ktoré boli aj dostatočne presné. Niektoré hlásili aktuálnu hodnotu daného senzora, iné maximálnu istej oblasti a ďalšie zase priemernú za istý čas. Viac informácií tu (odkaz na vlákno na fóre hwinfo.com).

HWCooling: V nadväznosti na predošlú otázku… dá sa nejako nejako v jednoduchosti napísať, prečo si môže byť používateľ istý, že HWiNFO hlási hodnoty presne?

Martin Malík (HWiNFO): To je pomerne záľudná otázka (smiech). V reálnom svete nie je nič absolútne presné a taktiež každé meranie samotné môže ovplyvňovať meraný systém. Pri softvéri ako HWiNFO sme limitovaní hlavne dvoma faktormi – presnosťou a schopnosťami daného hardvéru a informáciami od výrobcu.

Neodvážim sa tvrdiť, že hodnoty v HWiNFO sú vždy presné, ale vzhľadom na množstvo úsilia vynakladaného do vývoja a dôrazu kladeného na optimálne a čo najpresnejšie získavanie informácií si dovolím tvrdiť, že HWiNFO jednoznačne patrí medzi špičku. Finálne posúdenie ponechám na používateľoch, a ostatne si myslím, že spätná väzba aj od profesionálnych používateľov (ako sú samotní výrobcovia, ktorí často používajú HWiNFO ako nástroj na validáciu) alebo overclockeri (ktorí kladú veľký dôraz na aktuálnosť údajov) je veľmi pozitívna.

HWCooling: Ospravedlňujem sa, ale zase to bude k teplotám (HWCooling… (smiech)): Snímač GPU Memory Junction Temperature pribudol až neskôr, spočiatku ho HWiNFO nereportovalo a nemali sme tak príliš predstavu zahrievaní VRAM. Predpokladám, že znovu za tým budú nejaké zložitosti aj s ohľadom na to, že väčšina aplikaćií v aktuálnych verziách tento snímač myslím dodnes nedokáže prečítať? Pokiaľ sa mýlim, tak ma prosím opravte. Možno sa to už zmenilo…

Aplikácia HWiNFO dokáže odčítať aj teplotu pamätí grafickej karty

Martin Malík (HWiNFO): Táto hodnota nepatrí medzi „oficiálne“ senzory, ktoré výrobca poskytuje verejnosti. HWiNFO bol prvý nástroj, ktorý dokázal túto hodnotu zobraziť. Ako som už spomenul, mnohé komponenty obsahujú rôzne senzory, ale nie všetky sú určené pre verejnosť. Nejde ani o to, že by výrobcovia mali v úmysle zatajiť skutočné údaje, ale skôr o to, ako by tieto hodnoty laická verejnosť interpretovala a aké závery by z toho urobila. Ak by došlo k nesprávnej interpretácii nejakej hodnoty a užívatelia by na základe toho začali robiť paniku a vracať výrobky (RMA), tak by to malo veľmi negatívny dopad na business a to by bolo veľmi nežiadúce. „GPU Memory Junction Temperature“ je dosť špecifiká hodnota, keďže je snímaná vo vnútri kremíka (nie na povrchu) a teda musíme očakávať, že teplota bude vyššia ako pri iných senzoroch. Takto sme to museli aj vysvetliť používateľom, aby nedošlo k panike, že im zhoria grafické karty. Ak však táto teplota dosahuje hraničné hodnoty pri ktorých dochádza k spomalovaniu, tak to už je potom iná situácia… to môže znamenať, že dizajn je nedostatočný a treba ho vylepšiť… Aj keď si niektorí užívatelia myslia, že HWiNFO zobrazuje až príliš veľa hodnôt a je ťažké sa v tom vyznať, dokázalo by zobrazovať podstatne väčšie množstvo údajov. Otázka, ktorú si však pri každom novom senzore kladieme je, do akej miery by bol daný senzor užitočný a či by nespôsobil chybné interpretácie.

HWCooling: Je nejaký so zobrazovaných snímačov, ktorý pre HWiNFO považujete za dôležitý a iné diagnostické nástroje ho nemajú? A naopak, existuje niečo, čo do HWiNFO „nedokážete dostať“ a iní „vedia ako na to“, keď sa opýtam takto… hlúpo? (smiech)

Martin Malík (HWiNFO): Napríklad, horeuvedená teplota patrí medzi také unikátne. Ďalej by som spomenul detailné senzory z viacerých regulátorov napätia (VRM/Digital PWM), C-State Residency, Performance Limiting Reasons, pri AMD Zen/Navi je to množstvo detailných senzorov (TDC, EDC, teploty jednotlivých jadier a CCD, IOD, SVI2/3 telemetria, PRD, a ďalšie), Windows Hardware Error Architecture (WHEA) informujúce o opraviteľných chybách (Correctable Errors), množstvo Embedded Controller špecifických hodnôt (napr. ASUS VCore Latch). Toto sú senzory, ktoré buď žiadny iný program nedokáže zobraziť, alebo len obmedzene. V blízkej dobe vydáme verziu s ďalšími unikátnymi senzormi na istých systémoch.. K tej druhej otázke – úprimne neviem o niečom dôležitom čo by iný software vedel, ale HWiNFO nie. Ak o niečom viete, dajte mi vedieť. Len prosím nech to nie je frekvencia procesora z Task Manager (smiech).

HWCooling: Prečo to nemá byť frekvencia z Task Managera?

Martin Malík (HWiNFO): Viď prvá odpoveď.

HWCooling: Aké hlavné veci musíte riešiť s výrobcami základných dosiek, aby bolo možné na nový hardvér pružne reagovať? V tom zmysle, že HWiNFO začne čítať nové snímače, ktoré pribudli? Ako dlhý a ako zložitý je vôbec proces medzi „dozviete sa o nových snímačoch“ a „nové snímače sú zapracované a funkčné v HWiNFO“?

Martin Malík (HWiNFO):Hlavne treba najprv vyriešiť podporu LPC/SIO ak sa jedná o nejaký nový model, potom treba poznať zapojenie senzorov (teplota, napätia, ventilátory) pre každý nový model základnej dosky. Často sa totiž stáva, že aj keď ide o rovnakú radu, každý model môže používať iné zapojenie. Tu je potom podľa počtu rôznych variácií vidno koľko rôznych návrhov/tímov na doskách pracovalo. Ak dosky podporujú aj nejaká špeciálne funkcie/senzory (napr implementované v EC), je potrebné poznať protokol a registre. Ten proces celkovej implementácie je rôzny a trvanie záleží od počtu nových modelov a funkcií. Jedná sa o dni, až týždne pre jedného výrobcu. Mnohí výrobcovia potom testujú Beta verzie HWiNFO a dávajú spätnú väzbu čo treba upraviť. Tento proces často začína týždne až mesiace pred uvedením na trh. Napr pre nové platformy, ktoré vyjdú čoskoro sme s implementáciou týchto senzorov u niektorých výrobcov začali už na jar.

HWCooling: HWiNFO sa od väčšiny iných nástrojov líši v tom, že okre priemerných taktovacích frekvencií jadier CPU uvádza aj efektívne takty. Čo táto metrika vyjadruje, ako sa počíta a k čomu je dobrá? O vlákne na Vašom fóre vieme, ale napriek tomu… máte k tomu nejaké TLDR pre čo najvýstižnejšiu interpretáciu?

Martin Malík (HWiNFO): Zjednodušene povedané – Effective clock podstatne lepšie odzrkadľuje rýchlo sa meniacu frekvenciu, ktorej všetky zmeny inak softvér nedokáže zachytiť. Nie je možné aby softvér dokázal odčítať s takou frekvenciou (sampling) s akou sa takt môže meniť a teda nemusí zachytiť väčšinu hodnôt. Taktiež, odčítavanie aktuálneho stavu vyžaduje aby dané jadro vykonalo túto operáciu, a teda nemôže zostať v neaktívnom stave v ktorom by sa inak mohlo nachádzať (tzv. efekt pozorovateľa). Pri Effective clock sa odčítavanie vykonáva len v istých intervaloch a CPU vykonáva sampling interne, takže efekt pozorovateľa sa minimalizuje. AMD Zen umožňuje ešte pokročilejšie metódy odčítavania (Snapshot polling), ktoré ďalej výrazne znižuju efekt pozorovateľa.

HWCooling: Akým spôsobom sa pristupuje k hodnotám „Core Clocks (avg) [MHz]“ pri procesoroch Intel big.LITTLE? Priemer ktorych jadier táto hodnota zahŕňa? Sú v tom aj „efektívne“ (E) jadrá, alebo iba „výkonné“ (P)?

Martin Malík (HWiNFO): Momentálne sa tam zahŕňajú všetky jadrá, ale asi by bolo rozumnejšie ich rozdeliť na P-core/E-core.

HWCooling: Je v HWiNFO nejaká funkcia, na ktorej implementaci ste sa nadreli, je užitočná, a mrzi Vás, ze jej prítomnosť používateľom uniká a príliš ju nepoužívajú?

Martin Malík (HWiNFO): Na toto asi nedokážem odpovedať, lebo nemám presný prehľad o tom, ktorú funkciu koľko používateľov používa. Zdá sa, že aj DOS verzia sa stále dosť používa (smiech).

HWCooling: Ďakujem za veľmi detailné reakcie. Tu to už asi zastavíme a predpokladám, že diskusia môže pokračovať už v komentároch, otázkami od našich čitateľov a používateľov HWiNFO.

Martin Malík (HWiNFO): Ďakujem za priestor.


Contents

Komentáre (2) Pridať komentár

  1. Nedaly vám spát teploty naměřené u nových generací, Ľubo? Prstem se neukazuje, a tak se asi nedozvím, který z výrobců je v přístupu a spolupráci nejhorší, abych věděl koho (primárně z výrobců desek) podpořit raději. Kdybyste mohli alespoň pošeptat do ucha 😊

  2. Pozdravujem.
    Za tie roky by som sa chcel Martinovi Malikovi aj touto cestou poďakovať aj za „aVIAtikov“ za vždy promtný support pri podpore a dektecii procesorov VIA, Zhaoxin a iGPU a dGPU S3 Graphics / Zhaoxin / Glenfly.

    Naozaj mnohdy si to ani neuvedomujeme, ale HWiNFO je to na čo môžme byť právom nielen doma, ale aj vo svete hrdý.

    Ale aby som len nechválil tak chcelo by to nejaký novší benchmark a to aj pre 64-bit verziu 🙂

    Všetko dobré a see you around.

    Tralalák

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *