5.2 软件预读

本文探讨了软件预读机制的历史、实现方式及其在处理器性能优化中的作用。通过预读指令,可以在处理器实际需要数据前发起读取请求,减少存储器访问延迟,提高任务执行效率。非阻塞、不引发异常的预读指令是关键,但需注意预读距离参数以确保数据及时到达。虽然软件预读可能导致代码膨胀和缓存污染,但硬件预读能有效解决这些问题,成为优化研究的焦点。
摘要由CSDN通过智能技术生成

软件预读机制由来已久,首先实现预读指令的处理器是Motorola88110处理器,这颗处理器首先实现了Touch Load指令,这条指令是PowerPC处理器dcbt指令[4]的前身。后来绝大多数处理器都采用这类指令进行软件预读,Inteli486处理器中使用Dummy Read指令,这条指令也是后来x86处理器中PREFETCHh[5]指令的雏形。

使用软件预读指令可以在处理器真正需要数据之前,向存储器预先发出读请求,这个预读请求不需要等待数据真正到达存储器之后,就可以执行完毕,以实现存储器访问与处理器运算同步进行,从而提高了任务的整体执行效率。

除了专有指令外,普通的读指令也可以用作预读,如Non-BlockingLoad指令。这个读指令与Prefetch指令最大的区别是,这些指令不仅将数据引入Cache层次结构,而且会将结果写入某个寄存器,这类指令也被称为Binding Prefetch。与此对应,在微架构中专门设置的Prefetch指令被称为Non-Binding Prefetch指令。

Prefetch指令需要采用Non-BlockingNon-Exception-Generating方式实现。Non-Blocking较易理解,因为在一个使用Blocking Cache的微架构中,没有使用Prefetch指令的任何必要。在微架构中,一个简单实现<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值