计算机组成原理——实验3:TEC-2机微程序设计实验

实验三:TEC-2机微程序设计实验

一.实验目的

        比较深入透彻地学懂计算机各种指令的执行过程,以及控制器的组成、设计的具体知识。理解动态微程序设计的概念。

二、实验原理

2.1 微程序控制器的基本工作原理

微程序控制器组成中的核心成分是控制存储器,它用于存储按一定的规则组织好的全部控制信号,通常用ROM器件来实现。在TEC—2教学机上用7片*8位LS6116组成。其主要内容由二部分组成,一部分是由执行一条指令的一个运行步骤所用到的全部控制信号(产生的微命令);另一部分是指明下一个步骤的地址信息(下一条微指令地址)。

因此,微程序控制器的工作原理是依据读来的机器指令的操作码,找到与之对应的一段微程序入口地址,并按由指令具体功能所确定的次序,逐条从控制存储器中读出微指令,以“驱动”计算机各功能部件正确运行。

2.2 TEC -2机的控制器部件的组成

TEC -2机的微程序控制器的基本组成如下图所示:

(1)由7片LS6116RAM组成的56位字长的微程序控制存储器

用于存放TEC-2机的微程序。其内容在刚加电时不定,加电后将首先从2片ROM(LS2716芯片)中读出固化的、用于实现53条机器指令的做程序,经组织后写入这一控制存器,这一过程称为装入微码。装入完成后,将从监控程序的零地扯执行指令,完成TEC-2机的启动过程。这之后,还可以用LDMC指令按規定的办法向控制存俙器写入新的微程序,以实现新的机器指令。从简化逻辑框图上可以看到,控制存儲器的地址为µRA9~0,读出的信息送微指令流水线寄存器PLR。

2)微指令寄存器PLR

由7片8位的寄存器芯片(6片LS374和1片LS273)组成,用于存放当前微指令的内容。

(3)微程序定序器AM2910芯片

核心功能是依据机器的运行状态与当前微指令的有关内容等,正确地形成下一条微指令的地址,以保证微程序按要求的微指令序列关系自动地逐条衔接执行。

(4)程序计数器PC当前指令地址记忆寄存器IP

用运算器通用寄存器组中的两个选定的寄存器R5和R6实现。

(5)指令寄存器IR:用于存放当前正在执行的指令内容。

(6)为AM2910提供输入地址信号的配套线路,包括:

  • 两片LS2716ROM组成的MAPROM,它变指令寄存器中的操作码转换成一段微程序的入口地;
  • 1片LS125和1片LS244组成的接收内部总线IB9-0选择门电路,它把由水平板上的开关提供的微指令地址送AM2910的地址输入端;
  • 1片LS125和微指令寄存器PLR55-48组成的地址输入,把当前微指令中的后续地址B55~46送入AM2910的地址输入端:请注意,1片LS125(共4位独立的输入和输出端)分成两组(每组两位)分别用于②和③两项用途。

7)AM2910输出的配套电路,包括:

  • 1片LS175和1片LS374寄存器组构成的记忆电路,用于保存当前微指令的地址,其输出仅送往显示灯部分,以显示当前微指令的地址;
  • 3片LS257芯片构成的微控存地址选择形成电路,它实现在AM2910的10位输出地址与存储器地址寄存器的低10位地址之间的选择,结果送往微控存的地址输入端,用于完成微控存单元的读写操作;选择信号是Smux;
  • 3片计数器芯片LS161组成的地址计数器电路,其输出(共10位)通过两片LS244与刚提到的3片LS257的10位输出形成“线或"关系,用计数器的一个输出端Y11实现二者之间的选择,Y11为0时,pRA9pRAO是计数器的输出信号,提供完成装入微码过程的微控存的地址,Y11为1时,表明装入微码的过程已结束,微控存的地址uRA9uRA0为3片LS257的输出信号,以完成机器指令运行过程中的微控存的读、写(写仅用于LDMC指令)操作。

(8)2片LS2716ROM组成的固化微码保存电路和读写控制电路

这是为机器加电后完成装入微码所配备的专用线路,除2片LS2716外,还有3片LS161芯片(计数器),1片LS61芯片,2片LS244、1片Gal20v8、1片LS74、1片LS23和1片LS00。

TEC-2机支持64条基本机器指令,已实现53条指令,保存在2片ROM芯片中。2片ROM为LS2716芯片,组成一个2K容量的16位固定存储器。它每4个相邻的字存放一条56字长的微指令,其中第4个字的最高8位未用,用0填充。为了把每一条微指令装入微控存,就必须分4此依次读出4个16位的字,并分别送到56位字长的LDR寄存器的不同的16位部分,然后一次写入56位的微控存中。为此,设立了两个地址计数器。第一个计数器由3片4位的计数器LS161芯片组成,加电时使其被清零,以后没来一个特定的工作脉冲使其计数一次。他的输出,一方面用作微控存写入单元的地址,又用作读ROM芯片的高9位地址。读ROM芯片的最低两位地址则由第2个计数器提供,这是一个用一篇计数器电路LS161芯片接成4分频的计数器,每计满4此则给出一个脉冲输出信号,用作为第一个计数器的特定技术脉冲,保证第二个计数器每计满4次,第一个计数器才计数一次,两个计数器的输出拼接成11位的地址,用于读ROM的字地址。第2个计数器的4次计数的不同状态,还用于控制把从ROM读出的内容写入LDR寄存器的不同部分。当读完ROM的所有单元(共2048个字),计数器的Y11将从0变成位1,则结束微码装入操作。

2.3 微指令格式

每条微指令由56位组成,具体如图:

18位微码用于控制与给出每条微指令的下地址,供控制器使用。其中:

  • B55-B46的10位微码是下地址字段;
  1.         1)B45、B44备用;
  2.         2)B43-40为CI3-1,适用于给出AM2901芯片的16种命令码的编号;
  • B39-37、B36分别为3位SCC和一位SC。

提供给运算器的控制信号共26位,包括:

  • A口地址、B口地址与对应地址选择控制信号SA、SB供10位;
  • 3组3位的AM2910控制信号MI8-6、MI5-3、MI2-0共9位;
  • 控制标志寄存器写入SST、最低位控制信号SCi、移位信号形成SSH三个字段共7位。

最后三位微码/MI0、REQ和/WE控制内存的读写、外设接口的读写与微码的装入。

2.4 TEC-2机微程序设计的具体步骤

(1)依据TEC-2机的具体硬件结构,要实现的新指令的格式与功能(包括寻址方式、地址、字长),设计该指令的执行步骤与他们的衔接次序;

(2)按每一执行步骤的执行功能,确定对应的微指令字各字段的编码,既包括微指令的各控制码字段的码值,也包括微指令的下地址字段的值,AM2910器件的命令码,和形成其判断条件值的字段码;

(3)选择操作码(OP码)和微程序入口地址时查看附录2各条指令的操作码及微程序入口地址表格;

(4)不对存储器和IO端口操作时,MIO、REQ、/WE的编码为10X。

(5)装入微码程序,使用特殊命令LDMC时,要求:R1为微程序在内存中的始地址; R2为微程序指令长度;R3为微程序在控存中的入口地址。

2.5 装入微指令到控制存储器的两种操作方法

(1)在程序中用LDMC指令装入微指令
具体方法见实验步骤,本实验用这种方法。

(2)通过水平板上的开关手工拨入

  • 首先拨功能开关FS1-FS4为0000(均朝下方)位置,并使运行方式开关处于连续运行状态;
  • 用16位数据开关拨好控存地址(实用低10位)并按RESET按键,将其打入地址寄存器AR;
  • 拨第一条微指令字的最高16位微码(其中高位字节无用),按STEP CLK按键;
  • 拨次高16位微码,按STEP CLK按键;
  • 拨次高16位微码,按STEP CLK按键;
  • 拨最低16位微码,STEP CLK按键。此时将完成第一条微指令字的装入,控存地址将自动增1;
  • 重复③,④,⑤和⑥四步,依次装入接下来的微指令字的四段内容。

2.6 56位微码控制信号

三.实验内容

选定指令操作码,指令格式,设计一条指令,其功能是把用绝对地址表示的内存单元

A中的内容与内存单元B中的内容相加,结果存放在B单元中。

3.1 通过以下实例熟悉微指令的装入、新指令的运行及测试

例:用绝对地址表示的内存单元ADDR1的内容与内存单元ADDR2中的内容相加,结果存放到内存单元ADDR2中。

确定指令格式:

(1)微指令流程图

2)编写微程序
PC→AR,PC+1→PC;   0000 0E00 A0B5 5402

MEM→AR;                0000 0E00 10F0 0002

MEM→Q;                  0000 0E00 00F0 0000

PC→AR,PC+1→PC;   0000 0E00 A0B5 5402

MEM→AR;                0000 0E00 10F0 0002

MEM+Q→Q;              0000  0E01 00E0 0000

Q→MEM,CC#=0;     0029 0300 1020 0010

微程序分析

① PC→AR,PC+1→PC;  

0000 0E00 A0B5 5402,十六进制代码中0E00代表顺序执行、A0B5代表读写不设置操作,101,WE=1是为了把PC送到内部总线好让AR接收,另外Cin=1,R+S,A+B口地址为0101、5402代表5来自B口地址,4设置进位为1即PC地址加一。

② MEM→AR;  

0000 0E00 10F0 0002,十六进制代码中0E00代表顺序执行、10F0代表1是无,F是R=D,S=0(D输入端是内部总线输入来的数据)加上WE=1(MEM读到内部数据总线),这样Y=D+0=MEM+0会出现在内部总线、0002代表2是选择DC2为AR这样内部总线的数据会传送到AR寄存器。

③ MEM→Q;  

0000 0E00 00F0 0000,十六进制代码中0E00代表顺序执行、上述同理,只不过把F(D+0,也就是MEM的内容)再传送到到Q,选择F->Q,F,R=D,S=0,所以是00F0。

④ PC→AR,PC+1→PC;  

0000 0E00 A0B5 5402同微码分析(1)。

⑤ MEM→AR;  

0000 0E00 10F0 0002同微码分析(2),这里(4)与(5)的微码已经是在取第二个数据的地址和内容了以便后续进行通过寄存器地址进行两数的相加求和运算。

⑥ MEM+Q→Q;  

0000 0E01 00E0 0000,十六进制代表中00E0代表WE那边001,存储器读(MEM会到D中去),然后设置F->Q,F,R+S,R=D(MEM),S=Q,这样就实现了MEM+Q->Q,也就是两数通过寄存器地址运算求和并保存到第二个数那里去(这里Q已经是第二个Q了)。

⑦ Q→MEM,CC#=0;  

0029 0300 1020 0010,十六进制代码中0029代表最后要转移到A4H(A4H微指令的功能是依据有无中断请求,决定是进入中断处理过程还是顺序执行下一条指令,这是每条机器指令完成后应该执行的一步操作),A4转换为二进制是10100100,前面补0,后面两个备用也是0得到0029、0300代表转移条件,3#,CC#=/CC、1020代表1是无,F,2是R=0,S=Q,这样0+Q出现在Y,WE那边存储器写,000、0010代表送往内部总线的数据DC=1,运算器输出即F=0+Q,这样就可以实现写入存储器Q->MEM中去了。

3)启动TEC-2机,进入监控程序状态

4)将微码输入到由900H开始的内存单元中。写入微码时,每条微指令的前8位补全0,补齐64位。

① 用“E”命令将微码写入内存

>E900↙

屏幕显示:(每个数值间空格键隔开,回车键结束。)

0900:  0000  0E00  A0B5  5402   0000

0E00  10F0  0002  0000   0E00

00F0  0000  0000  0E00   A0B5

5402  0000  0E00  10F0   0002

0000  0E01  00E0  0000   0029

0300  1020  0010↙

② 用“D”命令检查写入是否正确

>D900↙

屏幕显示:

0900 0000  0E00  A0B5  5402  0000  0E00  10F0  0002

0908 0000  0E00  00F0  0000  0000   0E00  A0B5 5402

0910 0000  0E00  10F0  0002  0000   0E01  00E0 0000

0918 0029  0300  1020   0010 ……

5)将微码加载到微控存中

将内存存放的微程序装入到控制存储器中,由专用指令LDMC完成。

① 用“A”命令输入用于装入微程序的汇编程序

>A800↙

屏幕显示:

0800:

继续输入:

MOV     Rl,900         ;900:微码在内存的起始地址

MOV     R2,7          ;7:微程序长度

MOV     R3,100         ;100:微程序在控存的起始地址(为什么是“100”)

LDMC                   ;加载微码指令

RET

② 用“G”命令运行加载微码的程序

>G800↙

执行后,微码便装入到起始地址为0100H的微程序控制存储器中

6)输入验证程序,运行新指令

① 用“A”命令输入程序

>A820

屏幕显示:

0820:

继续输入:

MOV     R0,0023

MOV     [A00],R0

MOV     [A01],R0

NOP

NOP

NOP

RET

② 用“E”命令将 NOP填充位置改为新指令码

>E826↙

屏幕显示:

0826:

继续输入:

D400 0A00 0A01↙

③ 用“U”命令查看输入的程序

>U820↙

屏幕显示:

0820: 2C00 0023   MOV   R0,0023

0822: 3400 0A00   MOV   [0A00],R0

0824: 3400 0A01   MOV   [0A01],R0

0826: D400       DW     D400

0827: 0A00       ADC    R0,R0

0828: 0A01       ADC R0,R1

0829: AC00       RET

……

④ 用“G”命令执行验证程序

>G820↙

7)观察运算结果

由“D”命令检查  0A00、0A01单元内容

>DA00↙

屏幕显示:

0A00 0023 0046……

0A01单元内容为 0046,结果正确。

 

四. 实验器材

1. TEC-2机一台,电脑一台

2. TEC-2模拟软件一套

五. 实验结果分析

1、将微码输入到由900H开始的内存单元中
(1)用“E”命令输入微码

用E指令进行修改内存操作,然后将实验内容中的7条微程序的微码输入到900H开始的单元中去。

(2)用“D”命令查看输入的微码

2、将微码加载到微控存中去

用户运行的程序从800H开始,故输入A800,其中R1代表微码在内存中的首地址,R2代表微指令数目,R3代表微码在微控存中的首地址,再通过LDMC指令加载微码指令,通过G800命令加载,即可将微码装入起始地址为100H的微控存中去。

3、输入程序,运行新指令

输入A820开始进行新指令将立即数0023输入给R0,然后将R0寄存器的地址给A00和A01,其中R0的内容在[A00]和[A01]中,之后通过U命令查看输入的指令,确保指令输入正确,然后通过G820命令执行。

(1)用“A”命令输入程序

(2)用“E”命令输入新指令

(3)用“U”命令查看输入的程序

(4)用“G”命令运行程序

4、查看运行结果

用DA00命令执行,看0A01单元为0046代表0023+0023=0046运算正确,至此实验结束。

 

六. 实验心得

本次实验要求我们把用绝对地址表示的内存单元ADDR1的内容与N内容单元ADDR2的内容相加,将结果保存到ADDR2单元中,即[ADDR1]+[ADDR2]->[ADDR2]。由于系统中64条指令已经实现了53条,其中这一条是8086系统指令不自带的,故需要我们自己进行指令编写以及设计。

首先,我深入内部了解AM2910微程序定序器,以及其相关的其他程序控件如LS125、LS14等协助AM2910完成内部总线以及指令的控制。然后,运用汇编语言相关知识分析微程序实现过程,通过查找实验指导书附录明确其对应的十六进制微码,再将微码输入到内存单保存,将微码加载到微控存,之后便可以输入程序执行新指令。

我认为本实验的重点和重点是理解程序指令以及微指令之间的关系,找出微码对应的十六进制代码。我将本次实验用到的7条微指令在上述报告中进行了分析。

通过本次实验,我比较深入透彻地学懂计算机各种指令的执行过程,以及控制器的组成、设计的具体知识;实现了在TEC-2机仿真软件中设计一条机器指令,设计所需的微指令与如何装入微码,运行自己编写的指令。并且,掌握了利用E命令输入微码,D命令查看输入的微码,然后使用A命令输入加载微码的程序,G命令运行加载微码的程序,E命令输入新指令、U命令查看输入程序等。

同时,这次实验的内容也为后面的课程设计做好了铺垫准备。

上课李老师留的问题:0826 D4XX第4条微指令执行后,PC=?

答:PC=0829。在微指令开始执行之前,PC=0826;指令开始编译,在MAP之前有一条PC+1得指令,此时PC=0827,指向ADDR1;当执行第1条微指令(PC→AR,PC+1→PC;)时,PC=0828,指向ADDR2;当执行第4条微指令(PC→AR,PC+1→PC;)时,PC=0829,指向ADDR2得下一个区域。

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阮阮的阮阮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值