• Cache减少失效开销例题:(请求字处理)


    题目内容

    假设一台计算机具有64个字节的Cache块,采用请求字优先时,Cache需要7个时钟周期取8字节的请求字,剩余的块中每8个字节需要1个时钟周期进行读取。没有采用请求字优先时,取第一个8字节需要8个周期,剩余的块中每8个字节需要1个时钟周期进行读取。
    (1)假设在一个块取完之前没有其他访存请求,计算两种情况下的平均失效开销。
    (2)Opteron每次流出两条Load指令,每条指令需4个周期流出,假设后续指令将要读取当前装载数据剩余块中的8个字节,比较两种情况下的平均失效开销。

    题目分析

    (1)在不采用请求字处理技术的情况下,平均失效开销为

    8+7×1=15(时钟周期)

    采用请求字处理技术后,平均失效开销为

    7(时钟周期)

    这里之所以只需要7个时钟周期,是因为CPU将请求字调入只需要7个周期,而将块中其他内容调入Cache并不算入失效开销中
    由此可以看出采用了请求字处理技术后Cache的平均失效开销明显下降。
    (2)出于便于理解的角度,首先分析采用请求字优先的情况。
    采用请求字优先时,CPU只需要取出请求字后即可继续进行其他工作。本题中,如果采用请求字技术,那么CPU在一条指令中只需要读出请求字之后就可以进行另一条指令的流出(但是不能进行另外一条指令的读访存操作)。
    因此,本题中如果采用请求字优先技术,那么CPU每次接收到第一条Load指令的请求字,即可对第二条Load指令进行流出操作。第二条指令的流出操作时间段于第一条Load指令读取块中剩余内容的时间重叠,因此在指令很多的情况下相当于可以省略每条指令读指令的4个周期。
    在请求字优先的条件下,执行完一条LOAD指令的时间为:

    7+7×1=14(时钟周期)

    在不采用请求字优先的情况下,执行一条LOAD指令的时间为:

    8+7×1+4=19(时钟周期)

    可以看出,通过采用请求字优先技术,使得平均失效开销为不采用前的14/19。

  • 相关阅读:
    Spark性能调优案例-优化spark估计表大小失败 和 小表关联 走 broadcast join
    吐血总结!50道Python面试题集锦
    常用邮件服务器支持端口及加密方法实测
    kindle自定义屏保之自定义字帖
    python包合集-shutil
    python项目实战——银行取款机系统(六)
    Selenium+Python系列 - 开发环境搭建
    详解Unity中的Nav Mesh新特性|导航寻路系统 (一)
    HTML 中使用 JavaScript 的具体方式
    SpringBoot底层注解总结
  • 原文地址:https://blog.csdn.net/hanmo22357/article/details/127835769