用于嵌入式代码生成的循环的最佳寄存器分配

David J. Kolson, Alexandru Nicolau, N. Dutt, Ken Kennedy
{"title":"用于嵌入式代码生成的循环的最佳寄存器分配","authors":"David J. Kolson, Alexandru Nicolau, N. Dutt, Ken Kennedy","doi":"10.1145/224486.224494","DOIUrl":null,"url":null,"abstract":"One of the challenging tasks in code generation for embedded systems is register assignment. When more live variables than registers exist, some variables are necessarily accessed from data memory. Because loops are typically executed many times and are often time-critical, good register assignment in loops is exceedingly important, since accessing data memory can degrade performance. The issue of finding an optimal register assignment to loops, one which minimizes the number of spills between registers and memory, has been open for some time. In this paper, we address this issue and present an optimal, but exponential, algorithm which assigns registers to loop bodies such that the resulting spill code is minimal. We also show that a heuristic modification performs as well as the exponential approach on typical loops from scientific code.","PeriodicalId":162434,"journal":{"name":"Proceedings of the Eighth International Symposium on System Synthesis","volume":"87 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1995-09-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"13","resultStr":"{\"title\":\"Optimal register assignment to loops for embedded code generation\",\"authors\":\"David J. Kolson, Alexandru Nicolau, N. Dutt, Ken Kennedy\",\"doi\":\"10.1145/224486.224494\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"One of the challenging tasks in code generation for embedded systems is register assignment. When more live variables than registers exist, some variables are necessarily accessed from data memory. Because loops are typically executed many times and are often time-critical, good register assignment in loops is exceedingly important, since accessing data memory can degrade performance. The issue of finding an optimal register assignment to loops, one which minimizes the number of spills between registers and memory, has been open for some time. In this paper, we address this issue and present an optimal, but exponential, algorithm which assigns registers to loop bodies such that the resulting spill code is minimal. We also show that a heuristic modification performs as well as the exponential approach on typical loops from scientific code.\",\"PeriodicalId\":162434,\"journal\":{\"name\":\"Proceedings of the Eighth International Symposium on System Synthesis\",\"volume\":\"87 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"1995-09-13\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"13\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Proceedings of the Eighth International Symposium on System Synthesis\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/224486.224494\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the Eighth International Symposium on System Synthesis","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/224486.224494","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 13

摘要

在嵌入式系统的代码生成中,寄存器分配是一个具有挑战性的任务。当活动变量多于寄存器时,必须从数据内存中访问一些变量。因为循环通常要执行很多次,而且通常是时间关键型的,所以在循环中良好的寄存器分配非常重要,因为访问数据内存会降低性能。为循环找到一个最优的寄存器分配,使寄存器和内存之间的溢出数量最小化,这个问题已经存在一段时间了。在本文中,我们解决了这个问题,并提出了一种最优的,但指数的算法,该算法将寄存器分配给循环体,从而使产生的溢出代码最小。我们还表明,启发式修正在科学代码的典型循环上的表现与指数方法一样好。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
查看原文
分享 分享
微信好友 朋友圈 QQ好友 复制链接
本刊更多论文
Optimal register assignment to loops for embedded code generation
One of the challenging tasks in code generation for embedded systems is register assignment. When more live variables than registers exist, some variables are necessarily accessed from data memory. Because loops are typically executed many times and are often time-critical, good register assignment in loops is exceedingly important, since accessing data memory can degrade performance. The issue of finding an optimal register assignment to loops, one which minimizes the number of spills between registers and memory, has been open for some time. In this paper, we address this issue and present an optimal, but exponential, algorithm which assigns registers to loop bodies such that the resulting spill code is minimal. We also show that a heuristic modification performs as well as the exponential approach on typical loops from scientific code.
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
自引率
0.00%
发文量
0
期刊最新文献
Industrial experience using rule-driven retargetable code generation for multimedia applications Synthesis of pipelined DSP accelerators with dynamic scheduling WWW based structuring of codesigns System level verification of video and image processing specifications A comprehensive estimation technique for high-level synthesis
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
已复制链接
已复制链接
快去分享给好友吧!
我知道了
×
扫码分享
扫码分享
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1