Hardware Prefetch硬件预取

硬件预取(Hardware Prefetch)

在讨论 L1/L2 缓存部分的时候,我不得不另外再拿出一个 Intel 额外加入的特性来讨论。 如果您记忆犹新的话,不难想起早在 1999 年二月 Pentium III 发布的时候,Intel 就推出了'流式'的 SIMD 扩展指令集。而 SSE 的流式位实际上就是以 Pentium III 预取指令来表示,该功能可使在处理器核心实际要求前先将数据预先读入缓存中。

这些指令仍旧保留在 Pentium 4 的指令集中,除此之外, Pentium 4 还有硬件预取的机制,使得这些动作皆可自动完成。 这块新的处理单元可辨认 Pentium 4 核心执行软件的数据存取样本,因此可'猜测'下次会被处理的数据,然后将这些数据预先载入缓存中。

这个过程有点类似硬盘的缓存算法,因此,您大概也知道在一些情况下这种机制可提供的性能提升是非常可观的。 在处理器的使用上,尤其在应用大量的数据数组情况下, Pentium 4 的硬件预取将大幅加速执行效能。

进入执行管道(Execution Pipeline)─Pentium 4 的追踪缓存

Intel Pentium 4 Instruction Decoder

我们的代码已经过系统总线、L1 及 L2 缓存等,现在就要进入 Pentium 4 的执行路径。你可能也想到 Pentium 4 并未使用L1 指令缓存,而是以更精巧的方式来处理。因此,在这里我想先解释 L1 指令缓存糟糕的一面。

在 Pentium III 或 Athlon 处理器中,都有一块 L1指令缓存。 代码会先被放入此块缓存中,直到要真正被处理单元执行时才会取出。 这项动作于代码进入解码单元(decoder unit)时完成,以Athlon 为例,该处理器包含3个 '直接路径' 与3个 '向量路径'的解码器,这些解码器可将代码转译成处理器执行单元可直接执行的'运算码'(如前所述)。 利用这种过程有几个缺点,首先某些 x86 指令非常复杂,因此经由缓慢或是'向量路径'解码器,需耗费太多的时间来解码,最糟的情况下所有解码单元忙于解码复杂指令,以致于阻碍处理器的执行管道。 另一个问题则是 x86 指令可能会重复执行,如在小循环的代码中,这样一来每当这些代码进入执行路径一次就得再编码一次,重复浪费好多时间。 软件分支跳跃在解码阶段开始管道排序的,也是具有L1 指令缓存的处理器另一个头痛的情况。

Pentium 4 利用精巧的执行追踪缓存就不会遭致上述的问题。 一旦您了解这个机制,您就会知道追踪缓存的观念其实是很简单的。 虽然它运用较多的硅晶资源,也需花费更多的设计技巧来将旧有的 L1 指令缓存设计,取代成如 Pentium 4 的追踪缓存。 基本上,'执行追踪缓存'只不过是在解码器底下的的 L1 指令缓存。 它看起来的确比较复杂,不过您如果理解上述基本的含意,您就会知道运用追踪缓存所带来的优点为何。

摘自:http://www.tomshardware.com/cn/303,review-303-6.html


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值