
Një studim mbi 11 zbatime të ndryshme të CPU-ve x86_64 zbulon se numëruesit harduerikë të performancës nuk japin gjithmonë rezultate të sakta dhe deterministe. Edhe në mjedise rreptësisht të kontrolluara, ngjarje si instruksionet e përfunduara shfaqin ndryshime mes ekzekutimeve dhe numërim mbi vlerën e pritshme.
Këto devijime në njësitë e monitorimit të performancës (PMU) krijojnë vështirësi për sistemet që kërkojnë determinizëm të rreptë, përfshirë riprodhimin determinist të ekzekutimit dhe bibliotekat e fijeve deterministe. Nga ngjarjet e shqyrtuara, vetëm pak rezultuan mjaftueshëm deterministe për t’u përdorur pa përshtatje në këto mjedise.
Në makinat e testuara, instruksioni iret, që shërben për kthimin nga një ndërprerje, duket se numërohet si instruksion i hapësirës së përdoruesit, megjithëse ekzekutohet në hapësirën e kernelit. Ngjarjet që nuk e numërojnë iret, si degëzimet me kusht dhe operacionet e përfunduara të ruajtjes në memorie, rezultuan deterministe.
Një shqyrtim më i kufizuar i sistemeve ARM, IA64, POWER dhe SPARC gjeti më shumë determinizëm te ngjarjet e numëruesve të tyre. Studimi shqyrton edhe mënyra për të anashkaluar kufizimet e x86_64, por konstaton se në shumë raste kjo nuk është e mundur pa riprojektimin arkitekturor të PMU-së.
Burimi: Lobsters (Programming) — lexoni artikullin e plotë në anglisht.

