Pin (počítačový program) - Pin (computer program)
Vývojáři | Intel |
---|---|
Stabilní uvolnění | 3.17 / 26. listopadu 2020 |
Operační systém | Linux, Okna, OSX |
Plošina | IA-32, x86-64, Intel Xeon Phi |
Typ | Rámec přístrojové techniky, Profiler |
Licence | Proprietární, Pin je poskytován zdarma pro nekomerční použití pod Licenční smlouva s koncovým uživatelem pro produkty Intel® Software Development Products, část 2.2 Licence pro nekomerční typy licencí. |
webová stránka | www |
Kolík je platforma pro vytváření analytických nástrojů. Pinový nástroj zahrnuje přístrojové vybavení, analýzu a zpětné volání rutiny. Instrumentační rutiny se volají, když se má spustit kód, který ještě nebyl znovu zkompilován, a umožňují vložení analytických rutin. Rutiny analýzy jsou volány, když je spuštěn kód s nimi spojený. Rutiny zpětného volání jsou volány pouze při splnění konkrétních podmínek nebo při výskytu určité události. Pin poskytuje rozsáhlé aplikační programovací rozhraní (API) pro vybavení na různých úrovních abstrakce, od jedné instrukce po celý binární modul. Podporuje také zpětná volání pro mnoho událostí, jako je načtení knihovny, systémová volání, signály / výjimky a události vytvoření vlákna.
Pin provádí instrumentaci převzetím kontroly nad programem hned po načtení do paměti. Pak just-in-time překompiluje (JIT) malé části binárního kódu pomocí kolíku těsně před spuštěním. Do překompilovaného kódu jsou přidány nové pokyny k provedení analýzy. Tyto nové pokyny pocházejí z Pintoolu. K získání co nejnižší režijní doby běhu a využití paměti se používá velké množství optimalizačních technik. Od června 2010 je průměrná základní režie společnosti Pin 30 procent (bez spuštění pintool).[1]
Funkce
Režimy přístrojové techniky
Pin podporuje dva režimy instrumentace zvané režim JIT a režim sondy. Režim JIT podporuje všechny funkce Pin, zatímco režim Probe podporuje omezenou sadu funkcí, ale je mnohem rychlejší a nepřidává téměř žádnou režii době běhu programu. Režim JIT používá kompilátor just-in-time k překompilaci veškerého programového kódu a vložení instrumentace, zatímco režim Probe používá kód trampolíny pro přístrojové vybavení.
Nezávislost platformy
Kolík byl navržen pro nástroj přenosnost a navzdory tomu, že JIT kompiluje z jednoho ISA do stejného ISA (a nepoužívá jediný mezilehlé zastoupení pro celý kód), většina z jeho API jsou architektura a operační systém nezávislý. Byl také navržen tak, aby byl přenosný sám a pečlivě izoloval kód specifický pro platformu od obecného kódu, což umožňuje rychlé přizpůsobení Pin na nové platformy. Přibližně polovina kódu je obecná a zbytek je závislý buď na architektuře, nebo OS.[2]
Optimalizace
Pin používá mnoho technik k optimalizaci přístrojového a analytického kódu pomocí technik, jako je vložka, analýza živosti a chytrý zaregistrovat rozlití. Pin provádí tyto optimalizace automaticky, kdykoli je to možné, aniž by uživatelé museli vkládat další kód, který by umožňoval vložení. Některé optimalizace přirozeně stále vyžadují rady uživatelů a některé struktury kódu se snadněji vkládají než jiné. Přímé propojení sekcí jitted kódu, tzv. Technika trasování propojení, a registrovat závazné odsouhlasení, který minimalizuje rozlití a přemapování registru, se také používají.
Snadnost použití
Pin API a implementace se zaměřují na to, aby se nástroje pro Pin snadno psaly. Pin přebírá plnou odpovědnost za zajištění, že kód instrumentace z nástroje pin neovlivní stav aplikace. API také umožňuje přístrojovému kódu požadovat od Pin mnoho informací. Například kód instrumentace v nástroji pin může použít Pin API k získání adresy paměti, ke které přistupuje instrukce, aniž by bylo nutné podrobně zkoumat instrukci.
Nástroje
Existuje mnoho Pintoolů, které se používají pro různé úkoly.
- Součásti Intel Parallel Studio intenzivně využívat pintooly pro ladění paměti, analýzu výkonu, multithreading analýza správnosti a příprava paralelizace.
- Emulátor vývoje softwaru Intel je pintool, který umožňuje vývoj aplikací pomocí rozšíření instrukční sady, která nejsou aktuálně implementována v hardwaru.
- CMP $ IM je profiler mezipaměti vytvořený pomocí čepu.[3]
- PinPlay umožňuje zachycení a deterministické přehrání běhu vícevláknových programů pod pinem. Zachycení běhu programu pomáhá vývojářům překonat nedeterminismus, který je vlastní multithreadingu.[4]
- Pin sám přichází s mnoha ukázkovými nástroji, které využívají jeho schopností. Tyto nástroje jsou licencovány na základě licence podobné BSD.
Alternativy k Pin Tool
Existuje mnoho dalších nástrojů ke shromažďování využití zdrojů spuštěných programů v systému, například Bell Lab Strapon nástroj a Dyninst nástroj atd. Bell Lab Tento nástroj využívá technologii připoutání, která spouští nástroj ke shromažďování zdrojů současně s programem, ale tento nástroj je kompatibilní pouze s programy, které umožňují souběžné spuštění jiných programů.[5] Dále používá nástroj Dyninst binární přepis spustitelných a implementovatelných příkazů uvnitř programu pro kontrolu využití zdrojů a je velmi efektivní. Je však velmi nestabilní, protože se jedná o relativně nový nástroj, který selhává ve velkých programech.[6] Nakonec Intel Nástroj Pin používá statickou binární instrumentaci a spouští program jako součást sebe sama při sledování všech svých zdrojů.[7] Tento přístup je vhodnější pro antivirus, protože může snadno spouštět všechny procesy pod sebou a může zabít programy, pokud dosáhnou maximálního přiděleného limitu definovaného antivirem.
Viz také
Poznámky
- ^ Analýza paralelních programů pomocí Pin
- ^ Pin: Building Customized Program Analysis Tools with Dynamic Instrumentation
- ^ CMP $ im: Pin-Based On-The-Fly Multi-Core Cache Simulator
- ^ PinPlay: rámec pro deterministické přehrávání a reprodukovatelnou analýzu paralelních programů
- ^ Gupta, Chandrashekhar (2007). „Budování bezpečných produktů a řešení. Technický deník Bell Labs“. doi:10.1002 / bltj.20247. Citovat deník vyžaduje
| deník =
(Pomoc) - ^ Lee, Schulz (2007). "Dynamická binární instrumentace a agregace dat na rozsáhlých systémech". International Journal of Parallel Programming.
- ^ Bach, M .; Charney, M .; Cohn, R .; Demikhovsky, E .; Devor, T .; Hazelwood, K .; Jaleel, A .; Luk, Chi-Keung; Lyons, G. (březen 2010). Msgstr "Analýza paralelních programů pomocí PIN". Počítač. 43 (3): 34–41. doi:10.1109 / MC.2010.60. ISSN 0018-9162.
Reference
- Moshe Bach; Mark Charney; Robert Cohn; Elena Demikhovsky; Tevi Devor; Kim Hazelwood; Aamer Jaleel; Chi-Keung Luk; Gail Lyons; Harish Patil & Ady Tal (březen 2010). „Analýza paralelních programů pomocí kódu PIN“. Počítač. IEEE. 43 (3): 34–41. doi:10.1109 / mc.2010.60. Archivovány od originál dne 29. 12. 2010. Citováno 2010-07-05.
- Chi-Keung Luk; Robert Cohn; Robert Muth; Harish Patil; Artur Klauser; Geoff Lowney; Steven Wallace; Vijay Janapa Reddi a Kim Hazelwood (červen 2005). „Pin: Vytváření přizpůsobených nástrojů pro analýzu programů s dynamickou instrumentací“ (PDF). Sborník konferencí ACM SIGPLAN 2005 o návrhu a implementaci programovacího jazyka. Chicago, Illinois, USA: ACM. 190–120.
- Alex Skaletsky; Tevi Devor; Nadav Chachmon; Robert Cohn; Kim Hazelwood; Vladimir Vladimirov; Moshe Bach (duben 2010). „Dynamická programová analýza aplikací Microsoft Windows“ (PDF). Mezinárodní sympozium o analýze výkonu softwaru a systémů (ISPASS). White Plains, NY. s. 2–12.
externí odkazy
- Pin: dynamický binární přístrojový nástroj domovská stránka
- Pinheads, seznam adresátů pro komunitu uživatelů Pin
- Detekce chyb čtení a zápisu (a la Valgrind)
- Pin ++, rámec pro vytváření Pintools