Logism MIPS Cache的连接
【实验任务】
一、 Cache的直接相连
1、 利用所给的隧道构建八路直接相连的Cache
2、 理解直接相连中主存是怎么映射到Cache中的
二、 Cache全相连
1、 利用所给的隧道构建全相连的Cache
2、 理解全相连中Cache是如何选择正确的数据
三、 Cache的二路组相连
1、 理解组相连和直接相连以及全相连的联系与区别
四、 Cache的四路组相连
1、 理解组相连和直接相连以及全相连的联系与区别
【设计过程、实验心得、意见建议】
一、 Cache的直接相连
实验方法:运用所学的Cache的相连知识,结合MOOC中所讲的连接方式,补全八路Cache直接映射。
实验步骤:
1、 根据要求将16位地址经过分线器分成三组地址:块内偏移、组索引、标记字段

2、 根据分出来的索引字段来选中应该读哪一行

3、 运用三态门对选中的行的标记字段及是否写入过进行输出

4、 运用比较器和与门来检查Cache内存的数据是否是想要的数据,若是则Hit为 1,Miss为0

5、 运用带使能端的数据选择器来以及块内偏移地址来选择输出Cache块内的数据

总电路图:

测试结果:

二、 Cache的全相连
实验方法:运用所学的Cache的相连知识,结合MOOC中所讲的连接方式,补全八路Cache全相连映射。
实验步骤:
1、 将地址分为块内偏移地址和标记字段

2、 比较用八个比较器来比较八个Cache的标记字段和是否命中能与字节地址的标记字段对上

3、 八路Cache本体


4、 若Cache全为空,则用优先编码器实现Cache写入行的选择

5、 若Cache不为空,则需要替换策略,用实验包给出的Max3比较器加上LRU算法选出需要替换的行

6、 当Miss为真的时候进行Cache的写入

7、运用带使能端的数据选择器通过块内偏移地址来选择输出的数据

总电路图:

测试结果:

三、 Cache的二路组相连
实验方法:运用所学的Cache的相连知识,结合MOOC中所讲的连接方式,补全八路Cache二路组相连(注意组相连与直接映射和全相联映射的异同)
实验步骤:
1、 用分离器将地址分为块内偏移、两位组号标记、以及标记字段

2、 用组号索引以及译码器来选择要读取的Cache组

3、 子Cache设计

4、 用两路比较器来选择要读取的Cache行

5、 若Miss则写入数据(提换行位宽为2,所以要经过选择才能传到数据选择器)

6、 用系统给定的Max2比较器以及优先编码器实现空行选择

7、 结合组内偏移地址与Hit选择输出的Cache块内数据

电路图:

测试结果:

四、 Cache的四路组相连
实验方法:运用所学的Cache的相连知识,结合MOOC中所讲的连接方式,补全八路Cache四路组相连(注意组相连与直接映射和全相联映射的异同)
实验步骤:
1、 用分离器将地址分为块内偏移、一位组号标记、以及标记字段

2、 用组号索引以及译码器来选择要读取的Cache组

3、 子Cache设计

4、 用四路比较器来选择要读取的Cache行

5、 若Miss则写入数据

6、 用比较器以及优先编码器实现空行选择

7、 结合组内偏移地址与Hit选择输出的Cache块内数据

电路图:

测试结果:

本次实验实现了Cache的各种连接方式,主要的难点就是三态门的使用,哪里该用三态门以及什么时候去用(组相连以及直接相连的时候因为有多个子块公用一个标记位所以要加三态门,全相连则不用)。当实现了直接相连和全相连之后,后面的组相连相对来说就很简单了。在二路组相连映射的时候不能直接用一位的比较器来比较产生提换行(可能有相等的情况)