【上海大学计算机组成原理实验报告】四、指令系统实验

server/2024/9/23 4:49:25/

一、实验目的

  1. 了解指令结构、PC寄存器的功能和指令系统的基本工作原理。

  2. 学习设计指令的方法。

二、实验原理

  1. 根据实验指导书的相关内容,对于部分使用频率很高,且只用几条微指令即可完成的简单操作,可以把这部分简单操作的微指令序列固定下来,存放在一个快速存储器中。之后我们就可以用不同的指令来调用不同的微程序,以达到完成不同指令的功能。

  2. 本实验所用的实验箱的指令系统中,每条指令均由4条微指令组成。当实际需要的微指令数量不足4条时,可用无效微指令FFFFFFH补足,但最后一条有效微指令一定是CBFFFFH微指令,表示本条指令执行完毕,取下一条指令。

  3. 指令系统的工作原理: 

    1. 指令获取:从存储器中获取下一条指令,通过地址总线传递给存储器。

    2. 指令解码:将获取的指令二进制通过指令总线传递给微程序计数器,高6位作为微程序入口地址,低2位分别作为SASB

    3. 微程序执行:根据微程序入口地址访问微程序存储器,将控制信号输出到控制总线,执行当前微指令功能。uPC1,输出下一条微指令,重复执行,直到“取下一条指令”微指令。

    4. 取下一条指令:PC1,开始执行下一条指令。

三、实验内容

实验任务一:分析并验证指令功能

观察机器指令码为66H的各微指令信号,验证该指令的功能。假设A=03HR2=77H77地址单元存放06H数据。

实验任务二:设计指令,完成相应功能

修改机器指令码为E8H的功能,使其完成“输出A+W的结果右移一位的值送OUT输出”操作。

**注意:**两个任务连起来做。

(1) 实验步骤

  1. 注释仪器,打开电源,手不要远离电源开关,随时准备关闭电源,注意各数码管、发光管的稳定性,静待10秒,确信仪器稳定、无焦糊味。

  2. 按Reset键初始化系统,并设置实验箱进入EM模式。设置Adr=00,按下NX,设置DB=66;而后按下NX,设置DB=E8;最后设置Adr=77,按下NX,设置DB=06

  3. 设置实验箱进入uEM模式。设置Adr=E8,按下NX,设置E8=FF DE B8H;而后按下NX,设置E9=CB FF FFH;最后按相同的方式将EAEB设置为FF FF FFH

  4. 设置实验箱进入uPC模式。设置uPC=00PC=00A=03;按NX三次,设置R2=77,按下STEP键,观察实验结果。

  5. 记录实验结果,关闭实验箱电源。

(2) 实验现象

  1. 第一次按下STEP键时,发现uPC显示64PC显示01

  2. 第二次按下STEP键时,发现uPc显示65MAR显示77

  3. 第三次按下STEP键时,发现uPC显示66W显示06

  4. 第四次按下STEP键时,发现uPC显示67A显示07

  5. 第五次按下STEP键时,发现uPC显示E8

  6. 第六次按下STEP键时,发现uPC显示E9OUT显示06

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(3)实验结论

  1. 由第二次按下STEP键发现MAR显示77,可知指令码为66H的含义是将R2寄存器中的内容读出并写入MAR寄存器。

  2. 通过一系列正确的设计,我们成功地完成了“输出A+W的结果右移一位的值送OUT输出”操作功能的实现。

四、建议

  1. 在分析66H处的指令时,可以将其与例子中的指令进行比较观察在二进制格式下有哪些位不同。

  2. 在编制指令时,要确定好“A+W”运算、“右移一位”和“送OUT”输出分别对应微指令在二进制格式下的哪些位置。

五、体会

通过此次实验,加深了我对计算机体系结构中PC寄存器和指令系统的理解,同时也让我学会了如何设计指令,还让我能将理论知识应用到实际情景中,为进行下一次实验打下了扎实基础。

六、思考题

在微指令结构的计算机中,一条指令从启动到产生功能经过哪些环节?

  1. 指令获取。

  2. 指令解码。

  3. 微指令执行。

  4. uPC更新。

  5. 取下一条指令。


http://www.ppmy.cn/server/14100.html

相关文章

C++ STL标准库,rotate函数详解

rotate翻译 rotate v.(使)旋转,(使)转动;(人员)轮换,轮值;轮种,轮作;定期调换地点(或位置)adj.(…

Python实现将文件夹下的所有pdf文件合并成一个pdf文件,并用文件夹名字命名

Python实现将文件夹下的所有pdf文件合并成一个pdf文件,并用文件夹名字命名 # -*- coding: utf-8 -*-import os import PyPDF2def merge_pdfs(folder_path):# 获取文件夹名称folder_name os.path.basename(folder_path)# 搜索文件夹内的所有PDF文件pdf_files [f fo…

基于Spring Boot的家具销售电商平台设计与实现

基于Spring Boot的家具销售电商平台设计与实现 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 系统部分展示 系统功能界面图,在系统首页可以查看首页…

服务器中毒怎么办?企业数据安全需重视

互联网企业: 广义的互联网企业是指以计算机网络技术为基础,利用网络平台提供服务并因此获得收入的企业。广义的互联网企业可以分为:基础层互联网企业、服务层互联网企业、终端层互联网企业。 狭义的互联网企业是指在互联网上注册域名,建立网…

01-服务与服务间的通信

这里是极简版,仅用作记录 概述 前端和后端可以使用axios等进行http请求 服务和服务之间也是可以进行http请求的spring封装的RestTemplate可以进行请求 用法 使用bean注解进行依赖注入 在需要的地方,自动注入RestTemplate进行服务和服务之间的通信 注…

Nacos和Eureka有什么区别!!!

一致性模型: Eureka:采用的是 AP(Availability, Partition Tolerance)模型,即在面临网络分区或部分节点故障时优先保证系统的可用性,牺牲一定的数据一致性。Eureka 通过自我保护机制,允许在节点…

《深入解析windows操作系统》第1章读书笔记

1、服务:指操作系统中可以被调用的例程(即函数,等价于系统调用?)、设备驱动程序或者服务器进程。一些特定术语如下: 1)Windows API函数:指Windows API中已经被文档化、可被调用的子例…

allegro输出正反面bom

不是前面两条命令,而是component report