计算机组成原理实验二 存储系统预习报告

news2024/11/13 18:14:53

实验一----静态RAM

 

一、实验目

  1. 掌握静态随机存储器 RAM  工作特性及数据的读写方法。
  2. 基于信号时序图,了解读写静态随机存储器的原理。

二、实验预

1、阅读实验指导书,然后回答问题。

实验所用的静态存储器由一片 6116(2K*8bit )构成(位于MEM 单元),6116 有三个控制线:CS 表示( 片选线 ) ,   OE 表示(  读线) ,   WE 表示( 写线 ) 其功能如实验指导书表 2-1-1 所示,当片选有效CS=(0 )时,OE=() 时进行读操作,WE=( 0 ) 时进行写操作,本实验将 CS 常接地。

a9d201ff841e4bf1a8b4ca9b11a36842.png

2、根据 SRAM 6116 集成电路的管脚图回答问题。

9bec220cc44c48af9d60459516266bd8.png

  • 地址线的管脚号: (1-8 、19、22、23
  • 数据线的管脚号: ( 9-17
  • 片选线管脚号   (18
  • 读线管脚号:   ( 20
  • 写线管脚号:   (21

3、根据存储器实验原理图回答问题。

3027ac26263b4547b7aec8536acac758.png

  1.  74LS273 的作用:地址锁存器(内嵌于ABI中),给出地址
  2.  74LS245 的作用:三态门,连至CPU内总线,分时给出地址和数据
  3. 信号 LDAR 的作用:: 地址寄存器门控信号,对地址寄存器AR进行加载的控制信号,LDAR=1 时为加载状态。
  4. 信号 SW_B 的作用:开关输出三态门使能信号,为 0 时将 74LS245 输入引脚的值从输出引脚输出,即将 SW7~ SW0 数据发送到数据总线。

三、实验步骤

连线:

a8a8d3e7574745cf983e70eba8c109e6.png

                                                                      实验接线图

  • 将时序与操作台单元的开关 KK1、KK3 置为运行档、开关 KK2 置为‘单拍’档(时
    序单元的介绍见附录二)
  • 将 CON 单元的 K7 开关(SW_B)置为 1(使 SD17..SD10 开关组无输出)打开电源开
    关,如果听到有‘嘀’报警声,说明有总线竞争现象,应立即关闭电源,重新检查接线,直到错误排除。
f99e24cb1da6435d966b3abe6d1af320.png

操作:

按表进行

7b1c2924bbb441bea37fd45d5dd2182a.png

    给存储器的 00H 01H 地址单元中分别写入数据 11H 12H 。由前面的存储器实验原理
图(图 2-1-2 )可以看出,由于数据和地址由同一个数据开关给出,因此数据和地址要 分时写入
        先写地址:按动 2 次时序单元的 ST 按钮,产 生 T1、T2节拍后,先 关 掉 存 储 器 的 读 写 (WR=1, RD=1),开关 SD17..SD10 输出地址 00H(SD17..SD10=0000 0000B,K7=0),然后 ,打开地址寄存器门控信号(LDAR=1),按动 1 次 ST 产生 T3 脉冲,即将地址 00H 写入到 AR 中,按动 1 次 ST 产生 T4 脉冲,第 1 个机器周期结束。
        再写数据: 按动 2 次时序单元的 ST 按钮,产生 T1、T2 节拍后,先关掉地址寄存器门控
信号(LDAR=0),数据开关输出要写入的数据 11H(SD17..SD10 = 0001 0001B),打开三态
门(K7=0),然后使存储器处于写状态(WR=0,RD=1),按动 1次 ST产生 T3脉冲,即将数
据11H 写入到存储器 00H 地址中,按动1次ST产生T4脉冲,第2个机器周期结束。

                                重复上述操作,继续向01H地址单元中写入数据 12H。

        再读数据:按动 2次时序单元的 ST 按钮,产生T1、T2节拍后,先关掉地址寄存器门控信号(LDAR=0),关闭 IN 单元的输出(SW_B=1),然后使存储器处于读状态(WR=1,RD=0),此时数据总线上的数即为从存储器当前地址中读出的数据内容。按动2次 ST产生 T3、T4 脉冲,一 个机器周期结束。

bac35fa4f43a49e9a8147e566fa22bcc.png

08ce006fe18647f088e4b1c3e9c73165.png

实验原始记录

(一)本机运

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

四、思考题

根据存储器写入数据的时序图,观察数据何时被写入存储器,受哪些信号影响?(个人理解)

a49d9bce5d404b67a926effb9ac0ee3e.png

54d15a0978cd4794a117f595e91fb436.png 观察上图,可知最后一个机器周期的 T2 节拍后,RD 有效的同时存储器输出 11H,说明读 存储器受 RD 信号影响。观察倒数第二个机器周期的 T2 节拍后,地址寄存器门控信号 LDAR 有 效,同时开关 SD17..SD10 已经改为 00H 地址,但是地址寄存器 AR 中的地址直到 T3 时刻上升 沿才发生改变,说明地址寄存器 AR 的写入受 T3 上升沿影响。

5ee72bbcc90c4640a51b262e7ff87c1b.png


实验二Cache 映射机制模拟实验

一、实验目的

(1)掌握 Cache 的原理及其设计方法。
(2)熟悉 FPGA 应用设计及 EDA 软件的使用。

二、实验预

  • 1、Cache  的地址映像方式有哪些?直接映像方式的特点是什么?
  • 直接映射       特点:主存中的每一块只能被放置到Cache中唯一的一个位置。 (循环分配),阅览室位置 --只有一个位置可以坐,空间利用率最低,冲突概率最高,实现最简单
  • 全相联映射
  • 组相连映射

2、简述直接地址映像方式的地址变换过程。

如下图所示,主存地址高 位被分成两部分:低c位是指 Cache 的字块地址,高 (t = m-c) 是指主存字块标记,它被记录在建立了对应关系的缓存块的”标记”位中。当缓存接到CPU 送来的主存地址后,只需根据中间 位字段(假设为 0001) 找到 Cache 字块 ,然后根 据字块 的”标记”是否与主存地址的高位相符来判断,若符合且有效位为 “1”(有效位用来识 别Cache 存储块中的数据是否有效,因为有时 Cache 中的数据是无效的,例如,在初始时刻 Cache应该是“空”的,其中的内容是无意义的,表示该 Cache 块巳和主存的某块建立了对应关系(即 己命中),则可根据 位地址从 Cache 中取得信息;若不符合,或有效位为 “0" (即不命中),则从主存读入新的字块来替代旧的字块,同时将信息送往 CPU ,并修改 Cache” 标记"。如果原来有效 位为 “0” ,还得将有效位置成 “1”。

8f4ee43463fd4033be0646ecd1ba8321.png

3、在实验连接图中,开关 K7 的作用是什么?H2 指示灯、L7…L0 指示灯和L15…L8指示灯分别表示什么含义?

          gif.latex?K_%7B7%7D作用:模拟CPU访问存储器的读信号;gif.latex?H_%7B2%7D指示灯含义:显示gif.latex?K_%7B7%7D电位,指示灯亮表示 Cache 失效,H2 指示灯变灭表示 Cache 命中;gif.latex?L_%7B7%7D~gif.latex?L_%7B0%7D作用:显示Cache送往CPU的数据。gif.latex?L_%7B15%7D~gif.latex?L_%7B18%7D作用:显示当前主存数据。

三、实验操作

连线:

af55ac6df9b947a893a309cc77277eaf.png

实验步骤:

  1. 用 Quartus 软件编辑实现相应的逻辑并进行编译,直到编译通过,Cache控制器在FPGA
    芯片中对应的引脚如图 2-2-5所示,框外文字表示连接标号,框内文字表示该引脚的含义。(本实验例程见‘安装路径\FPGA\CacheCtrl\CacheCtrl.qpf’工程)。

    07c91a88758e4aca8cfb56b4006aee56.png

  2.  打开实验系统电源,将下载电缆插入扩展单元的 E_JTAG口,把生成的 SOF文件下载到扩 展单元中的 FPGA中。

  3. 将时序与操作台单元的开关 KK3 置为‘运行’档,CLR 信号由 CON 单元的 CLR 模拟给出,
    按动 CON 单元的 CLR 按钮,清空区表。
  4. 预先往主存写入数据:存储器已经提前装载好了数据文件(RAM.mif),用户也可以自己改写内容。
  5. 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 的数据。

  6. 重新给出主存访问地址,如 00000011,H2 指示灯变灭,表示 Cache 命中,说明第 0 块数据已写入 Cache。

  7. 重新给出大于 03H 地址,体会 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 01111000 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数据读取过程:

bc53a22a24124632881f534e9904a474.jpeg

这是一个组合逻辑,输入就会有输出,实验台的目的就是将组合逻辑过程化,理解计算机底层原理输入端CON输入信号后,按ST将数据送入地址寄存器,然后再送入MEM的下端,MEN下端是地址上端是数据,通过下方的时序图观察数据的流动过程

961f86d57e5443858ea2ba09db7f0f61.png 2.怎么查看某个地址的数据,先将数据传入地址寄存器,发出读信号给MEM,程序会显示地址中的数据。  通过时序图观察信号是否传入。

3.Cache实验操作解析:实验数据已经烧录到各个模块 比如00000000地址存放的是00010001,可以通过下图来查看:9419197196364f3d88f043dadac25a53.png 4.Cache实验按下KK1地址是加多少,这个如果能看到地址对应的数据就好了,我觉得是增加1,给出0000 0000Cahe没有说明cache没有命中,发现没有的时候Cache没有的时候已经去主存里查了,这三块数据写入缓存三次,当读入第四次的时候,发现H2灯灭,这时向地址线分别发送0000 0001(0、1、2、3)发现都能看到数据并且H2灯灭,说明这四块都调入了Cache并且被命中。

5.时钟的作用是把主存的四个块都送入Cache里,其实都是一个周期,只不过实验把步骤拆解了,L7-L0是显示缓存送往Cpu的数据,第4步体现的程序的局部性原理。

6.关于电路图我不是很明白,希望有大哥可以交流交流。

77c40a6441a04f82b80023b755d98d38.png

 先用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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416784.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ROS开发之如何在同一个节点订阅、处理、发布消息?

文章目录0、引言1、创建中间特殊文件(含订阅者和发布者)2、在CMakeLists.txt添加编译规则3、在launch添加启动项4、编译运行5、三维显示0、引言 在ROS应用一般会用到发布者和订阅者,若只接收传感器数据,则只实现订阅者就行&#x…

客户服务 KPI是什么

当企业着手改进其客户服务计划时,必须以可衡量的方式进行。因为如果我们为了改进而改进,没有衡量,我们就永远无法真正知道我们做得有多好!如果您的公司已准备好升级其客户服务计划,这里有 12种方法可以衡量和跟踪您的客…

大学生问AI

大学生问AI写在最前面2,描述你在学习工作中碰到的最高级的 AI 是什么?1,你人生中第一次接触到 “人工智能” 的概念和产品是什么? 让你觉得 “人类做得东西的确有智能”?3,你听说过最近的 GPT,n…

Qt5.12實戰之Linux靜態庫與動態庫多文件生成a與so文件並調用

1.編輯並輸入內容到test.cpp與test2.cpp test.cpp #include <stdio.h> int func() {return 888; } test2.cpp #include <stdio.h> int func2() {return 999; } 將test.cpp與test2.cpp編譯成目標文件&#xff1a; g -c test.cpp test2.cpp 一次性生成目標文件…

阅读提升内在美

最近&#xff0c;想在内在美上提升自己&#xff0c;想把玩游戏的时间腾给阅读。不想只是善良&#xff0c;更希望自己拥有智慧拥有力量&#xff0c;更自信更热爱生活。 本篇博文会日日更新&#xff0c;也当作鼓励我继续阅读坚持阅读的动力和监督。 Z-Library 图书馆 分享一个…

LeetCode 1041. 困于环中的机器人

原题链接&#xff1a;1041. 困于环中的机器人 在无限的平面上&#xff0c;机器人最初位于 (0, 0) 处&#xff0c;面朝北方。注意: 北方向 是y轴的正方向。南方向 是y轴的负方向。东方向 是x轴的正方向。西方向 是x轴的负方向。 机器人可以接受下列三条指令之一&#xff1a; …

测试专家须精通Locust

目前随着AI人工智能越来越火&#xff0c;Python 编写的程序越来越多&#xff0c;更多的协议&#xff0c;更多的复杂应用。 所以Locust 是高级性能测试工程师和测试专家&#xff0c;必备技术之一&#xff0c;因为你不可能避免公司中使用python.编写接口或者程序。 在互联网公司…

C#|调用C/C++动态库

参考&#xff1a;C#总结&#xff08;四&#xff09;调用C动态库&#xff08;https://www.shuzhiduo.com/A/A2dmV49qze/&#xff09; 文章目录C#加载C动态库C#加载C#动态库涉及到的概念知识&#xff1a;托管DLL和非托管DLL的区别&#xff08;https://www.tinymind.net.cn/articl…

利用 ELK 处理 Percona 审计日志

Percona Server为 MySQL 数据库服务器进行了改进&#xff0c;在功能和性能上较 MySQL 有着很显著的提升。该版本提升了在高负载情况下的 InnoDB 的性能、为 DBA 提供一些非常有用的性能诊断工具&#xff1b;另外有更多的参数和命令来控制服务器行为 前提 1、有强烈的审计需求。…

网站建设常用的cms建站系统推荐

国内网站建设市场参差不齐&#xff0c;建站公司多如牛毛&#xff0c;网站价格便宜的几百&#xff0c;贵的几十万&#xff0c;作为外行&#xff0c;很难去选择&#xff0c;国内大部分网站建设公司都是营销公司&#xff0c;完全没有底层技术框架的开发能力&#xff0c;90%以上的网…

srs流媒体服务安装和使用

简介 SRS(Simple Realtime Server)是一个简单高效的实时视频服务器&#xff0c;支持RTMP、WebRTC、HLS、HTTP-FLV、SRT等多种实时流媒体协议。 官网&#xff1a;https://ossrs.net/lts/zh-cn/ 编译安装 使用ubuntu系统作为例子&#xff0c;最好是20版本。 1、克隆项目代码 …

2023.4.12

文章目录一&#xff1a;try catch处理异常1&#xff1a;原理&#xff1a;2&#xff1a;catch中如何处理异常**3&#xff1a;try-catch-finally**4&#xff1a;多重catch5&#xff1a;异常的分类6&#xff1a;throw和throws的区别7&#xff1a;练习题8&#xff1a;重载和重写的异…

Python后端架构演进

做了3年的后端开发, 经历一款SaaS产品从0到10(还没有到100, 哈哈哈)的过程, 3年间后端的架构逐步演变, 在微服务的实践过程中遇到的问题也越来越多, 在这里总结下. 产品是一款服务于人力资源的SaaS在线服务, 面向HR有Web Android/iOS 小程序多个客户端, 后端采用RESTful风格AP…

表id自增的方法

数据库主键id自增的方法&#xff0c;列举了几种如下 一、数据库自增&#xff08;部分数据库支持&#xff09; 创建表的时候设置id自增即可&#xff0c;或者后期修改表id自增 # mysql 语法 create table your_table_name(id bigint(20) not null auto_increment primary key …

Android技术分享 | 一行代码实现屏幕、声音采集

之前发布过一行代码实现安卓屏幕采集编码&#xff0c;并介绍了如何屏幕采集编码并进行了封装&#xff0c;简单的调用即可实现MediaProjection权限申请、H264硬编码、错误处理等功能。本文将介绍新增的功能&#xff0c;还是只需一行代码即可实现屏幕、声音采集。 一行代码实现屏…

【原创】万字长文讲解AI绘画基本技术原理

作者&#xff1a;黑夜路人 时间&#xff1a;2023年4月12日 AIGC是什么 AIGC - AI Generated Content &#xff08;AI生成内容&#xff09;&#xff0c;对应我们的过去的主要是 UGC&#xff08;User Generated Content&#xff09;和 PGC&#xff08;Professional user Generat…

c语言数据结构——树形结构之树和二叉树

前言 二叉树有什么用&#xff1f; 二叉树应用非常广泛。 在操作系统源程序中&#xff0c;树和森林被用来构造文件系统。我们看到的window和linux等文件管理系统都是树型结构。在编译系统中&#xff0c;如C编译器源代码中&#xff0c;二叉树的中序遍历形式被用来存放C 语言中的…

如何从阿里云盘下载大文件到自己的电脑或者租赁的服务器中?

首先进入阿里云盘的github项目处&#xff0c;里面有详细的说明&#xff0c;入口&#xff1a;https://github.com/tickstep/aliyunpan Ubuntu挂载阿里云盘作为自己的硬盘 如果你是Ubuntu系统的话&#xff0c;直接在使用apt命令在电脑安装阿里云盘即可&#xff0c;命令如下&…

Oracle基础部分二(伪列/表、单个函数、空值处理、行列转换、分析函数、集合运算)

Oracle基础部分二&#xff08;伪列/表、单个函数、空值处理、行列转换、分析函数、集合运算&#xff09;1 伪列、伪表1.1 伪列1.2 伪表2 单个函数2.1 常用字符串函数2.1.1 length() 询指定字符的长度2.1.2 substr() 用于截取字符串2.1.3 concat() 用于字符串拼接2.2 常用数值函…

生成树端口选举

所有交换机运行RSTP,SW1优先级4096,SW2优先级4096,SW3优先级8192,SW1的G0/0/1、G0/0/2接口通过手动模式加入Eth-Trunk 1,SW1的G0/0/3、G0/0/4接口通过手动模式加入Eth-Trunk 2,SW2的G0/0/1、G0/0/2接口通过手动模式加入Eth-Trunk 1,SW3的G0/0/1、G0/0/2接口通过手动模式…