全相联cache设计

在这里插入图片描述

实验目的
学生掌握 cache 实现的三个关键技术:数据查找,地址映射,替换算法,熟悉译码器,多路选择器,寄存器的使用,能根据不同的映射策略在 Logisim 平台中用数字逻辑电路实现 cache 机制。

上图给出了一个在 Logisim 中设计完成的 cache 系统自动测试电路,为简化实验设计,这里所有 cache 模块均为只读 cache(类似指令 cache),无写入机制。电路左侧计数器与存储器部分会在时钟驱动下逐一生成地址访问序列给 cache 模块。计数器模块的使能端受命中信号驱动,缺失时使能端无效,计数器不计数,等待系统将待请求数据所在块从二级存储器中调度到 cache 后才能继续计数。cache 与二级存储器之间通过块交换逻辑实现数据块交换,由于二级存储器相比 cache 慢很多,所以一次块交换需要多个时钟周期才能完成,cache 模块判断数据块准备好的逻辑是 blkready 信号有效,该信号有效且时钟到来时,cache 将块数据从 BlkDin 端口一次性载入到对应cache 行缓冲区中,此时 cache 数据命中,直接输出请求数据,解锁计数器使能端,继续访问下一个地址。
自动测试电路会逐一取出 trace 存储器中的主存地址去访问存储系统,并逐一将数据从 cache 模块取出送校验和计算电路计算校验和,计数器值为256时会停止电路运行,此时所有存储访问的 cache 命中率将会在右上角 LED 数码管显示。本次实验的主要任务就是设计该电路的核心模块 cache 子电路。
结合引脚功能说明,实现全相联

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
相联缓存是一种高度灵活的缓存设计,它的原理是将缓存中的每个数据块与所有可能的缓存行进行匹配。这种设计可以实现最大的缓存命中率,因为缓存中的任何数据块都可以放置在任何缓存行中,从而消除了行冲突。但是,由于需要比较所有缓存行,所以相联缓存的查找时间比较长,而且需要更大的开销来实现。 下面是相联缓存的设计原理: 1. 缓存由多个缓存行组成,每个缓存行包含一个标记、一个有效位和一个数据块。 2. 标记用于唯一标识该缓存行所存储的数据块,有效位用于指示该缓存行是否包含有效数据块。 3. 当CPU需要访问内存中的数据时,它首先检查缓存中是否有该数据块。如果有,则称之为命中,CPU可以直接访问缓存中的数据。如果没有,则称之为未命中,CPU必须从内存中加载该数据块到缓存中,然后再进行访问。 4. 在相联缓存中,所有数据块都可以存储在任何缓存行中。因此,在进行查找时,CPU需要比较每个缓存行的标记来确定数据块是否存储在该缓存行中。 5. 当缓存中的所有缓存行都被使用时,CPU必须选择一个缓存行来替换其中的数据块。在相联缓存中,可以选择任何一个缓存行来替换,因为所有缓存行都可以存储任何数据块。通常采用一些替换策略来选择替换的缓存行,例如最近最少使用(LRU)。 总之,相联缓存可以提供最大的缓存命中率,但需要更长的查找时间和更大的开销。同时,为了提高性能,需要采用一些替换策略来选择替换的缓存行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值