2017-07-23 23:00:31
PowerController - automatyczne zarządzanie planami zasilania

Intel, produkując wynalazek o nazwie EIST, jak zwykle zawiódł. EIST, czyli Enhanced Intel Speedstep Technology, w założeniach działa poprzez obniżanie taktowania procesora kiedy nie jest wykorzystywany i zwiększania pod obciążeniem do nominalnych wartości. Nie neguję oczywiście zalet tego rozwiązania, ale jest ono tak czy siak niepełnosprawne. Przykładowo, znakomita większość obecnych procesorów bez problemu obsługuje serwis Youtube bez konieczności wykorzystywania pełnej jego wydajności. Niestety, specyfika działania sprawia, że przeglądarka "ogłupia" procesor i ten bardzo często na ułamek sekundy przełącza się w tryb pełnej mocy, zużywając niepotrzebny prąd oraz obciążając zasilacz wahaniami zapotrzebowania na moc. Ponieważ dzieje się to często, przekłada się to na skracanie żywotności zasilaczy, zwiększenie rachunku za prąd i zwiększanie temperatury systemu.
Pewnym rozwiązaniem jest zmiana planu zasilania - od Windows Vista w górę możliwe jest sterowanie maksymalną mocą procesora i zachowanie tej wartości w "planie zasilania". Nie jest to do końca wygodne, bo na systemach biurkowych nie ma możliwości wygodnego przełączania się między planami (należy się przeklikać przez gąszcz opcji). No i w końcu, fajnie by było, gdyby "coś" automatycznie zmieniało plan w zależności od realnego zapotrzebowania.

I tu pojawia się PowerController.

2015-03-23 24:56:53
VIA popsuła swoje API! :P

Taki szybki protip dla wszystkich, którzy chcą z tego skorzystać i utknęli - VIA Padlock SDK jest popsute. Konkretnie, to funkcja padlock_phe_partial_available() wewnętrznie wywołuje funkcję asm_is_nano(), która wygląda tak:

cglobal asm_is_nano
asm_is_nano:
    xor eax, eax                ;get vendor ID
    cpuid   
    ;cmp ebx, 0x746e6543        ;means "tneC"
    ;jne NO_VIA
    ;cmp edx, 0x48727561        ;means "Hrua"
    ;jne NO_VIA
    ;cmp ecx, 0x736c7561        ;means "slna"
    ;jne NO_VIA
    
    ;verdor ID cannot got now, since our board has errata.
    mov     eax,  0xC0000000
    cpuid
    cmp     eax, 0xC0000001
    jb      NO_VIA
    mov     eax,  0xC0000001;
    cpuid
    and     edx, 0x0C00;        PHE_MASK,CPUID EDX code for PHE
    cmp     edx, 0x0C00;        PHE_MASK,CPUID EDX code for PHE
    jne     NO_VIA
    
    mov eax, 1              ;get model
    cpuid
    or  eax, 0x000f
    cmp eax, 0x06ff         ;3rd bit is F, then nano.
    jne NO_VIA
    
    mov eax, 1              ;return 1
    ret
    
NO_VIA:
    xor eax,eax
    ret;

... No właśnie. Instrukcja CPUID zamazuje wartości rejestrów EAX, EBX, ECX i EDX, i nic nie przywraca ich wartości, wobec czego po wywołaniu padlock_phe_partial_available() program przestaje zachowywać się przewidywalnie. Rozwiązanie? Przepisać sobie ręcznie asm_is_nano(), dodając pushe i popy odpowiednich rejestrów w odpowiednich miejscach.

2014-05-05 01:23:17
HrPopCnt, czyli dostałem Haswella

Dopiero teraz dociera do mnie, ile fajnych bajerów tkwi w moim lunchboxie, a jednym z nich jest instrukcja POPCNT obsługiwana przez Core i3-4130T. A co robi ta instrukcja? Zlicza ilość zapalonych bitów w danym argumencie.

2011-11-08 21:03:39
BPFStat

BPFStat to mały program do generowania histogramu zawartości pliku. W sieci można znaleźć kilka programów które to potrafią, ale nie spotkałem się z takim, który potrafi podać przy okazji wartości skrajne, ilość unikalnych wartości, ukryć słupki dla wartości które nie wystąpiły, ukryć maksimum, no i chyba najważniejsze - pracować z 16-to i 32-bitowymi wartościami - więc napisałem swój.

Screenshot BPFStat
2011-10-17 11:27:40
zlibsuballoc - lepsze zarządzanie pamięcią dla biblioteki zlib

Drobnica przygotowana na potrzeby Hellcore Mailera i paru innych moich projektów.

Problem jest błahy - zlib, rozpoczynając (de)kompresję, alokuje pewną ilość pamięci i dealokuje ją, gdy skończy. Pomnożyć to razy kilka tysięcy i wydajnościowa katastrofa gotowa. zlibsuballoc ma za zadanie tej katastrofie jeśli nie zapobiec, to przynajmniej zredukować ją do akceptowalnego poziomu, bez wpływania na cały program.

Powered by:
Hellcore Mailer - polski program pocztowyOpera Web BrowserFreeBSD - The Power to Serve!Slackware
RSSy:
Sidekick:
Projekty:
O autorze:
Zobacz:
Kategorie:
Archiwum:
Szukaj: