华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】

本实验是华科大三的核心课计算机组成原理的配套实验,设计非常良心,而且理论课和实验课都在mooc上有全套视频,地址为计算机组成原理_中国大学MOOC,实验所用的软件资源/测试电路也全部开放,地址为:计算机硬件系统设计_中国大学MOOC

存储系统实验

字库电路

要求我们用4个12位地址线的小rom代替一个地址线为14位的大rom,并对其中的数据进行正确的载入。
首先是地址线和片选信号的连接,这个比较简单,就是多余的高位的地址部分作多路选择器的输入端,地址信号是低12位:华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】_第1张图片
然后考虑怎么把数据载入到这四个小rom中。
因为小rom的地址是12位,即4K容量,所以取代的这个大rom的内存应该划分成4K的小块,4K = 1 0000 0000 0000 = 1000H 即首地址按1000H递增。
选中第一块-m1147
其他都类似的复制粘贴进小rom中即可。

MIPS RAM设计

这个实验看似没什么,其实难度非常大,有几个细节要特别注意。
整体来看,实验要求我们根据MODE信号,WE信号,字节地址信号给出存储器访问的相关控制信号。虽然是一个组合电路设计,但是需要对内存地址有着比较深的理解。

  • 字地址,也就是32位地址,由4个字节组成,因此按字节编址的话,地址末尾一定是00。而半字地址,末尾一定是0。本实验的输入没有做严格限定,要求我们相应MODE下对地址进行对齐。
  • load信号一直有效,而写信号只有当WE=1时才有效。
  • 32位数据由四片rom并行工作给出,16位选高两片或低两片,8位则只需1片rom工作。
  • 给出的地址是字节地址,因此为了选中相应的rom,需要取出后两位判断;为了取出相应的半字,需要对第二低位进行判断。
  • 送入写入端的数据,根据MODE和Din的相关位生成

首先,给出整体的架构图:
华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】_第2张图片

由于是字节地址,所以地址取2-11位,每片rom的地址都是一样的(因为这里是位拓展)。ld信号悬空,表示时刻有数据输出。str信号由各rom的 w i w_i wi信号相与给出,表示仅当写模式下,且该rom需要参与写时才有效。输入数据和输出数据分别由相应的通道给出,方便后续控制。

然后可以连好 D o u t Dout Dout华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】_第3张图片

  • 读一个字节时,由最低两位来选中对应字节。
  • 读两个字节时,由第二低位来确定在哪个组,然后输出半字。

下一步我们可以确定输入数据的取值,即根据mode的值来确定 D i n Din Din
华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】_第4张图片

  • 如果 M o d e = 0 Mode=0 Mode=0,即写入32位数据,那么4片rom分别对应着第0,1,2,3个字节的数据。
  • 如果 M o d e = 1 Mode=1 Mode=1,即写入8位数据,那么只需选中1片rom进行写操作,且写入的数据一定是Din的最低字节。这里我们为4片rom都连 D i n Din Din的最低位,具体的片选由 w i w_i wi决定
  • 如果 M o d e = 2 Mode=2 Mode=2,【重点】要加载2个字节的内容,由于要对齐,所以只可能放高2片rom或低2片rom,而不管选高还是选低,它们相对的位置是确定的,就是说选01,0肯定是低位,选23,3肯定还是高位。因此0和2连上Din低8位,1和3连上高8位,具体片选由 w i w_i wi决定

最难的就是确定 w i w_i wi的值,不仅和地址有关,还跟mode有关。
我们先使用一个解码器,根据mode的值来给出对应的信号:
华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】_第5张图片

考虑一下什么情况下这个rom需要写入数据。32位写入时肯定所有rom都要写入;16位写入时,只有当前片被选中才需要写入;单字节写入时,只有指定了当前片才需要写入。于是可以构造以下的电路:
华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】_第6张图片
华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】_第7张图片

  • 或门表示任一模式下被选中即有效。
  • 当写入字节时,我们需要判断地址的低两位是否指向了本rom
  • 当写入16位时,需要判断地址的第二低位是否指向了该rom所在的组

MIPS Regfile

这个实验就相对比较简单,只需按地址选通相应的寄存器输出,以及根据写地址的值选通对应的寄存器的enable端。

华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】_第8张图片
1号寄存器恒为零,所以Data端连了一个常数0. 寄存器的enable端由WE信号和片选信号相与给出。片选信号如何获得呢?可以用一个解码器:
华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】_第9张图片

然后即可由读地址选择对应的寄存器的值输出:
华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】_第10张图片

4路组相连Cache

先给出地址划分的逻辑。由于地址是16位,数据块32位,留出两位的offset,4路组相连,留出1位选在哪个组,这样就只剩13位做标记位tag了。

  • 这里 t = 13 , s = 1 , b = 2 t = 13, s = 1, b = 2 t=13,s=1,b=2
    -m778

因此可以根据地址线得到相应的tag位,offset位和index位。华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】_第11张图片

  • 有多少组,相应的就有log倍的index位,也就是说index是来表示组别的
  • offset表示字节偏移,就是32位的块具体取哪个字节
    于是我们可以确定输出逻辑:
    华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】_第12张图片

Cache槽的组件主要有valid标志,Tag标志,淘汰计数,数据位和其他的控制信息。对于读信号,我们需要控制8个三态门根据片选信号将单个槽的数据输出到slot,这里将读片选定为 L i L_i Li,写信号定为 w r i t e i write_i writei。每次读信号有效时代表命中,淘汰计数器清零。而每次写入新的数据时,淘汰计数器也要清零,这里为了逻辑简便,将计数器的 D i n Din Din设为全0,实现写入时计数器清零。写入数据时,valid位一定会变为1,tag位肯定变为写入的tag标记,数据副本由Blk给出。

  • 具体构造如下:
    华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】_第13张图片

然后就是读逻辑,华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】_第14张图片读数据首先得该位有效,所以将各tag位和valid位拼接起来,和tag拼1来比较,结果由解复用器送给相应的读有效位。

写入逻辑比较复杂,要区分槽满和不满两种情况。槽不满的话,可以直接挑一个空槽进行数据的写入,否则就得选一个位进行淘汰,再写入。如何挑空余的槽是难点,最简单的应该是用一个优先编码器:华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】_第15张图片
如图,valid位代表有数据,将其取反后连到优先编码器的输入端,输出地址最高的那个空槽。若所有的输入端都为0,代表槽满了,就要用淘汰算法替代一个旧数据。因此可将槽满信号连到编码器的enable output端。

若所有的槽满,则需要淘汰逻辑来觉得要淘汰的槽,根据LRU算法需比较其计数器值的大小:华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】_第16张图片

最后一步为写入逻辑华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】_第17张图片

  • 只有当块数据有效,且未命中时才需要给出写信号
  • 用一个解复用器将需要写的信号传递到各槽
  • 选择信号高位为index,低位为具体的槽号【槽号只用两位】
  • 根据槽是否满选择写入空槽号和淘汰槽号

你可能感兴趣的:(华中科技大学计算机组成原理实验记录 存储实验【偏难,画完约8h】)