1、阅读实验指导书,然后回答问题。
实验所用的静态存储器由一片 6116(2K*8bit )构成(位于MEM 单元),6116 有三个控制线:CS 表示( 片选线 ) , OE 表示( 读线) , WE 表示( 写线 ) 其功能如实验指导书表 2-1-1 所示,当片选有效CS=(0 )时,OE=(0 ) 时进行读操作,WE=( 0 ) 时进行写操作,本实验将 CS 常接地。
2、根据 SRAM 6116 集成电路的管脚图回答问题。
3、根据存储器实验原理图回答问题。
实验接线图
按表进行
重复上述操作,继续向01H地址单元中写入数据 12H。
再读数据:按动 2次时序单元的 ST 按钮,产生T1、T2节拍后,先关掉地址寄存器门控信号(LDAR=0),关闭 IN 单元的输出(SW_B=1),然后使存储器处于读状态(WR=1,RD=0),此时数据总线上的数即为从存储器当前地址中读出的数据内容。按动2次 ST产生 T3、T4 脉冲,一 个机器周期结束。
(一)本机运行
1、给存储器的 00H 和 01H 地址单元写入数据(数值自定义)。
表 2-1 00H 存储单元写操作实验结果
写操作步骤 |
控制信号状态 |
||||
IN 单元置地址 |
地址信息 |
WR |
RD |
SW_B |
LDAR |
00000000/00H |
1 |
1 |
0 |
0 |
|
地址写入 AR |
地址信息 |
WR |
RD |
SW_B |
LDAR |
00000000/00H |
1 |
1 |
0 |
1 |
|
IN 单元置数据 |
数据信息 |
WR |
RD |
SW_B |
LDAR |
00010001/11H | 1 |
1 |
0 |
0 |
|
数据写入 MEM |
数据信息 |
WR |
RD |
SW_B |
LDAR |
00010001/11H | 0 |
1 |
0 |
0 |
表 2-2 01H 存储单元写操作实验结果
写操作步骤 |
控制信号状态 |
||||
IN 单元置地址 |
地址信息 |
WR |
RD |
SW_B |
LDAR |
00010000/01H |
1 |
1 |
0 |
0 |
|
地址写入 AR |
地址信息 |
WR |
RD |
SW_B |
LDAR |
00010000/01H |
1 |
1 |
0 |
1 |
|
IN 单元置数据 |
数据信息 |
WR |
RD |
SW_B |
LDAR |
00010010/12H |
1 |
1 |
0 |
0 |
|
数据写入 MEM |
数据信息 |
WR |
RD |
SW_B |
LDAR |
00010010/12H |
0 |
1 |
0 |
0 |
2、从存储器的 00H 和 01H 地址单元读出数据。
表 2-3 00H 存储单元读操作实验结果
读操作步骤 |
控制信号状态 |
||||
IN 单元置地址 |
地址信息 |
WR |
RD |
SW_B |
LDAR |
00000000/00H |
1 |
1 |
0 |
0 |
|
地址写入 AR |
地址信息 |
WR |
RD |
SW_B |
LDAR |
00000000/00H |
1 |
1 |
0 |
1 |
|
关闭 IN 单元输出 |
数据信息 |
WR |
RD |
SW_B |
LDAR |
12H |
1 |
1 |
1 |
0 |
|
读出 MEM 数据 |
数据信息 |
WR |
RD |
SW_B |
LDAR |
00010001/12H |
1 |
0 |
1 |
0 |
表 2-4 01H 存储单元读操作实验结果
读操作步骤 |
控制信号状态 |
||||
IN 单元置地址 |
地址信息 |
WR |
RD |
SW_B |
LDAR |
00010000/01H |
1 |
1 |
0 |
0 |
|
地址写入 AR |
地址信息 |
WR |
RD |
SW_B |
LDAR |
00010000/01H |
1 |
1 |
0 |
1 |
|
关闭 IN 单元输出 |
数据信息 |
WR |
RD |
SW_B |
LDAR |
12H |
1 |
1 |
1 |
0 |
|
读出 MEM 数据 |
数据信息 |
WR |
RD |
SW_B |
LDAR |
00010010/12H |
1 |
0 |
1 |
0 |
根据存储器写入数据的时序图,观察数据何时被写入存储器,受哪些信号影响?(个人理解)
观察上图,可知最后一个机器周期的 T2 节拍后,RD 有效的同时存储器输出 11H,说明读 存储器受 RD 信号影响。观察倒数第二个机器周期的 T2 节拍后,地址寄存器门控信号 LDAR 有 效,同时开关 SD17..SD10 已经改为 00H 地址,但是地址寄存器 AR 中的地址直到 T3 时刻上升 沿才发生改变,说明地址寄存器 AR 的写入受 T3 上升沿影响。
2、简述直接地址映像方式的地址变换过程。
如下图所示,主存地址高 位被分成两部分:低c位是指 Cache 的字块地址,高 (t = m-c) 是指主存字块标记,它被记录在建立了对应关系的缓存块的”标记”位中。当缓存接到CPU 送来的主存地址后,只需根据中间 位字段(假设为 0001) 找到 Cache 字块 ,然后根 据字块 的”标记”是否与主存地址的高位相符来判断,若符合且有效位为 “1”(有效位用来识 别Cache 存储块中的数据是否有效,因为有时 Cache 中的数据是无效的,例如,在初始时刻 Cache应该是“空”的,其中的内容是无意义的,表示该 Cache 块巳和主存的某块建立了对应关系(即 己命中),则可根据 位地址从 Cache 中取得信息;若不符合,或有效位为 “0" (即不命中),则从主存读入新的字块来替代旧的字块,同时将信息送往 CPU ,并修改 Cache” 标记"。如果原来有效 位为 “0” ,还得将有效位置成 “1”。
作用:模拟CPU访问存储器的读信号;
指示灯含义:显示
电位,指示灯亮表示 Cache 失效,H2 指示灯变灭表示 Cache 命中;
~
作用:显示Cache送往CPU的数据。
~
作用:显示当前主存数据。
打开实验系统电源,将下载电缆插入扩展单元的 E_JTAG口,把生成的 SOF文件下载到扩 展单元中的 FPGA中。
CPU访问主存地址由 CON单元的 SD17…SD10 模拟给出,如 0000 0001。CPU访问主存的读信号由 CON单元的K7模拟给出,置 K7为低,可以观察到扩展单元上的H2指示灯亮,L7…L0指示灯灭,表示 Cache 失效。此时按动 KK 按钮四次,注意 L15…L8 指示灯的变化情况, 地址会依次加一,L15…L8 指示灯上显示的是当前主存数据,按动四次 KK 按钮后,H2 指示 灯变灭,L7…L0上显示的值即为 Cache 送往 CPU 的数据。
重新给出主存访问地址,如 00000011,H2 指示灯变灭,表示 Cache 命中,说明第 0 块数据已写入 Cache。
将 Cache 的访问结果记录到表 2-5 中。
表 2-5 Cache 访问的实验结果
操作步骤 |
控制信号状态(用 0/1 表示) |
||||
SD17…SD10 置地址 |
地址信息 |
K7 开关 |
H2 指示灯 |
L7…L0 指示灯 |
Cache 是否命中 |
0000 0001 |
0 |
1 |
0000 0000 |
否 |
|
按动 KK 四次 |
地址信息 |
L15…L8 指示灯 |
H2 指示灯 |
L7…L0 指示灯 |
Cache 是否命中 |
0000 0001 |
0100 0100 |
0 |
0010 0010 |
是 |
|
SD17…SD10 置地址 |
地址信息 |
K7 开关 |
H2 指示灯 |
L7…L0 指示灯 |
Cache 是否命中 |
0000 0011 |
0 |
0 |
0100 0100 |
是 |
|
按动 KK 四次 |
地址信息 |
L15…L8 指示灯 |
H2 指示灯 |
L7…L0 指示灯 |
Cache 是否命中 |
0000 0011 |
0100 0100 |
0 |
0100 0100 |
是 |
|
SD17…SD10 置地址 |
地址信息 |
K7 开关 |
H2 指示灯 |
L7…L0 指示灯 |
Cache 是否命中 |
0000 0111 |
0 |
1 |
0000 0000 |
否 |
|
按动 KK 四次 |
地址信息 |
L15…L8 指示灯 |
H2 指示灯 |
L7…L0 指示灯 |
Cache 是否命中 |
0000 0111 | 1000 1000 | 0 |
1000 1000 |
是 |
实验指导书图 2-2-4 中的 Cache table 模块其输入的地址线是 A[7..2],为什么不包括地址线 A[1]和 A[0]?这两根地址线的作用是什么?
Cache table是用来判断cache是否命中的模块,只需要比较tag位(区号 E)和cache地址位(块号B),而不需要比较块内地址,所以就不包括A[1]和 A[0]。A[1]和A[0]是CPU 访问内存的地址的低二位,代表块内地址。A[1]和 A[0]用于产生信号NA[1]和NA[0],当cache命中,M为1时,信号NA[1]=A[1],NA[0]=A[0],NA[1]和NA[0]作为访问cache存储体的块内地址位。当M为0时信号NA[1]和NA[0]与A[1]和 A[0]无关,而是等于计数器产生的LA[1]和LA[0],与高位地址组合在一起成为访问主存的地址。A[0]和A[1]用于指示块内地址,不需要这两根线也能访问对应的cache块.
在本次实验中,自己对存储器的了解更近深了一点。实验以前,只是认为存储器只是用来存储数据、指令的一个空间,CPU对它的操作无非就是简单的读、写操作,在系统内部的实现过程应该都是很简单。但是当自己动手做完这个实验后,发现在自己看来很简单的读、写操作,在处理的时候具有会这么有条不紊,而且其严谨程度令人学习。通过本次实验,自己了解了通过IN单元输入数据,然后将其送入内存空间、将内存空间中的数据取出,送入OUT单元。在数据流动的过程中,每个CPU周期所执行的操作是不一样的。但是有相同点的就是第一步都是先提取指令、放入指令寄存器…在进行上述操作时,数据流的控制由微指令控制。最后通过读取内存单元的数据,对比输入数据,发现一致的时候,觉得计算机的工作方式设计真的厉害,将我们平时常规的操作划分成一套有序的逻辑控制,从而完成我们需要进行的操作。
同时也发现自己还需要学的东西很多,自己很菜。
写一点个人的理解,可能有错误
1.实验1数据读取过程:
这是一个组合逻辑,输入就会有输出,实验台的目的就是将组合逻辑过程化,理解计算机底层原理输入端CON输入信号后,按ST将数据送入地址寄存器,然后再送入MEM的下端,MEN下端是地址上端是数据,通过下方的时序图观察数据的流动过程
2.怎么查看某个地址的数据,先将数据传入地址寄存器,发出读信号给MEM,程序会显示地址中的数据。 通过时序图观察信号是否传入。
3.Cache实验操作解析:实验数据已经烧录到各个模块 比如00000000地址存放的是00010001,可以通过下图来查看: 4.Cache实验按下KK1地址是加多少,这个如果能看到地址对应的数据就好了,我觉得是增加1,给出0000 0000Cahe没有说明cache没有命中,发现没有的时候Cache没有的时候已经去主存里查了,这三块数据写入缓存三次,当读入第四次的时候,发现H2灯灭,这时向地址线分别发送0000 0001(0、1、2、3)发现都能看到数据并且H2灯灭,说明这四块都调入了Cache并且被命中。
5.时钟的作用是把主存的四个块都送入Cache里,其实都是一个周期,只不过实验把步骤拆解了,L7-L0是显示缓存送往Cpu的数据,第4步体现的程序的局部性原理。
6.关于电路图我不是很明白,希望有大哥可以交流交流。
先用busy信号和清零信号产生一个wct,另一端给出地址A7-A2,wct在找命不命中.
7.一些思考:既然都有局部性原理为什么不在访问1地址不命中的时候,做出预判直接把2块送入主存
8.关于存储器访问
第二个实验,在CacheCtrl.hex查看主的内容 对于实验台SD17-SD10
从左向右3位区号 3位块号 两位块内地址 11 22..分别表示一个字 0001 0001 0010 0010
注意地址和块内地址都是从0开始的 无论从块内的哪一个地址开始,根据程序的局部性原理都是以块的形式来导入,导入之后可以通过查看块内地址查看数据
为啥L15-L8和L7-L0数据不一样,命中之后CPU和CACHE之间就建立了一个映射关系,不关主存的事了。
9.线不要插反,否则读取数据也是反的,并且不要漏线。
10.另外一个博主写的很好,计算机组成原理_dweblover的博客-CSDN博客