• 计算cache hit rate例题


    题目

    cache结构分析

    1kB blocks => 2^10 B => b=10
    1MB Mem => 2^20 B => m=20
    16kB cache with 1kB block => 16(2^4)set => s=4
    m = s+t+b => t=6

    分析line1的冲突情况

    注意,此手稿中分析了i和total,但sol说这两个变量会放入register

    i和total不需要考虑访存,sol说会放入register

    除此之外,还需要考虑i和total的冲突情况
    i的地址是0x18000 = 0b 0001, 1000, 0000, 0000, 0000
    set为0, tag为0001,10,根据上述int[]分析,会和最后的set为0的int元素(A[4096]的tag为0001,01)冲突,覆盖该int元素
    total的地址是0x18004 = 0b 0001, 1000, 0000, 0000, 0100
    set为0, tag为0001,10.与i相同。

    关于line2的代码

    for (i=0; i < NUM_INTS; i += 128) {
      total += A[i];
    }
    

    分析line2的冲突情况

    1. 代码共三个io操作,read A[], read total, write total

    2. A[]数组每两个相隔128的元素有相同的set/tag

    逐步分析

    由于step=128的访问A数组,共64个元素,后32个元素和前32个元素冲突,但是在相邻的一组数据中,(例如A[0]和A[128], A[256]和A[512])之间有相同tag和set,不会冲突

    读A[0],与cache中的A[4096]冲突

    读A[128], 与A[0]相同,hit

    读A[256], 与A[4096+256]冲突

    读A[512], hit

    省略部分步骤

  • 相关阅读:
    sql_mode=only_full_group_by引起group by查询报错问题
    在Eclipse下使用ant,build项目报jpeg does not exist
    JAVAEE面试之Hibernate缓存
    页面加载中效果实现
    鼠标滑过显示图片
    VSFTP配置参数详解
    FTP上传核心方法
    java对File的特殊操作
    在mybatis下使用日期比对出错
    Linux常用命令
  • 原文地址:https://www.cnblogs.com/ijpq/p/16417341.html
Copyright © 2020-2023  润新知