首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么不为快速系统增加一倍的寄存器数量?

为什么不为快速系统增加一倍的寄存器数量?
EN

Stack Overflow用户
提问于 2015-04-30 16:43:44
回答 2查看 63关注 0票数 1

我们面临两个事实: 1. Syscalls是昂贵的。程序应该将其在堆栈上的状态、陷阱保存到内核上,从而导致缓存和TLB失效等。2.随着新技术(如14 of )的出现,芯片上有足够的空间。

为什么不拥有两套登记簿和两个TLB呢?一个用于用户空间进程,另一个用于内核。每个syscall只需将处理器从用户空间registers+tlb切换到内核,这应该是非常快的。

很明显我漏掉了什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-07 13:54:06

一些处理器体系结构有影子寄存器。例如,Z80在中断时切换到备用寄存器文件。限制寄存器文件大小的因素之一是时钟周期。如果重命名表太大,则会减缓前端的管道阶段。

TLB通常具有较高的命中率,因为每个条目对应于整个页面,而且它们通常可以标记多个地址空间的条目。对于您的第一个系统调用,TLB丢失的开销可能很高,但是如果您正在进行大量的系统调用,您的TLB很可能会为内核内存保留映射。

票数 2
EN

Stack Overflow用户

发布于 2015-05-01 03:12:16

寄存器用于交换系统调用中的值。有些系统有内核模式堆栈,因此不能使用堆栈来交换值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29973361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档