上下文切换与cache内容处理

一. 为什么要缓存同步

同一进程可以同时在多个内核上执行(如果是多线程的),并且可以在进程之间共享内存,因此无论上下文切换发生什么,缓存同步都是不可避免的。

二. 处理器如何查找缓存

当处理器在高速缓存中查找内存位置时,如果存在MMU,则它可以使用该位置的物理或虚拟地址(有时甚至使用两者的组合,但这在这里并不重要)。

三. 上下文切换与使用物理地址查找的缓存

使用物理地址,无论哪个进程访问该地址都可以共享内容。因此,无需在上下文切换期间使缓存内容无效。如果两个进程映射具有不同属性的同一物理页面,则由MMU(充当MPU(内存保护单元))处理。物理寻址缓存的缺点是MMU必须位于处理器和缓存之间,因此缓存查找速度很慢。L1缓存几乎从不物理寻址;更高级别的缓存可能是。

四. 上下文切换与使用虚拟地址查找的缓存

相同的虚拟地址可以表示不同进程中的不同内存位置。因此,对于虚拟寻址的缓存,处理器和操作系统必须配合以确保进程将找到正确的内存。有几种常用技术。操作系统提供的上下文切换代码可能会使整个缓存无效。这是正确的,但代价很高。某些CPU体系结构在其高速缓存行中有空间供ASID(地址空间标识符)使用,该ID是进程ID的硬件版本,也由MMU使用。这样可以有效地将缓存项与不同进程分开,这意味着映射同一页面的两个进程将具有同一物理页面的不一致视图(通常会有一个特殊的ASID值指示共享页面),但是如果未在映射它们的所有进程中将它们映射到相同的地址,则需要刷新它们。如果操作系统注意不同的进程使用不重叠的地址空间(这违反了使用虚拟内存的某些目的,但有时可以做到),则缓存行将保持有效。

五.处理器如何查找TLB

大多数具有MMU的处理器也具有TLB。TLB是从虚拟地址到物理地址的映射的缓存。在物理寻址的缓存中查找之前,请先咨询TLB,以便在可能的情况下快速确定物理地址。处理器可以在TLB查找完成之前开始高速缓存查找——因为通常可以从地址的中间位(确定高速缓存行中的偏移量的位与确定页的位之间)识别候选高速缓存行。

如果发生高速缓存命中,则虚拟寻址的高速缓存会绕过TLB,尽管在未命中的情况下,处理器可能会在查询高速缓存时启动TLB查找。

六.上下文切换与TLB管理

必须在上下文切换期间管理TLB本身。如果TLB条目包含ASID,则它们可以保留在原位;如果操作系统的ASID的含义已更改(例如,因为进程已退出),则操作系统仅需要刷新TLB条目。

如果TLB条目是全局的,则在切换到其他上下文时必须使它们无效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

denglin12315

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值