根据关于内存分段的维基百科文章,x86 处理器在硬件中进行分段边界检查。是否有任何系统可以在软件中进行边界检查?如果是这样,这会产生什么样的开销?在硬件实现中,有没有办法跳过边界检查以避免惩罚(如果有惩罚)?
问问题
96 次
1 回答
0
除了段边界检查和内存映射查找之外,所有现代语言都在软件中进行边界检查。一项基准表明开销约为 0.5%。这是为稳定性和安全性付出的小小代价。
486 可以在一个周期内加载一个内存位置,而 CPU 在片上处理方面做得更好,因此分段边界检查根本不可能有任何开销。
尽管如此,您仍然可以简单地在 64 位模式下运行:“处理器在 64 位模式下运行时不执行段限制检查” (英特尔的开发人员手册,3.2.4)。
于 2014-06-18T23:30:15.483 回答