cache控制器设计实验

上传人:第*** 文档编号:32683390 上传时间:2018-02-12 格式:DOCX 页数:7 大小:1.03MB
返回 下载 相关 举报
cache控制器设计实验_第1页
第1页 / 共7页
cache控制器设计实验_第2页
第2页 / 共7页
cache控制器设计实验_第3页
第3页 / 共7页
cache控制器设计实验_第4页
第4页 / 共7页
cache控制器设计实验_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《cache控制器设计实验》由会员分享,可在线阅读,更多相关《cache控制器设计实验(7页珍藏版)》请在金锄头文库上搜索。

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 之间的连接信号

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号