ICS cache lab总结
这个lab分为两部分:
part A模拟实现一个cache,替换策略为LRU,大概200-300行左右,支持命令行输入。
part B实现三个矩阵转置,对miss数目由要求。满分要求为
M | N | miss |
---|---|---|
32 | 32 | 300 |
64 | 64 | 1300 |
67 | 61 | 2000 |
part A
个人觉得有几个注意点:
1.题目没有规定cache的大小,所以要用指针动态分配内存C语言没有new和delete,所以要自己malloc和free分配释放内存。
2.注意要实现最近使用策略,我是使用一个全局变量记录“时间”来实现的。
3.注意地址可能超过int范围,要开long long记录地址!
part B
直接映射缓存,经计算发现容量为32 blocks,block size=8 elements。
大致思路是看看数据在cacha分布,减少冲突地分块,再用8个临时变量利用cache特性减少miss地批量读。
32×32
cache存下8行,所以分割为8*8的矩阵块。那么8 *8矩阵块在cache里面恰好没有冲突。miss最小。
64×64
首先本题没有32 *32那么显然,