Architectural support for safe software execution on embedded processors

Divya Arora, A. Raghunathan, S. Ravi, N. Jha
{"title":"Architectural support for safe software execution on embedded processors","authors":"Divya Arora, A. Raghunathan, S. Ravi, N. Jha","doi":"10.1145/1176254.1176281","DOIUrl":null,"url":null,"abstract":"The lack of memory safety in many popular programming languages, including C and C++, has been a cause for great concern in the realm of software reliability, verification, and more recently, system security. Despite their limitations, the flexibility, performance, and ease of use of these languages have made them the choice of most embedded software developers. Researchers have proposed various techniques to enhance programs for memory safety; however, they are all subject to severe performance penalties, making their use impractical in most scenarios. In this paper, we present architectural enhancements to enable efficient, memory-safe execution of software on embedded processors. The key insight behind our approach is to extend embedded processors with hardware that significantly accelerates the execution of the additional computations involved in memory-safe execution. Specifically, we design custom instructions to perform various kinds of memory-safety checks and augment the instruction set of a state-of-the-art extensible processor (Xtensa from Tensilica, Inc.) to implement them. We demonstrate the application of the proposed architectural enhancements using CCured, an existing tool for type-safe retrofitting of C programs. The tool uses a type-inferencing engine that is built around strong type-safety theory and is provably safe. Simulations of memory-safe versions of popular embedded benchmarks on a cycle-accurate simulator modeling a typical embedded system configuration indicate an average performance improvement of 2.3 times, and a maximum of 4.6 times, when using the proposed architecture. These enhancements entail minimal (less than 10%) hardware overhead to the base processor. Our approach is completely automated, and applicable to any C program, making it a promising and practical approach for addressing the growing security and reliability concerns in embedded software.","PeriodicalId":370841,"journal":{"name":"Proceedings of the 4th International Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS '06)","volume":"21 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2006-10-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"26","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the 4th International Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS '06)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/1176254.1176281","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 26

Abstract

The lack of memory safety in many popular programming languages, including C and C++, has been a cause for great concern in the realm of software reliability, verification, and more recently, system security. Despite their limitations, the flexibility, performance, and ease of use of these languages have made them the choice of most embedded software developers. Researchers have proposed various techniques to enhance programs for memory safety; however, they are all subject to severe performance penalties, making their use impractical in most scenarios. In this paper, we present architectural enhancements to enable efficient, memory-safe execution of software on embedded processors. The key insight behind our approach is to extend embedded processors with hardware that significantly accelerates the execution of the additional computations involved in memory-safe execution. Specifically, we design custom instructions to perform various kinds of memory-safety checks and augment the instruction set of a state-of-the-art extensible processor (Xtensa from Tensilica, Inc.) to implement them. We demonstrate the application of the proposed architectural enhancements using CCured, an existing tool for type-safe retrofitting of C programs. The tool uses a type-inferencing engine that is built around strong type-safety theory and is provably safe. Simulations of memory-safe versions of popular embedded benchmarks on a cycle-accurate simulator modeling a typical embedded system configuration indicate an average performance improvement of 2.3 times, and a maximum of 4.6 times, when using the proposed architecture. These enhancements entail minimal (less than 10%) hardware overhead to the base processor. Our approach is completely automated, and applicable to any C program, making it a promising and practical approach for addressing the growing security and reliability concerns in embedded software.
在嵌入式处理器上安全软件执行的体系结构支持
在许多流行的编程语言(包括C和c++)中,内存安全性的缺乏已经引起了软件可靠性、验证以及最近的系统安全性领域的极大关注。尽管有其局限性,但这些语言的灵活性、性能和易用性使它们成为大多数嵌入式软件开发人员的选择。研究人员提出了各种技术来提高程序的内存安全性;然而,它们都受到严重的性能损失的影响,因此在大多数情况下使用它们是不切实际的。在本文中,我们提出了架构增强,以实现在嵌入式处理器上高效、内存安全的软件执行。我们的方法背后的关键见解是用硬件扩展嵌入式处理器,这些硬件可以显著加速内存安全执行中涉及的额外计算的执行。具体来说,我们设计了定制指令来执行各种内存安全检查,并增加了最先进的可扩展处理器(来自Tensilica, Inc.的Xtensa)的指令集来实现它们。我们使用ccure(一个用于C程序类型安全改造的现有工具)演示了所提出的架构增强的应用。该工具使用围绕强类型安全理论构建的类型推断引擎,并且可以证明是安全的。在对典型嵌入式系统配置建模的周期精确模拟器上,对流行嵌入式基准测试的内存安全版本进行了模拟,结果表明,当使用所建议的架构时,平均性能提高了2.3倍,最大性能提高了4.6倍。这些增强给基本处理器带来的硬件开销最小(小于10%)。我们的方法是完全自动化的,适用于任何C程序,使其成为解决嵌入式软件中日益增长的安全性和可靠性问题的一种有前途的实用方法。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信