首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >硬件预取器预取单个块还是多块?

硬件预取器预取单个块还是多块?
EN

Stack Overflow用户
提问于 2013-11-17 17:49:19
回答 1查看 316关注 0票数 1

从与硬件预取相关的信息来看,硬件预取方案有3种类型的硬件预取,

  1. 错过的预取器:如果块n有误取,那么它将预取块(n+1)。顾名思义,如果块n没有遗漏,则此预取器将不会预取块(n+1)。此外,只预取单个块。
  2. 标记预取器:对于每个块,一个标记是关联的,与上面的预取器相反,每当访问块n时,这个预取器总是预取块(n+1)。
  3. K级预取器:预取n+1,n+2,.n+k块

在另一个链接中,硬件预取器的定义说,当硬件检测到一个步长时,它会激活,它预先根据步长预取块以停止失速。

现在,我的怀疑如下

根据硬件预取器对步长的检测,硬件预取器在步长距离上将预取块。

的问题是是硬件预取器,预取1块还是2块,还是没有任何块?

让我举一个例子。假设我访问0,8,16,24,....Hardware预取器将检测到8的步长。

现在它是只预取块8,16,24还是预取所有块0,1,2,...8根据预取器的程度为K=8第3类预取器

如果硬件预取器只预取0、8、16、24,那么稍后由于硬件预取而不影响其他块的访问,否则将影响其他块的访问时间1、2、3、7。

在这里,我将随机访问0,8,16,24之后的任何一个街区,这样就不会有可探测的步幅。

任何链接或帮助都将受到高度赞赏。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-11-17 20:20:36

基于非单位步长的预取器将按给定步长而不是预取中间块进行提取。非单元预取的目的是避免预取未使用的块造成过多的缓存污染和带宽浪费,因此预取就好像检测到了单位步长是不合适的。

足够复杂的预取器几乎可以提供多个跨步序列,因此第二个序列(例如,1、9、.)可以检测到并在继续沿第一个序列预取的同时启动预取。硬件根据过去的行为来预测未来。如果第一个序列之外的行为是随机的,则硬件无法准确地预测其他块将很快被访问。(软件预取可以通知硬件此类预期行为。)

此外,不同的预取引擎和策略可能存在于不同级别的缓存中。这将主要影响取前距离(以补偿接近内存的访问的更大延迟),但离处理器较远的预取引擎也可能更能容忍延迟(因此可以应用更聪明、更大的存储和逻辑开销;缓存污染也不那么重要,因为外部各级缓存具有更大的容量和相关性)。(在内存控制器中,活动DRAM行中的预取可能比随机访问便宜,特别是当这种预取避免使用只读取半个完整突发的burst chop时。)

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

https://stackoverflow.com/questions/20034052

复制
相关文章

相似问题

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