【计算机组成与体系结构Ⅰ】实验5 CPU组成与机器指令执行实验

news2024/11/15 17:27:49

一、实验目的

1:将微程序控制器同执行部件(整个数据通路)联机,组成一台模型计算机。

2:用微程序控制器控制模型机数据通路。

3:通过CPU运行几条机器指令(排除中断指令)组成的简单程序,掌握机器指令与微指令的关系,牢固建立计算机的整机概念。

二、实验设备

TEC-4计算机组成原理实验系统(实验箱)和仿真软件。

三、实验内容

1:机器指令系统组成的简单程序进行译码

存储地址

指令

机器代码

00H

LDA R0,[R2]

0101 1000

01H

LDA R1,[R3]

0101 1101

02H

ADD R0,R1

0000 0100

03H

STP

0110 0000

 


2:根据框图完成连线

 

控制器是控制部件,数据通路(包括数据通路总图中运算器、存储器及输入输出等各模块)是执行部件,时序产生器是时序部件。

1)将跳线开关J1用短路子短接。时序发生器的输入TJI接控制存储器的输出TJ。控制器的输入C接运算器ALU的C。控制器的输入IR7、IR6、IR5、IR4依次指令寄存器IR的输出IR7、IR6、IR5、IR4。共6条线。

2)控制器的输出LDIR(CER)、LDPC(LDR4)、PC_ADD、PC_INC、M4、LDIAR、LDAR1(LDAR2)、AR1_INC、M3、LDER、IAR_BUS#、SW_BUS#、RS_BUS#、ALU_BUS、CEL#、LRW、WRD、LDDR1(LDDR2)、M1(M2)、S2、S1、S0依次与数据通路的对应信号连接。共27条线。

3)指令寄存器IR的输出IR0接双端口寄存器堆的RD0、WR0,IR1接RD1、WR1,IR2接RS0,IR3接RS1。共6条线。


    以仿真面板为例,各部件(微程序控制器、数据通路、控制台)之间所需要的连线如下图所示:

 

 最终的连线结果如下图所示:

 

3:存程序机器代码,设置通用寄存器R2、R3及内存相关单元的数据

●  设置通用寄存器R2、R3的值


第一步:令DP=0,DB=0,DZ=0,使实验系统处于连续运行状态。令SWC=0、SWB=1、SWA=1,使实验系统处于寄存器加载工作方式KLD。按CLR#按钮,使实验系统处于初始状态。

 

 第二步:令SW=1111 1111,按下QD。即把RAM中的FF内存单元供设置通用寄存器使用,此步为选中RAM中的FF内存单元.

 第三步:令SW=0000 0010,按下QD。即把通用寄存器R2的寄存器号写入IR中。

 第四步:令SW=0110 0000,按下QD。即把60H写入IR指定的R2寄存器中。

 第五步:令SW=0000 0011,按下QD。即把通用寄存器R3的寄存器号写入IR中。

 第六步:令SW=0110 0001,按下QD。即把61H写入IR指定的R3寄存器中。

 第七步:按下CLR#,使实验系统恢复到初始状态。

 

●  存程序机器代码


第一步:令DP=0,DB=0,DZ=0,使实验系统处于连续运行状态。令SWC = 0、SWB = 1、SWA = 0,使实验系统处于写双端口存储器工作方式KWE。按CLR#按钮,使实验系统处于初始状态。

 

 第二步:令SW=0000 0000,按下QD。将00H写入AR1。

 第三步:令SW=0101 1000,按下QD。将58H写入存储器00H单元。AR1自动加1,变为01H。

 第四步:令SW=0101 1101,按下QD。将5DH写入存储器01H单元。AR1自动加1,变为02H。

 第五步:令SW=0000 0100,按下QD。使AR1+1,AR1此时为03H。

 第六步:令SW=0110 0000,按下QD。使AR1+1。AR1此时为04H。

 第七步:按CLR#,令SW=0110 0000,按下QD。将60H写入AR1。

 第八步:令SW=0010 0100,按下QD。将24H写入存储器60H单元。AR1自动加1,变为61H。

 第九步:令SW=1000 0011,按下QD。将83H写入存储器61H单元。

 第十步:按CLR#,使实验系统恢复到初始状态。


第十一步:查询01H、02H、03H、04H、60H、61H存储单元中在之前步骤中所存储的数据是否正确。

 

 

4:用单拍(DP)方式执行一遍程序

设置SWC=0,SWB=0,SWA=0,计算机处于PR启动程序阶段,同时设置DP=1,DB=0,DZ=0,用SW7-SW0设置这几条指令的起始地址00H,按QD单拍执行。观察执行过程微地址变化和执行结果如下表所示:

QD次数

后继微地址

执行内容

1

000111

取指

2

000101

译码

3

010101

加载寻址

4

110110

读取

5

110100

写入

6

001111

取指

7

000101

译码

8

010101

加载寻址

9

110110

读取

10

110100

写入

11

001111

取指

12

000101

译码

13

010000

加法寻址

14

111011

运算加法

15

110100

写入

16

001111

取值

17

000101

译码

18

010110

停机


最终运行结果如下图所示:保存在R0处的数据为两数相加的结果A7(1010 0111)

 

 

5:比较单拍和单指方式执行程序

两种条件下寄存器的数据如下表所示:

单拍模式

单指模式

R0

0010 0100

1010 0111

R1

1000 0011

1000 0011

R2

0110 0000

0110 0000

R3

0110 0001

0110 0001

 


四、实验数据通路总图

 

 

五、分析问题

1:为什么IR0,IR1对应接RD0、RD1, 还要接WR0、WR1?

RDl、RD0选择从A端口读出的寄存器,WR0、WR1选择被写入的寄存器。由于运算结果需写回寄存器中,因此需要同时指WRl、WR0,即IR0和IR1需要同时连接RD0、RD1和WR0、WR1。

2:KLD方式的功能是什么?为什么要用到内存的一个存储单元?

    KLD的功能是加载寄存器堆。该存储单元供设置通用寄存器使用,在设置通用寄存器值的时候,该存储单元会暂存寄存器的编号。该存储器地址最好是不常用的一个地址,以免设置通用寄存器操作破坏重要的存储器单元的内容0。在本次实验中选用的为FFH。

3:总结实验出现的问题、解决办法,实验体会。

  1. CPU运行指令主要需要如下几个过程:
    取指令:CPU的控制器从内存读取一条指令并放入指令寄存器。指令的格式一般是操作码+操作数的地址;
    指令译码:指令寄存器中的指令经过译码,决定该指令应进行何种操作(操作码)、操作数的地址。
    执行指令:执行指令分为取操作和进行运算两个阶段。
    修改指令计数器,决定下一条指令的地址。
  2. 模型计算机如何区分所取的8位是数据还是指令:数据和指令存放在RAM存储器中。执行指令的过程分为取指令、指令译码、取操作数、运算、送结果。程序运行时计算机会根据指令和数据的访问阶段不同来区分二者,在取指令阶段取出的为指令,在取操作数阶段取出的为数据。

  3. TEC4-A模型计算机一条机器指令的字长为8位前4位为操作码、后4位为寄存器编号。具体的机器指令格式如下图所示:
  4. 在本实验中,把数据和地址存入RAM中的操作是一样的,首先通过SW7~SW0选中RAM中的目标存储单元,然后将数据通过SW7~SW0存入目标存储单元中。
  5. 在本实验中,我们从00地址开始存4个机器代码,对应4条机器指令。在 60H存入24H,用于给R0置初值;在61H存入 83H,用于给R1置初值。
  6. CPU的内部结构可分为:控制单元、逻辑运算单元、存储单元三大部分。其中,控制单元完成数据处理整个过程中的调配工作;逻辑单元完成各个指令以便得到程序最终想要的结果;存储单元负责存储原始数据以及运算结果。
  7. 数据通路的各端口和微程序控制器的各端口相连,是因为微程序控制器需要向数据通路发出控制信号,以控制数据通路的运行。
  8. 在本实验中,我们首先设置了通用寄存器内的值,然后在RAM里面存入了程序机器指令,最后通过单拍或单指的方式执行了一遍程序。因此,程序编写和运行的过程整体同上,即先存指令,后点运行。
  9. 在遇到不理解的信号或操作时,优先在《TEC4 模型计算机介绍》中使用control+F键进行查找。

 

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

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

相关文章

MARLIN: Masked Autoencoder for facial video Representation LearnINg

题目MARLIN: Masked Autoencoder for facial video Representation LearnINg译题MARLIN:用于面部视频表示的 maked 自动编码器 LearnINg时间2023年期刊/会议CVPR 论文链接:MARLIN_MASKED_Autoencoder_for_Facial_Video_Representation_Learning MARLIN…

C++11右值引用(移动构造、完美转发等)

在讲解移动构造和完美转发之前,我们需要先了解什么是右值引用。 但在讲解右值引用之前,我们也得知道左值和右值分别是什么,有什么区别。 目录 左值与右值 左值与左值引用 右值与右值引用 引用和右值引用的区别 移动构造 移动赋值 插…

基于simulink处理监控视频以选择包含运动的帧(附源码)

一、前言 此示例演示如何处理监控视频以选择包含运动的帧。安全问题要求使用摄像机对重要位置进行持续监控。为了有效地记录、查看和存档这些海量数据,您可以减小视频帧大小或减少录制的视频帧总数。此示例说明了后一种方法。在其中,相机视野中的运动会…

1762_gcc编译c语言makefile自动生成工具的Perl实现

全部学习汇总: GreyZhang/g_makefile: Learn makefile from all kinds of tutorials on the web. Happy hacking and lets find an common way so we may dont need to touch makefile code any more! (github.com) 前阵子实现了一个CodeWarrior嵌入式开发环境的自动…

【Java从入门到大牛】数组详解

🔥 本文由 程序喵正在路上 原创,CSDN首发! 💖 系列专栏:Java从入门到大牛 🌠 首发时间:2023年7月9日 🦋 欢迎关注🖱点赞👍收藏🌟留言&#x1f43e…

Python + pymysql 之 MySQL 查询操作

在MySQL中构建一个测试表,如下: 查询单条数据 # -*- coding: UTF-8 -*- import pymysqldef mysql_query():"""MySQL查询:return:"""# 打开数据库连接db pymysql.connect(host"127.0.0.1",user"root"…

IDEA 配置 openjdk,jre

使用 idea 配置 zip 版本的 openjdk 和 jre,我使用的时 redhat 提供的 jdk 和 jre。 一、下载 idea、jdk 和 jre 红帽下载地址为: jdk 和 jre 安装地址根据个人配置,我的配置如下: 下划线的分别为我的 jdk 和 jre 保存路径 二…

简单学习UE5.2的PCG框架插件里的基础概念

目标 最近了解到5.2版本推出了实验性的功能PCG框架,以及用它做的范例 Electric Dreams。 本篇我简单学习它的一些基础概念,做一些记录。 0. 启用插件 此功能相关的类型都在PCG插件中,因此首先要确保启用了PCG插件: 1. PCGGr…

为什么进程地址空间中包括操作系统?

今天聊聊进程地址空间这点小事。 说到进程的地址空间,大家可能都知道这样一张图: 这张图就是Linux程序运行起来后所谓的进程地址空间,这里包括我们熟悉的代码区、数据区、以及堆区和栈区,今天我们不讲解这些区域,而是…

Vue生态及实践 - SSR(上)

目录 目标 理论 Rendering 你真的需要SSR亦或是同构吗? 同构实践 通用代码 同构第一步:避免单例 src/app.js src/store.js src/router.js 同构第二步:Server entry【服务端进入】;Client entry【客户端进入】 src/entry…

ESP32设备驱动-AS5600磁性旋转位置传感器

AS5600磁性旋转位置传感器 文章目录 AS5600磁性旋转位置传感器1、AS5600介绍2、硬件准备3、软件准备4、驱动实现1、AS5600介绍 AS5600 是一款可编程的 12 位高分辨率非接触式磁性旋转位置传感器。 AS5600可以作为磁性电位器或磁性编码器使用,具有出色的可靠性和耐用性。 与传…

网页版代码编辑器实现

接着前几天写的博客https://blog.csdn.net/woyebuzhidao321/article/details/131495855,提到了涉及vscode网页版工作区创建的api,这两天一时兴起,搞了一个网页版的代码编辑器,如果在2020年10月之前,实现一个网页版代码…

活动笔记 | 「企业人效提升路径」之数字化实践

6月27日,由人力资源智享会联合盖雅工场等机构主办的2023中国人力资源数字化论坛在北京顺利举办。盖雅工场高级解决方案顾问谷天毅先生发表了主题为 《企业人效提升路径之数字化实践》 的分享。 以下是分享内容,enjoy~ △ 盖雅工场高级解决方案顾问谷天…

httpx 返回都是乱码问题,非编码问题。

因为python 的requests 不能使用抓http2 的报文。所以看了一些httpx的使用。但是发现httpx 不能自动解压,text打印出来的都是乱码。一开始以为是编码格式的bug ,但是使用chardet 确认了确实是utf-8.然后怀疑是压缩的问题。先去官网搜了一些文档 文档说会…

opencv4.7.0编译opencv-contrib-4.7.0以及CUDA

0、引言 最近工作中需要用到使用CUDA加速后的opencv进行传统算法的开发,在编程之前,需要先解决环境编译和lib库问题,本文就是记录自己编译opencv-4.7.0的全过程。 1、CUDA下载和安装 可参考我之前的博客WIN10安装配置TensorRT详解中的前几…

达尔文——生物医疗科学领域大模型

赛灵力官网 1. 生物医疗领域的挑战 1.1 复杂性 生物系统和生物过程非常复杂,包含大量的相互作用和调控机制,理解和解析这些复杂性是一项巨大的挑战。 举例来说,单单一个人类,体内的生物信息就非常复杂: 人类体内体内…

Django_re_path_使用正则匹配url

与path定义的路由相比,re_path 定义的路由可以使用正则表达式匹配url。 需要注意的是: 如果未定义匹配结果的变量名,匹配的结果默认传入视图的第2个形参。如果定义了匹配结果的变量名,匹配的结果会传给视图的同名字段&#xff0…

从零开始学习自动驾驶决策规划

从零开始学习自动驾驶决策规划 从入门到掌握的一系列讲解,其中涵盖的内容如下: 前言课 第一节-ros工程的创建 第一节-运行环境和工程目录简介第二节-工程运行和小车模型搭建简介 第二节-车辆里程计第三节-整体架构思路 第三节-地图路线构建方法 第三节…

Packet Tracer – 配置静态 NAT

Packet Tracer – 配置静态 NAT 目标 第 1 部分:测试不使用 NAT 的访问 第 2 部分:配置静态 NAT 第 3 部分:测试使用 NAT 的访问 拓扑图 场景 在 IPv4 配置网络中,客户端和服务器使用专用编址。 然后,在含专用编址…

MATLAB---线性规划问题求最优解(含例题)

线性规划是运筹学的基础,在现实企业经营中,如何有效的利用有限的人力、财力、物力等资源。 MATLAB 为方便大家理解,这里我们直接用一个例题为大家讲解使用matlab求解线性规划问题。 根据上图给出的线性规划问题。我们使…