7.3 Hardware Prefetching 《Speculative Execution in High Performance Computer Architectures》

简介:
  7.3 Hardware Prefetching 《Speculative Execution in High Performance Computer Architectures》
本节主要介绍硬件数据预取,数据预取分为2个端,处理器端和内存端,处理器端主要在主要在L1或者L2实现预取,内存端主要在内存控制器中实现。预取算法也有3种:顺序或者步长预取( Stride and Sequential Prefetching),关联性预取( Correlation Prefetching),内容关联性预取( Content-Based Prefetching
顺序或者步长预取(Stride and Sequential Prefetching
预取的规则:
1.如果请求的line在cache中,不会发生任何操作。
2.如果line没有被cache,但是在stream buffer的头部找到,line就会被启动到cache中,head会被移动到下一个。
3.如果都没有,会分配一个新的stream buffer。并且该line的预取被放入stream buffer
缺点,有可能引起途中一样的问题,有重复的stream buffer 出现原因是非单元步长的访问。
关联性预取(Correlation Prefetching
为了解决顺序或者步长预取,引入了关联性预取,关联性预取引入了一个关联表,里面记录了某个miss之后的联系miss。当miss再次发生就回去关系表中的所有的行。
预取分为了2中1.base方式,2.Relicated方式。看图上的步骤就清楚2个的区别了。
缺点:需要大量的缓存来存这个关系表,大概需要1-2M的SRAM十分的昂贵
内容关联性预取(Content-Based Prefetching
这种方式,是通过检查内容查看是不是指针或者地址,并且感觉马上就要被访问了,如果是就预取进来。
启发规则是根据cacheline分为多个4字节的块。块被分为了好几个段
1.比较miss地址和其他地址的compare bits,如果匹配预取的是同一个基地址的数据。
2.compare bits都是0,就检查filter bits如果非0,就是相似的地址。若compare bits都是1 filter bits 都是0 也认为是相似地址
3.align bits 要为00 才可以
缺点:预取是根据上一次的miss的内容来发送的,所以有可能会变成每个都miss的情况,间接矩阵和以下标的形式并不起作用

    本文转自 Fanr_Zh 博客园博客,原文链接:http://www.cnblogs.com/Amaranthus/archive/2013/05/31/3110178.html ,如需转载请自行联系原作者






相关文章
|
算法 Linux Shell
SGAT丨Single Gene Analysis Tool
SGAT丨Single Gene Analysis Tool
《Improving Real-Time Performance by Utilizing Cache Allocation Technology》电子版地址
Improving Real-Time Performance by Utilizing Cache Allocation Technology
87 0
《Improving Real-Time Performance by Utilizing Cache Allocation Technology》电子版地址
|
人工智能 Linux vr&ar
High-performance RISC-V Processor Xuantie C908
High-performance RISC-V Processor Xuantie C908
429 0
High-performance RISC-V Processor Xuantie C908
PAT (Advanced Level) Practice - 1096 Consecutive Factors(20 分)
PAT (Advanced Level) Practice - 1096 Consecutive Factors(20 分)
147 0
PAT (Advanced Level) Practice - 1107 Social Clusters(30 分)
PAT (Advanced Level) Practice - 1107 Social Clusters(30 分)
146 0
|
SQL 编译器 API
Efficiently Compiling Efficient Query Plans for Modern Hardware 论文解读
这应该是SQL查询编译的一篇经典文章了,作者是著名的Thomas Neumann,主要讲解了TUM的HyPer数据库中对于CodeGen的应用。 在morsel-driven那篇paper 中,介绍了HyPer的整个执行框架,会以task为单位处理一个morsel的数据,而执行的处理逻辑(一个pipeline job)就被编译为一个函数。这篇paper则具体讲如何实现动态编译。
455 0
Efficiently Compiling Efficient Query Plans for Modern Hardware 论文解读
|
Java 虚拟化 C++
Stack based vs Register based Virtual Machine Architecture
进程虚拟机简介 一个虚拟机是对原生操作系统的一个高层次的抽象,目的是为了模拟物理机器,本文所谈论的是基于进程的虚拟机,而不是基于系统的虚拟机,基于系统的虚拟机可以用来在同一个平台下去运行多个不同的硬件架构的操作系统,常见的有kvm,xen,vmware等,而基于进程的虚拟机常见的有JVM,PVM(python虚拟机)等,java和python的解释器将java和python的代码编译成JVM和P
3688 0
Uptime And Monitoring Strategies For Cloud-Based E-Commerce Applications/Websites
In order to keep your e-commerce site functioning properly, you need to take positive steps to monitor both its performance and functionality.
1522 0