ImageVerifierCode 换一换
格式:DOC , 页数:7 ,大小:1.03MB ,
资源ID:10477875      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-10477875.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Cache控制器设计实验.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

Cache控制器设计实验.doc

1、实验 3 Cache 控制器设计1实验目的(1) 掌握 Cache 控制器的原理及其设计方法。(2) 熟悉 FPGA 应用设计及 EDA 软件的使用。(3) 熟悉 Vivado 软件的使用及 FPGA 应用设计。2实验原理Cache 是介于 CPU 和主存之间的小容量存储器,包括管理在内的全部功能由硬件实现,对程序员是透明的,在一定程度上解决了 CPU 和主存之间的速度差异。与主存容量相比,Cache 的容量很小,它保存的内容只是内存内容的一个子集,且 Cache 与主存的数据交互以块为单位。把主存中的块放到 Cache 中时必须把主存地址映射到 Cache 中,即确定位置的对应关系,并采用硬

2、件实现,以便 CPU 给出的访存地址能够自动变换成 Cache 地址。由于程序访问的局部性,使得主存的平均读出时间接近 Cache 的读出时间,大大提高了 CPU的访存效率。地址映射方式有全相联方式、直接相联方式、组相联方式,本实验采用的是直接方式,这种变换方式简单而直接,硬件实现很简单,访问速度也比较快,但是块的冲突率比较高。其主要原则是:主存中一块只能映象到 Cache 的一个特定的块中。假设主存的块号为 B,Cache 的块号为 b,则它们之间的映象关系可以表示为:b = B mod Cb 其中,Cb 是 Cache 的块容量。设主存的块容量为 Mb,区容量为 Me,则直接映象方法的关系

3、如图 3.19 所示。把主存按 Cache 的大小分成区,一般主存容量为 Cache 容量的整数倍,主存每一个分区内的块数与 Cache 的总块数相等。直接映象方式只能把主存各个区中相对块号相同的那些块映象到 Cache 中同一块号的那个特定块中。例如,主存的块 0只能映象到 Cache 的块 0 中,主存的块 1 只能映象到 Cache 的块 1 中,同样,主存区 1 中的块 Cb(在区 1 中的相对块号是 0)也只能映象到 Cache 的块 0 中。根据上面给出的地址映象规则,整个 Cache 地址与主存地址的低位部分是完全相同的。图 1 直接相联映像方式直接映象方式的地址变换过程如图 1

4、 所示,主存地址中的块号 B 与 Cache 地址中的块号 b 是完全相同的。同样,主存地址中的块内地址 W 与 Cache 地址中的块内地址 w 也是完全相同的,主存地址比 Cache 地址长出来的部分称为区号 E。图 2 直接相联地址变换在程序执行过程中,当要访问 Cache 时,为了实现主存块号到 Cache 块号的变换,需要有一个存放主存区号的小容量存储器,这个存储器的容量与 Cache 的块数相等,字长为主存地址中区号 E 的长度,另外再加一个有效位。在主存地址到 Cache 地址的变换过程中,首先用主存地址中的块号去访问区号存储器(按地址访问) 。把读出来的区号与主存地址中的区号

5、E 进行比较,根据比较结果和与区号在同一存储字中的有效位情况作出处理。如果区号比较结果相等,有效位为1,则 Cache 命中,表示要访问的那一块已经装入到 Cache 中了,这时 Cache 地址(与主存地址的低位部分完全相同)是正确的。用这个 Cache 地址去访问 Cache,把读出来的数据送往 CPU。其他情况均为 Cache 没有命中,或称为 Cache 失效,表示要访问的那个块还没有装入到Cache 中,这时,要用主存地址去访问主存储器,把读出来的一个字送往 CPU,同时,把包括被访问字在内的一块都从主存储器中读出来,送往 Cache 的相应块。Cache 和 CPU 以及存储器的连

6、接如图 3 所示,本实验要在 FPGA 中实现 Cache 及其地址变换逻辑(也叫 Cache 控制器) ,采用直接相联地址变换,只考虑 CPU 从 Cache 读数据,不考虑 CPU 写回数据的情况。Cache 控制器顶层模块如图 4 所示,主存地址为 A7A0,共 8 位,区号 E 取 3 位,这样Cache 地址还剩 5 位,所以 Cache 容量为 32 个单元,块号 B 取 3 位,那么 Cache 分为 8 块,块内地址 W 取 2 位,则每块为 4 个单元。图 4 中,WCT 为写 Cache 块表信号,CLR 为系统总清零信号,A7A0 为 CPU 访问内存的地址,M 为 Ca

7、che 失效信号,CA4CA0 为 Cache 地址,MD7MD0 为主存送 Cache 的数据,D7D0 为 Cache 送 CPU 数据,T2 为系统时钟,RD 为 CPU 访问内存读信号,LA1 和 LA0 为块内地址。图 3Cache 系统图图 4 Cache 控制器顶层模块图3实验内容(1)在 Vivado 软件中,使用 D 触发器作为存储一个二进制代码的存储单元,设计一个 8位的存储单元模块,按照基于硬件描述语言的设计流程输入该电路,进行编译、仿真验证后生成存储单元模块供上层设计调用。(2)根据对实验原理的描述,使用这个 8 位的存储单元构成一个 32*8 位的 Cache 存储体

8、,并在 Vivado 软件中实现该电路,进行编译、仿真验证后生成 Cache 存储体模块供上层调用。(3)参照上面两步,在 Vivado 软件中实现一个 4 位的存储单元模块;然后使用这个位存储单元构成一个 8*4 位的区表存储器,用来存放区号和有效位。由图 2 可知,还需要实现一个区号比较器,如果主存地址的区号和区表中相应单元中的区号相等,且有效位为,则 Cache 命中,否则 Cache 失效,标志位为 M,M 为 0 时表示 Cache 失效。最后,编译、仿真验证后生成区表存储器模块供上层调用。(4)当 Cache 命中时,就将 Cache 存储体中相应单元的数据送往 CPU,这个过程比

9、较简单;当 Cache 失效时,需要将主存中相应块中的数据读出写入 Cache 中,这样 Cache 控制器就要产生访问主存储器的地址和主存储器的读信号,由于每块占 4 个单元,所以需要连续访问 4 次主存,这就需要一个低地址发生器。在 Vivado 软件中,按照基于 VerilogHDL 的设计流程输入一个 2 位计数器,用于产生低 2 位地址 0011,进行编译、仿真验证后生成低地址发生器模块供上层调用。(5)将产生的低 2 位地址和 CPU 给出的高 6 位地址组合起来,形成访问主存储器的地址,M 可以作为主存的读信号。这样在时钟 T2 的控制下,就可以将主存中相应的块写入 Cache的相应块中,最后再修改区表。在 Vivado 软件中,参照图 4 给出的 Cache 存储器顶层模块,按照基于 VerilogHDL 的设计流程输入该电路,进行编译、仿真验证后生成编程文件。思考题:对比分析全(组)相联映射与直接映射方式的区别。如何在 Vivado 软件中实现全(组)相联映射方式的 Cache 存储器? 顶层模块图CPU 读内存时 和 CACHE MEM 之间的连接信号

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报