• 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。

  • 相关阅读:
    打开知识大门,电大搜题助您迈向成功
    从零开始使用 Astro 的实用指南
    SpringBoot配置连接两个或多个数据库
    数据库主键设计中自增ID和Guid的比较
    VMware&ESXI虚拟机黑群晖7.2 正式版 (懒人包)
    Redis集群模式
    vite项目运行后只显示主机地址
    快速删除B站的关注列表
    19岁少年黑客控制超过25辆特斯拉,车载系统真的安全吗
    elementplus el-table(行列互换)转置
  • 原文地址:https://blog.csdn.net/hanmo22357/article/details/127835769