{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,7,1]],"date-time":"2025-07-01T11:40:03Z","timestamp":1751370003936,"version":"3.41.0"},"reference-count":31,"publisher":"Association for Computing Machinery (ACM)","issue":"2","content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Archit. Code Optim."],"published-print":{"date-parts":[[2025,6,30]]},"abstract":"<jats:p>\n            A variety of code analyzers, such as\n            <jats:monospace>IACA<\/jats:monospace>\n            ,\n            <jats:monospace>uiCA<\/jats:monospace>\n            ,\n            <jats:monospace>llvm-mca<\/jats:monospace>\n            , or\n            <jats:monospace>Ithemal<\/jats:monospace>\n            , strive to statically predict the throughput of a computation kernel. Each analyzer is based on its own simplified CPU model reasoning at the scale of a basic block. Facing this diversity, evaluating their strengths and weaknesses is important to guide both their usage and their enhancement.\n          <\/jats:p>\n          <jats:p>\n            We present\n            <jats:monospace>CesASMe<\/jats:monospace>\n            , a fully-tooled solution to evaluate code analyzers on C-level benchmarks composed of a benchmark derivation procedure that feeds an evaluation harness. We conclude that memory-carried data dependencies are a major source of imprecision for these tools. We tackle this issue with\n            <jats:monospace>staticdeps<\/jats:monospace>\n            , a static analyzer extracting memory-carried data dependencies, including across loop iterations, from an assembly basic block. We integrate its output to\n            <jats:monospace>uiCA<\/jats:monospace>\n            , a state-of-the-art code analyzer, to evaluate\n            <jats:monospace>staticdeps<\/jats:monospace>\n            \u2019 impact on a code analyzer\u2019s precision through\n            <jats:monospace>CesASMe<\/jats:monospace>\n            .\n          <\/jats:p>","DOI":"10.1145\/3715125","type":"journal-article","created":{"date-parts":[[2025,2,11]],"date-time":"2025-02-11T11:27:26Z","timestamp":1739273246000},"page":"1-23","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["CesASMe and Staticdeps: static detection of memory-carried dependencies for code analyzers"],"prefix":"10.1145","volume":"22","author":[{"ORCID":"https:\/\/orcid.org\/0009-0000-8411-4432","authenticated-orcid":false,"given":"Th\u00e9ophile","family":"Bastian","sequence":"first","affiliation":[{"name":"Universit\u00e9 Grenoble Alpes","place":["Grenoble, France"]},{"name":"Inria Centre de Recherche Grenoble Rhone-Alpes","place":["Grenoble, France"]}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-8711-9976","authenticated-orcid":false,"given":"Hugo","family":"Pompougnac","sequence":"additional","affiliation":[{"name":"Inria Centre de Recherche Grenoble Rhone-Alpes","place":["Grenoble, France"]}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0004-7978-0608","authenticated-orcid":false,"given":"Alban","family":"Dutilleul","sequence":"additional","affiliation":[{"name":"\u00c9cole Normale Sup\u00e9rieure de Rennes","place":["Rennes, France"]}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-6589-9956","authenticated-orcid":false,"given":"Fabrice","family":"Rastello","sequence":"additional","affiliation":[{"name":"Inria Centre de Recherche Grenoble Rhone-Alpes","place":["Grenoble, France"]},{"name":"Universit\u00e9 Grenoble Alpes","place":["Grenoble, France"]}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2025,6,30]]},"reference":[{"key":"e_1_3_3_2_2","doi-asserted-by":"publisher","unstructured":"Andreas Abel and Jan Reineke. 2020. nanoBench: A low-overhead tool for running microbenchmarks on x86 systems. In 2020 IEEE International Symposium on Performance Analysis of Systems and Software (ISPASS). 34\u201346. DOI:10.1109\/ISPASS48437.2020.00014","DOI":"10.1109\/ISPASS48437.2020.00014"},{"key":"e_1_3_3_3_2","doi-asserted-by":"publisher","DOI":"10.1145\/3297858.3304062"},{"key":"e_1_3_3_4_2","doi-asserted-by":"publisher","DOI":"10.1145\/3524059.3532396"},{"key":"e_1_3_3_5_2","volume-title":"AMD64 Architecture Programmer\u2019s Manual, Volume 2","author":"AMD","year":"2023","unstructured":"AMD 2023. AMD64 Architecture Programmer\u2019s Manual, Volume 2. AMD."},{"key":"e_1_3_3_6_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-04519-1_1"},{"key":"e_1_3_3_7_2","volume-title":"PLuTo: A Practical and Fully Automatic Polyhedral Parallelizer and Locality Optimizer","author":"Bondhugula Uday","year":"2007","unstructured":"Uday Bondhugula, J. Ramanujam, and P. Sadayappan. 2007. PLuTo: A Practical and Fully Automatic Polyhedral Parallelizer and Locality Optimizer. Technical Report OSU-CISRC-10\/07-TR70. The Ohio State University."},{"key":"e_1_3_3_8_2","doi-asserted-by":"publisher","DOI":"10.1109\/IISWC47752.2019.9042166"},{"key":"e_1_3_3_9_2","doi-asserted-by":"publisher","DOI":"10.1109\/CGO53902.2022.9741289"},{"key":"e_1_3_3_10_2","first-page":"97-110","volume-title":"Proceedings of the GCC Developers\u2019 Summit","author":"Diego Novillo","year":"2007","unstructured":"Novillo Diego. 2007. Memory SSA-a unified approach for sparsely representing memory operations. In Proceedings of the GCC Developers\u2019 Summit. Citeseer, 97-110 pages."},{"key":"e_1_3_3_11_2","doi-asserted-by":"publisher","DOI":"10.1145\/773473.178264"},{"key":"e_1_3_3_12_2","volume-title":"Performance Debugging Toolbox for Binaries: Sensitivity Analysis and Dependence Profiling","author":"Gruber Fabian","year":"2019","unstructured":"Fabian Gruber. 2019. Performance Debugging Toolbox for Binaries: Sensitivity Analysis and Dependence Profiling. Ph. D. Dissertation. Universit\u00e9 Grenoble Alpes. Retrieved from http:\/\/www.theses.fr\/2019GREAM0712019GREAM071"},{"key":"e_1_3_3_13_2","doi-asserted-by":"publisher","DOI":"10.1109\/CGO57630.2024.10444771"},{"key":"e_1_3_3_14_2","doi-asserted-by":"publisher","DOI":"10.1145\/192007.192012"},{"key":"e_1_3_3_15_2","article-title":"Intel Architecture Code Analyzer (IACA)","author":"Corporation Intel","year":"2012","unstructured":"Intel Corporation. 2012. Intel Architecture Code Analyzer (IACA). Retrieved May 02, 2020 from https:\/\/software.intel.com\/en-us\/articles\/intel-architecture-code-analyzer\/","journal-title":"R"},{"key":"e_1_3_3_16_2","volume-title":"Intel\u00ae 64 and IA-32 Architectures Software Developer\u2019s Manual, Volume 1","author":"Intel Corporation","year":"2023","unstructured":"Intel Corporation 2023. Intel\u00ae 64 and IA-32 Architectures Software Developer\u2019s Manual, Volume 1. Intel Corporation."},{"key":"e_1_3_3_17_2","doi-asserted-by":"publisher","DOI":"10.2307\/2332226"},{"key":"e_1_3_3_18_2","doi-asserted-by":"publisher","DOI":"10.1109\/PMBS49563.2019.00006"},{"key":"e_1_3_3_19_2","article-title":"perf: Linux Profiling with Performance Counters","author":"Kernel Linux","year":"2025","unstructured":"Linux Kernel. 2025. perf: Linux Profiling with Performance Counters. Retrieved February 15, 2025 from http:\/\/perf.wiki.kernel.org\/index.php\/Main_Page","journal-title":"R"},{"key":"e_1_3_3_20_2","unstructured":"Charith Mendis Alex Renda Saman Amarasinghe and Michael Carbin. 2019. Ithemal: Accurate portable and fast basic block throughput estimation using deep neural networks. (2019) 4505\u20134515. https:\/\/proceedings.mlr.press\/v97\/mendis19a.html"},{"key":"e_1_3_3_21_2","doi-asserted-by":"publisher","DOI":"10.1016\/S1571-0661(04)81042-9"},{"key":"e_1_3_3_22_2","doi-asserted-by":"publisher","DOI":"10.1145\/1250734.1250746"},{"key":"e_1_3_3_23_2","doi-asserted-by":"publisher","DOI":"10.1109\/HPCA.2014.6835952"},{"key":"e_1_3_3_24_2","unstructured":"PoCC. 2025. PoCC the Polyhedral Compiler Collection. Retrieved February 15 2025 from https:\/\/www.cs.colostate.edu\/pouchet\/software\/pocc\/"},{"key":"e_1_3_3_25_2","unstructured":"Louis-No\u00ebl Pouchet and Tomofumi Yuki. 2016. PolyBench\/C: The Polyhedral Benchmark Suite Version 4.2. Retrieved from http:\/\/polybench.sf.net"},{"key":"e_1_3_3_26_2","article-title":"Capstone Engine","author":"Quynh Nguyen Anh","year":"2025","unstructured":"Nguyen Anh Quynh and the Capstone collaborators. 2025. Capstone Engine. Retrieved February 15, 2025 from https:\/\/www.capstone-engine.org\/","journal-title":"R"},{"key":"e_1_3_3_27_2","doi-asserted-by":"publisher","DOI":"10.1145\/3563288"},{"key":"e_1_3_3_28_2","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2003.1253244"},{"key":"e_1_3_3_29_2","doi-asserted-by":"publisher","DOI":"10.1145\/3123939.3123951"},{"key":"e_1_3_3_30_2","article-title":"LLVM Machine Code Analyzer","author":"Corporation Sony","year":"2025","unstructured":"Sony Corporation and LLVM Project. 2025. LLVM Machine Code Analyzer. Retrieved February 15, 2025 from https:\/\/llvm.org\/docs\/CommandGuide\/llvm-mca.html","journal-title":"R"},{"key":"e_1_3_3_31_2","doi-asserted-by":"publisher","DOI":"10.1147\/rd.111.0025"},{"key":"e_1_3_3_32_2","unstructured":"WikiChip. 2021. Intel Details Golden Cove: Next-Generation Big Core For Client and Server SoCs. Retrieved February 15 2025 from https:\/\/fuse.wikichip.org\/news\/6111\/intel-details-golden-cove-next-generation-big-core-for-client-and-server-socs\/"}],"container-title":["ACM Transactions on Architecture and Code Optimization"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3715125","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,7,1]],"date-time":"2025-07-01T11:11:46Z","timestamp":1751368306000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3715125"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,6,30]]},"references-count":31,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2025,6,30]]}},"alternative-id":["10.1145\/3715125"],"URL":"https:\/\/doi.org\/10.1145\/3715125","relation":{},"ISSN":["1544-3566","1544-3973"],"issn-type":[{"type":"print","value":"1544-3566"},{"type":"electronic","value":"1544-3973"}],"subject":[],"published":{"date-parts":[[2025,6,30]]},"assertion":[{"value":"2024-06-29","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-12-29","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-06-30","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}