实验(四):指令部件实验

一、实验内容与目的

        实验要求:

        利用CP226实验仪上的小键盘将程序输入主存储器EM,通过指令的执行实现微程序控制器的程序控制。

        实验目的:

1.掌握模型机的操作码测试过程;

2.掌握模型机微程序控制器的基本结构以及程序控制的基本原理。

二、实验步骤

一条机器指令有一个微程序解释执行,一个微程序有若干条微指令构成。每条指令的操作码OP就是微程序第一条微指令在控制存储器uM的微地址,通过操作码找到第一条微指令地址的过程称为操作码测试或P1测试。微程序的多条微指令在控制存储器uM的组织方式可以是链表式(下一条微指令的微地址由当前微指令的顺序控制部分决定),也可以是顺序式(下一条微指令的微地址是当前微指令的微地址加1产生)。

模型机的操作码测试规则如下:

指令的六位操作码 OP,低位补加两个零构成八位微地址作为微程序第一条微指令的微地址。

指令 MOV A, #12H 的操作码OP=011111B,低位补加00B,解释执行该机器指令的第一条微指令的微地址是01111100B,即7CH。该微指令在控制存储器的7CH单元。

模型机的微程序组织方式是顺序式。

实验程序段:

MOV	A, #12H
MOV	A, R1
MOV	A,@R2
MOV	A, 10H
IN  A,SW
OUT	LED,A

将该程序转换为机器码写入主存储器 EM。

2.1 微地址实验

下面以第一条指令为例说明微地址的形成方式。

指令MOV  A, #12H 开始执行的第1条微指令一定是取指令的微指令,由于所有指令取指令的微指令都一样,所以取指令的微指令作为公共操作放在控制存储器的00H单元。

解释执行指令MOV       A, #12H 的第一条微指令的微地址是7CH。

执行完指令MOV    A, #12H 需要取下一条指令,第二条微指令是取值的微指令,微地址是7DH。

标明微地址的指令周期图如下所示。指令周期图的一个方块是一个机器周期(一次STEP 按键操作),对应一条微指令,方框上面的数字就是微地址,波浪号是取指公操作。

将指令地址 PC 和微指令地址 uPC 置为 00H,如果不是可以通过小键盘输入改写,按下 STEP 按键,观察 uPC 值得变化。 

2.2 微指令实验

模型机的微程序组织方式是顺序式,微指令只有 24 位操作控制字段,没有顺序字段,微指令格式如下:

X

R

D

E

M

W

R

E

M

W

P

C

O

E

E

M

E

N

I

R

E

N

E

I

N

T

E

L

P

M

A

R

E

N

M

A

R

O

E

O

U

T

E

N

S

T

E

N

R

R

D

R

W

D

C

N

F

E

N

X

2

X

1

X

0

W

E

N

A

E

N

S

2

S

1

S

0

24 个操作控制位是 3 个字节,最高 8 位称为微指令的高字节,简写为 MH;中间 8 位称为微指令的中字节,简写为 MM;最低 8 位称为微指令的低字节,简写为 ML。

下面以第一条指令为例说明微微程序控制。

指令 MOV A, #12H 开始执行的第 1 条微指令是取指令的微指令,取指的微指令在控存 00H 单元,将 00H 单元的微指令读出,其值为 CBFFFFH,具体操作详见 1.3 的第 5 部分的观察和修改微程序控制器 uM 的内容。

该微指令对应的三个控制位是 EMRD、PCOE、及 IREN 为低,此三位有效,其它所有位都处于无效状态。在程序第一次运行时或复位后,uPC 和 PC 的值都为 0。PCOE 有效将 PC 值送到 ABUS,做为主存储器 EM 的指令地址,同时 PC 加 1;EMRD 信号有效就是从主存储器 EM 中读出程序指令,IREN 将读出的指令送到 IR 寄存器。

此微指令的作用就是:从主存储器 EM[0]的读取指令,并存入 IR 中进行操作码测试,得到微程序入口地址 7CH 来修改 uPC,同时 PC 加 1 为读下一条指令或数据做准备。

将 7CH 单元的微指令读出,其值为 C7FFF7H,对应到各个控制位是 EMRD、PCOE、 EMEN 及 AEN 为低,处于有效状态,其它控制位为无效状态。PCOE 是将 PC 输出到 ABUS 做为主存储器 EM 的地址,同时 PC 加 1;EMRD 就是从程序存储 EM 中读出数据,EMEN 将读出的数据送到 DBUS 总线上,AEN 是将 DBUS 总线上的值存入累加器 A 中。

此微指令的作用就是:从主存储器 EM[1] 的读取数据 12H 送入 A,uPC 加 1,给出下一条微指令的地址,同时 PC 加 1 为读下一条指令或数据做准备。

将 7DH 单元的微指令读出,其值为 CBFFFFH 与 00H 单元微指令作用一样。

三、实验过程分析

3.1 微地址实验

1. 实验过程分析

  • 实验准备:

在开始实验之前,需要将指令地址 PC 和微指令地址 uPC 设置为 00H,以确保模型机处于初始状态。这样,我们可以从第一条微指令开始执行,并观察微地址的变化。

  • 第一条指令 MOV A, #12H:

根据给定的程序段,第一条指令是将立即数 12H 存储到寄存器 A 中。根据转换得到的机器码(0111 1100),将该机器码写入主存储器 EM 的相应地址单元。按下 STEP 按键后,模型机执行取指令的微指令,微地址为 7CH。

  • 第二条指令 MOV A, R1:

根据给定的程序段,第二条指令是将寄存器 R1 的值存储到寄存器 A 中。根据转换得到的机器码(0111 0001),将该机器码写入主存储器 EM 的相应地址单元。按下 STEP 按键后,模型机执行取值的微指令,微地址为 71H。

  • 第三条指令 MOV A, @R2:

根据给定的程序段,第三条指令是将寄存器 R2 指向的内存单元的值存储到寄存器 A 中。根据转换得到的机器码(0111 0110),将该机器码写入主存储器 EM 的相应地址单元。按下 STEP 按键后,模型机执行取值的微指令,微地址为 76H。

  • 第四条指令 MOV A, 10H:

根据给定的程序段,第四条指令是将立即数 10H 存储到寄存器 A 中。根据转换得到的机器码(0111 1000),将该机器码写入主存储器 EM 的相应地址单元。按下 STEP 按键后,模型机执行取值的微指令,微地址为 78H。

  • 第五条指令 IN A, SW:

根据给定的程序段,第五条指令是将开关 SW 的值输入到寄存器 A 中。根据转换得到的机器码(1100 0000),将该机器码写入主存储器 EM 的相应地址单元。按下 STEP 按键后,模型机执行取值的微指令,微地址为 C0H。

  • 第六条指令 OUT LED, A:

根据给定的程序段,第六条指令是将寄存器 A 的值输出到 LED 灯。根据转换得到的机器码(1100 0100),将该机器码写入主存储器 EM 的相应地址单元。按下 STEP 按键后,模型机执行取值的微指令,微地址为 C4H。

通过按下 STEP 按键,我们可以观察到微地址在每个指令周期(一次按键操作)中的变化。微地址的变化对应着不同的微指令的执行,通过控制存储器中存储的微指令,模型机可以按照特定的顺序执行指令,并完成相应的操作。

2. 补全指令流程图中的微地址

 

3.2 微指令实验

实验过程分析:

  • 第一条指令:MOV A, #12H

微地址 7CH:将立即数 12H 送入累加器 A

EMRD、PCOE、EMEN、AEN 有效,其余控制位无效

将 PC 的值送到 ABUS,作为主存储器 EM 的地址,同时 PC 加 1

从主存储器 EM 中读取数据 12H,将数据存入累加器 A

1 第一条指令的微程序

  • 第二条指令:MOV A, R1

微地址 70H:将寄存器 R1 的值送入累加器 A

EMRD、PCOE、EMEN、REN、AEN 有效,其余控制位无效

将 PC 的值送到 ABUS,作为主存储器 EM 的地址,同时 PC 加 1

从主存储器 EM 中读取寄存器 R1 的值,将值存入累加器 A

2 第二条指令的微程序

  • 第三条指令:MOV A, @R2

微地址 74H:将间址存储器 R2 的值送入累加器 A

EMRD、PCOE、EMEN、MA、AEN 有效,其余控制位无效

将 PC 的值送到 ABUS,作为主存储器 EM 的地址,同时 PC 加 1

从主存储器 EM 中读取间址存储器 R2 的值,将值存入累加器 A

3 第三条指令的微程序

  • 第四条指令:MOV A, 10H

微地址 78H:将立即数 10H 送入累加器 A

EMRD、PCOE、EMEN、AEN 有效,其余控制位无效

将 PC 的值送到 ABUS,作为主存储器 EM 的地址,同时 PC 加 1

从主存储器 EM 中读取数据 10H,将数据存入累加器 A

4 第四条指令的微程序

  • 第五条指令:IN A, SW

微地址 C0H:将开关 SW 的值输入到累加器 A

EMRD、PCOE、INEN、AEN 有效,其余控制位无效

将 PC 的值送到 ABUS,作为主存储器 EM 的地址,同时 PC 加 1

从主存储器 EM 中读取开关 SW 的值,将值存入累加器 A

5 第五条指令的微程序

  • 第六条指令:OUT LED, A

微地址 C4H:将累加器 A 的值输出到 LED

EMRD、PCOE、OUTEN、AEN 有效,其余控制位无效

将 PC 的值送到 ABUS,作为主存储器 EM 的地址,同时 PC 加 1

将累加器 A 的值输出到 LED

图6 第六条指令的微程序

四、实验总结

本次实验旨在通过实践,掌握模型机的程序控制方式以及微程序控制器的基本结构和原理。实验一主要针对微地址的形成方式进行了实验,而实验二则重点在于微指令的执行和控制过程。通过对实验一和实验二的进行分析和实验操作,我们对模型机的程序控制有了更深入的了解。

实验一中,我们使用了给定的程序段,并将其转换为机器码写入主存储器 EM。通过将指令转换为机器码,我们能够更好地理解指令在计算机中的表示方式和存储方式。在实验过程中,我们首先设置微地址为00H,并通过按下STEP按键,观察uPC值的变化。实验结果表明,uPC值根据指令的执行逐步递增,说明微程序控制器按顺序执行微指令。通过这一实验,我们深入了解了微地址的形成方式以及微程序控制的基本原理。

实验二则更加注重微指令的执行和控制过程。我们根据实验中给定的微指令格式,以第一条指令为例,详细分析了微指令的控制位和对应的操作。通过对微指令的解析,我们了解到微指令中的每个控制位都对应着不同的控制信号,控制着计算机的各个部件的工作状态。实验过程中,我们根据微指令的地址,逐步执行微指令,并观察各个控制信号的状态变化。这样的实验设计使我们更加直观地了解了微指令的执行流程和控制机制。

通过本次实验,我们对模型机的程序控制方式有了更深入的了解。我们掌握了指令的机器码表示和存储方式,了解了微地址的形成方式以及微程序控制器的基本结构和原理。我们通过实验操作,观察了微指令的执行过程,并分析了不同控制位对计算机各部件的控制作用。这些实验帮助我们更好地理解了计算机的工作原理和程序执行的过程。

通过本次实验,我们还加深了对计算机体系结构的认识。我们理解了指令的执行过程是通过微程序控制器来实现的,微指令控制着计算机的各个部件的工作状态,从而完成指令的执行。我们意识到微程序控制器在计算机体系结构中的重要性,它为计算机提供了灵活的指令执行方式和可扩展的控制功能。

总而言之,我们在实践中深入了解了模型机的程序控制方式和微程序控制器的工作原理。我们通过对实验一和实验二的分析和操作,掌握了指令的机器码表示、微地址的形成方式以及微指令的执行和控制过程。这些实验对于我们加深对计算机体系结构的理解和掌握计算机的程序控制技术具有重要意义。通过实验,我们提高了对计算机工作原理的认识和理解,为今后的学习和研究打下了坚实的基础。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式-命令模式-笔记

“行为变化”模式 在组件的构建过程中,组件行为的变化经常导致组件本身剧烈的变化。“行为变化”模式组件的行为和组件本身进行解耦,从而支持组件行为的变化,实现两者之间的松耦合。 经典模式:Command、Visitor 动机&#xff0…

跑出竞价的“内卷怪圈”,三季度京东物流依旧“稳操胜券”?

今年国内的物流企业内卷之势丝毫没有减弱,尽管表面上价格战已经告一段落,但各方之间依旧暗流涌动。顺丰、菜鸟接连赴港IPO,极兔成功“上岸”,新一轮的局势似乎正在形成。 近日,京东物流发布了2023年第三季度财报。从财…

Java并发编程第12讲——cancelAcquire()流程详解及acquire方法总结

上篇文章介绍了AQS的设计思想以及独占式获取和释放同步状态的源码分析,但是还不够,一是感觉有点零零散散,二是里面还有很多细节没介绍到——比如cancelAcquire()方法(重点),迫于篇幅原因,今天就…

909-2014-T3

文章目录 1.原题2.算法思想3.关键代码4.完整代码5.运行结果 1.原题 有n个顶点的无向图,使用邻接矩阵作为存储结构。为减少存储空间,使用数组按照行主映射方式仅保存下三角矩阵。请给出映射公式,并编写算法计算给定顶点的度。叙述算法思想并用…

C# - Opencv应用(2) 之矩阵Mat使用[矩阵创建、图像显示、像素读取与赋值]

C# - Opencv应用(2) 之矩阵Mat使用[矩阵创建、图像显示、像素读取与赋值] 矩阵创建图像显示与保存像素读取与赋值新建sample02项目,配置opencv4相关包,新建.cs进行测试 1.矩阵创建 //创建空白矩阵 var dst new Mat()//创建并赋…

动手学深度学习(二)---线性回归

文章目录 1.线性回归从0实现2.线性回归简洁实现【相关方法】torch.normal() 1.线性回归从0实现 从0开始实现整个方法,包括数据流水线、模型、损失函数和小批量随机梯度下降优化器 (1)导入需要的包 % matplotlib inline import random impor…

GCANet

2019、中科大港科、有代码 Chen D, He M, Fan Q, et al. Gated context aggregation network for image dehazing and deraining[C]//2019 IEEE winter conference on applications of computer vision (WACV). IEEE, 2019: 1375-1383. GitHub - cddlyf/GCANet: Implementation…

力扣每日一题-美化数组的最少删除数-2023.11.21

力扣每日一题:美化数组的最少删除数 开篇 今天的力扣每日一题居然写出来了,好开心,迫不及待地把题目分享出来,希望你也能把它狠狠拿下。 题目链接: 2216.美化数组的最少删除数 题目描述 代码思路 创建一个list集合来保存数组&a…

【Python3】【力扣题】338. 比特位计数

【力扣题】题目描述: 题解:从0到n的整数,逐一统计二进制中1的个数,记录在一个新列表中。 【Python3】代码: 1、解题思路:Python函数。 知识点:bin(...):转为二进制字符串&#xff…

Ubuntu环境下基于libxl库文件使用C++实现对表格的操作

功能 表格不存在则创建后再进行操作创建sheet添加新的工作表在sheet中增加数据设置单元格样式 相关配置 下载地址:libxl选择 LibXL for Linux 4.2.0 i386 x64 armhf aarch64 安装配置 1,使用 tar zxvf 文件名.tar.gz 进行文件解压2,创…

【电路笔记】-电源电压

电源电压 文章目录 电源电压1、概述1.1 交流发电机1.2 电池1.3 理想电压源1.4 实际电压源1.5 连接规则 2、相关源2.1 压控电压源 (VCVS)2.2 电流控制电压源 (CCVS) 3、总结 在本文中,我们详细介绍了称为电源电压的重要电子元件的架构、功能和使用。 我们首先提出理想…

达索系统3DEXPERIENCE WORKS 2024 Fabrication新功能

当发现产品的制造环节,以及因产品模型本身的设计而导致制造环节存在不合理性,从而导致加工制造成本增加。 快速判断,轻松协作 在达索系统3DEXPERIENCE WORKS 2024中我们可以快速的判断产品的可制造性,以及快速与前端设计沟通协作…

目标文件(ELF格式)

1.linux中有三类目标文件 **(1)可重定位目标文件(.o或者.a):**包含二进制代码和数据,其形式可以和其他目标文件进行合并,创建一个可执行目标文件。(.a文件是由很多个.o文件的集合&a…

【设备树添加节点】

节点结束位置都需要加分号 of_iomap 完成映射 of_property_read_u32_array of_property_read_string of_fine_node_by_path

C++实战学习笔记

文章目录 erase()uniquevector的insert()std::string::npos erase() (1)erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符 (2)erase(position);删除position处的一个字符(position是个string类…

使用yum安装jdk,并配置环境变量

写在前面: yum安装的jdk,默认不用配置环境变量就可以java -version显示结果,但是却不能在系统环境变量中查看到JAVA_HOME,由于其他应用需要这个环境变量,比如hadoop,所以这里说明如何进行java的相关环境变量配置 1. y…

6.Gin 路由详解 - GET POST 请求以及参数获取示例

6.Gin 路由详解 - GET POST 请求以及参数获取示例 GET POST 请求以及参数获取示例 Get 请求:获取 Quary 参数 // 获取query参数示例:GET /user?uid20&namejack&page1 r.GET("/user", func(c *gin.Context) {// 获取参数// Query获取参…

Spring-IOC-Spring6和JUnit5集成

1、父工程pom.xml <properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring.version>…

Linux驱动开发笔记(四):设备驱动介绍、熟悉杂项设备驱动和ubuntu开发杂项设备Demo

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/134533533 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

LVS+Keepalived 高可用群集

一、一.Keepalived工具介绍 专为LVS和HA设计的一款健康检查工具 • 支持故障自动切换&#xff08;Failover&#xff09; • 支持节点健康状态检查&#xff08;Health Checking&#xff09; • 官方网站&#xff1a;http://www.keepalived.org/ 二、Keepalived工作原理 • …