Počítadlo výkonu hardwaru - Hardware performance counter

V počítačích jsou počitadla výkonu hardwaru ( HPC ) nebo počitadla hardwaru sada účelových registrů zabudovaných do moderních mikroprocesorů k ukládání počtů činností souvisejících s hardwarem v počítačových systémech. Pokročilí uživatelé se na tyto čítače často spoléhají při provádění nízkoúrovňových analýz výkonu nebo ladění .

Implementace

Počet dostupných hardwarových čítačů v procesoru je omezený, zatímco každý model CPU může mít mnoho různých událostí, které by vývojář rád změřil. Každý čítač může být naprogramován s indexem typu události, který má být monitorován, jako je chybějící mezipaměť L1 nebo nesprávná předpověď větve.

Jedním z prvních procesorů, který implementoval takové počítadlo a související instrukce RDPMC k přístupu, bylo Intel Pentium , ale nebyly zdokumentovány, dokud Terje Mathisen v Byte July 1994 nenapsal článek o jejich zpětném inženýrství .

V následující tabulce jsou uvedeny některé příklady procesorů a počet dostupných hardwarových čítačů:

Procesor dostupné HW čítače
UltraSparc II 2
Pentium III 2
ARM11 2
AMD Athlon 4
IA-64 4
ARM Cortex-A5 2
ARM Cortex-A8 4
ARM Cortex-A9 MPCore 6
POWER4 8
Pentium 4 18

Versus softwarové techniky

Ve srovnání se softwarovými profilery poskytují hardwarové čítače nízký režijní přístup k množství podrobných informací o výkonu souvisejících s funkčními jednotkami CPU, mezipaměti a hlavní paměti atd. Další výhodou jejich použití je, že obecně nejsou nutné žádné úpravy zdrojového kódu. Typy a významy hardwarových čítačů se však liší od jednoho druhu architektury k druhému kvůli rozdílům v hardwarových organizacích.

Mohou nastat potíže s korelací metrik výkonu na nízké úrovni zpět do zdrojového kódu. Omezený počet registrů pro ukládání čítačů často nutí uživatele provádět více měření, aby shromáždili všechny požadované metriky výkonu.

Vzorkování na základě pokynů

Výstup profilu IBS z CodeAnalyst .

Moderní superskalární procesory plánují a provádějí více pokynů mimo pořadí najednou. Tyto pokyny „za letu“ mohou kdykoli odejít do důchodu, v závislosti na přístupu do paměti, zásahech v mezipaměti, zablokování v potrubí a mnoha dalších faktorech. To může způsobit, že události čítače výkonu budou přiřazeny nesprávným pokynům, což ztěžuje nebo znemožňuje přesnou analýzu výkonu.

AMD zavedlo metody ke zmírnění některých z těchto nevýhod. Například procesory Opteron zavedly v roce 2007 techniku ​​známou jako Instruction Based Sampling (neboli IBS). Implementace IBS od AMD poskytuje hardwarové čítače jak pro načítání vzorkování (přední část superskalárního kanálu), tak pro operační vzorkování (zadní část kanálu). To má za následek diskrétní údaje o výkonu sdružující vyřazené instrukce s „nadřazenou“ instrukcí AMD64.

Viz také

Reference