存储系统设计(HUST)--第7关:2路组相联cache设计

第7关:2路组相联cache设计

创作不易,还希望各位大佬支持一下 

👍 点赞,你的认可是我创作的动力! 

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富! 

链接:https://pan.baidu.com/s/1dIMlSrRySWRjNY6aLRlI0g 
提取码:n7cd

实验目的

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

实验内容

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

电路框架

storage.circ

创作不易,还希望各位大佬支持一下 

👍 点赞,你的认可是我创作的动力! 

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富! 

链接:https://pan.baidu.com/s/1dIMlSrRySWRjNY6aLRlI0g 
提取码:n7cd

 

设计高速缓存的过程需要考虑多个因素,包括缓存大小、块大小、映像方式等。以下是三种映像方式的设计过程: 1. 直接相连映像 设计直接相连映像的步骤如下: - 确定高速缓存大小和块大小,以及主存地址的位数。 - 确定每个块在高速缓存中的存储位置,这个位置通常由块的地址的低位决定。 - 当需要访问某个数据块时,将其地址的低位作为索引值,在高速缓存中查找对应位置。如果该位置为空,就需要从主存中读取对应块,并将其存放到高速缓存中。 2. 全相连映像 设计全相连映像的步骤如下: - 确定高速缓存大小和块大小,以及主存地址的位数。 - 对于每个数据块,在高速缓存中选择一个空闲位置存储,这个位置可以是任意一个位置。 - 当需要访问某个数据块时,在高速缓存中搜索是否有对应位置,如果有则返回数据,否则需要从主存中读取对应块,并将其存放到高速缓存中。 3. 2组相连映像 设计2组相连映像的步骤如下: - 确定高速缓存大小和块大小,以及主存地址的位数。 - 将高速缓存分成若干组,每个组包含两个缓存位置。 - 当需要访问某个数据块时,将其地址的低位分成两部分,一部分作为组索引,另一部分作为块内偏移,在该组中查找是否有对应的位置。如果有,则返回数据,否则需要从主存中读取对应块,并将其存放到高速缓存中。 以上是三种映像方式设计的基本步骤,实际上设计高速缓存还需要考虑多种因素,比如替换算法、写回策略等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值