G. Polito, Nahuel Palumbo, Soufyane Labsari, Stéphane Ducasse, P. Tesone
{"title":"口译员寄存器的自动本地化:提高高效口译员的表现","authors":"G. Polito, Nahuel Palumbo, Soufyane Labsari, Stéphane Ducasse, P. Tesone","doi":"10.1145/3532512.3532518","DOIUrl":null,"url":null,"abstract":"Language interpreters are generally slower than (JIT) compiled implementation because they trade off simplicity for performance and portability. They are nevertheless still important in modern Virtual Machines (VMs): e.g.,, not all code is hot and arrives at later compilation stages. One of their under-studied features in the literature is the idea of interpreter registers: interpreter variables that are critical to the efficient execution of the interpreter loop. In this paper, we present an automatic interpreter transformation called autolocalisation. Autolocalisation makes interpreter registers local to the interpreter loop to keep them in registers. It moreover makes those values available for other routines in the VM runtime automatically when required. We build autolocalization in Slang, Pharo’s VM generator framework, and evaluate the performance of several benchmarks on different configurations localizing IP, SP, FP, and their combinations. We show that localizing critical interpreters yields performance improvements of up to 1.92x on x86-64. Moreover, we show that the performance of our automatic approach is comparable to the previous approach handwritten in the VM while making it easier to read, modify and follow.","PeriodicalId":245819,"journal":{"name":"Companion Proceedings of the 6th International Conference on the Art, Science, and Engineering of Programming","volume":"51 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2022-03-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"1","resultStr":"{\"title\":\"Interpreter Register Autolocalisation: Improving the Performance of Efficient Interpreters\",\"authors\":\"G. Polito, Nahuel Palumbo, Soufyane Labsari, Stéphane Ducasse, P. Tesone\",\"doi\":\"10.1145/3532512.3532518\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Language interpreters are generally slower than (JIT) compiled implementation because they trade off simplicity for performance and portability. They are nevertheless still important in modern Virtual Machines (VMs): e.g.,, not all code is hot and arrives at later compilation stages. One of their under-studied features in the literature is the idea of interpreter registers: interpreter variables that are critical to the efficient execution of the interpreter loop. In this paper, we present an automatic interpreter transformation called autolocalisation. Autolocalisation makes interpreter registers local to the interpreter loop to keep them in registers. It moreover makes those values available for other routines in the VM runtime automatically when required. We build autolocalization in Slang, Pharo’s VM generator framework, and evaluate the performance of several benchmarks on different configurations localizing IP, SP, FP, and their combinations. We show that localizing critical interpreters yields performance improvements of up to 1.92x on x86-64. Moreover, we show that the performance of our automatic approach is comparable to the previous approach handwritten in the VM while making it easier to read, modify and follow.\",\"PeriodicalId\":245819,\"journal\":{\"name\":\"Companion Proceedings of the 6th International Conference on the Art, Science, and Engineering of Programming\",\"volume\":\"51 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2022-03-21\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"1\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Companion Proceedings of the 6th International Conference on the Art, Science, and Engineering of Programming\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/3532512.3532518\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Companion Proceedings of the 6th International Conference on the Art, Science, and Engineering of Programming","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/3532512.3532518","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Interpreter Register Autolocalisation: Improving the Performance of Efficient Interpreters
Language interpreters are generally slower than (JIT) compiled implementation because they trade off simplicity for performance and portability. They are nevertheless still important in modern Virtual Machines (VMs): e.g.,, not all code is hot and arrives at later compilation stages. One of their under-studied features in the literature is the idea of interpreter registers: interpreter variables that are critical to the efficient execution of the interpreter loop. In this paper, we present an automatic interpreter transformation called autolocalisation. Autolocalisation makes interpreter registers local to the interpreter loop to keep them in registers. It moreover makes those values available for other routines in the VM runtime automatically when required. We build autolocalization in Slang, Pharo’s VM generator framework, and evaluate the performance of several benchmarks on different configurations localizing IP, SP, FP, and their combinations. We show that localizing critical interpreters yields performance improvements of up to 1.92x on x86-64. Moreover, we show that the performance of our automatic approach is comparable to the previous approach handwritten in the VM while making it easier to read, modify and follow.