[原创+讨论]goto语句有时存在硬件效率问题吗?



个人理解。goto即jump指令,跳转速度之快。但存在硬件效率问题吗?

以某个CPU架构为例:
CPU---MMU--高速缓存

CPU访问内存时,MMU内存管理单元加载一部分相邻的页内存放入TLB中(为了避免每次都要访问页目录和一级页表的物理内存,TLB也是一种高速缓存,这样提高效率),
然后通过TLB查询到页框地址(即数据/指令存放的真正物理地址),使用该地址去访问物理内存,但为了提高访问速率,设计一块高速缓存,用户提前加载相邻的内存进入高速缓存。这样提高访问效率。
若goto语句跳转的跨度太大,甚至超过了一个TLB中存放的页内存或一个高速缓存的大小,即TLB或高速缓存会反复访问物理内存,降低效率。
注意:TLB/高速缓存 与物理内存的数据一致性同步机制,处理器中已有一整套的解决方案。(当然现在高速缓存和TLB都是M级的,也就没有跳转M级的goto指令,所以现实中可能也不存在硬件效率问题)
待下一篇CPU-MMU-高速缓存交互流程


猜你喜欢

转载自blog.csdn.net/m0_37570820/article/details/80888551