计算机组成原理课程设计2023

计算机组成原理课程设计任务书

  • 实验目的:

深入了解计算机各种指令的执行过程,以及控制器的组成,指令系统微指令设计的具体知识,进一步理解和掌握动态微指令设计的概念;完成微指令控制的特定功能计算机的指令系统设计和调试。

  • 实验说明:

要进行这项课程设计,必须清楚地懂得:

  1. TEC-2机的功能部件及其连接关系;
  2. TEC-2机每个功能部件的功能与具体组成;
  3. TEC-2机支持的指令格式;
  4. TEC-2机的微指令格式,AM2910芯片的用法;
  5. 已实现的典型指令的执行实例,即相应的微指令与其执行次序的安排与衔接;
  6. 要实现的新指令的格式与功能。
  • 实验内容:

选定指令格式、操作码,设计如下指令:

加法指令

指令格式:D5DRSR, DISP 双字指令(控存入口100H)

功能: [DR]=[DR] +[[SR]+DISP]

把用绝对地址表示的内存单元ADDR2中的内容传送至地址为ADDR1的内存单元中保存。

指令格式:D8××,ADDR1,ADDR2 三字指令(控存入口110H)

功能: [ADDR1]←[ADDR2]

转移指令。

判断两个通用寄存器内容是否相等,若相等则转移到指定目的地址(IP+DISP),否则顺序执行。

指令格式:E1DRSR,DISP 双字指令(控存入口130H, DISP为相对转移地址偏移量)

功能: if DR=SR goto IP+DISP else 顺序执行。

  • 实验要求:
  1. 根据内容自行设计相关指令微指令(要求用最少的微指令条数实现机器指令的功能,以提高机器指令的执行速度, 同时应注意降低指令的复杂度,提高指令的可用性、友好程度及兼容性 );(务必利用非上机时间设计好微指令
  2. 设计测试程序、实验数据并上机调试。
  3. 设计报告内容:包括1、设计目的2、设计内容3、微指令设计(含指令格式、功能、设计及微指令)  


一、目的和要求

深入了解计算机各种指令的执行过程,以及控制器的组成,指令系统微指令设计的具体知识,进一步理解和掌握动态微指令设计的概念;完成微指令控制的特定功能计算机的指令系统设计和调试。

二、实验环境

PC机、TEC-2F仿真软件

三、具体内容

  1. 分析TEC-2机的功能部件组成,分析TEC-2机支持的指令格式等。

(一)AM2901芯片的内部结构和芯片的引脚信号

AM2901是位片结构,每片内仅有4位线路,内部组成包括:

  1. 4位的ALU,可以实现8种运算功能,每一位上的2个输入端数据分别用R和S表示,8种功能分别是R+S,S-R,R-S 3种算术运算,R∧S,R∨S,/R∧S,R⊕S,R⊙S 5种逻辑运算。这8种功能的选择控制,用外部送入的3位编码值I5~3实现的。ALU还有Cn+4、F、OVR、和F=0000 4位状态信息,并能接收最低位的一个进位输入信号Cn,ALU还给出了超前进位信号/G和/P。
  2. 16个4位的通用寄存器组,用R0-R15表示,和一个4位的Q寄存器。通用寄存器组为双端口读出和单端口控制写入的运行方式,而且运算后的结果经一个移位器实现写入。Q寄存器本身具有左、右移位功能且能接收ALU的运算结果。左右移位时,就有移出、移入信号RAM3、RAM0、Q3、Q0 4个信号。
  3. 该信片能接收外部送入的4位数据D3-0,并输出4位的数据Y3-0。Y3-0可以是通用寄存器A端口上的输出或ALU的运算结果F,并且输出允许控制信号/OE的控制,尽在/OE为低时,Y3-0才有输出。
  4. ALU的两个输入端R和S分别可以接收D输入、A端口或逻辑0数据,和A端口、B端口、Q寄存器或逻辑0数据。AM2901器件选用了12种组合的8种,即A_Q, A_B, O_Q, 0_B, 0_A, D_A, D_Q和D_0 8种组合,并用外部送来的3位控制码I2-0选择。
  5. AM2901采用另外3位外部送来的控制信号I8-6,一是选择向外部送出的数据的来源,二是选择内部的通用寄存器组和Q寄存器是否接收和如何接收数据写入。
  6. 在AM2901芯片内有16个通用寄存器R0-R15、R0-R3、R7-R15共13个寄存器作为通用寄存器供用户使用,R4-R6这3个寄存器分别作为SP、PC、IP。正常情况下,不能把这3个寄存器当作通用寄存器使用。

(二)AM2901芯片引脚信号

  1. D3-D0:外部送给AM2901的数据信号
  2. Y3-Y0:AM2901向外送出的数据信号
  3. A、B地址:选择通用寄存器组种的源与目的寄存器,当A和B同值时,被选中的同一个寄存器中的内容将被同时送到A、B两个数据输出端口。
  4. I8-I0:外部送来的3组3位控制信号,分别选择AM2901对数据结果的处理方案、ALU执行的运算功能、ALU接收的操作数来源。

(三)TEC-2机的控制器组成

  1. 指令寄存器IR:用于存放当前正在执行的指令内容。
  2. 程序计数器PC:PC是用运算器通用寄存器组中的寄存器R5实现的,程序计数器PC用于存放内存单元地址,
  3. 指令指针寄存器IP:IP是用运算器通用寄存器组中的寄存器R6实现的,IP用于存放当前正在执行的机器指令其指令代码所在的内存单元地址。
  4. 7片LS6116随机读写的存储器芯片组成的56位字长的微指令控制存储器,用于存放TEC-2机的微指令。其内容在刚加电时不定,加电后将首先从2片ROM中读出固化的、用于实现53条机器指令的微指令,稍加组织后写入这一控制存储器,这一过程称为装入微码。装入完成后,将从监控程序的零地址执行指令,完成TEC-2机的启动过程。之后,可以用LDMC指令向控制存储器写入新的微指令,实现新的机器指令。
  5. 微指令寄存器PLR由7片8位的寄存器芯片(6片LS374和1片LS273)组成,用于存放当前微指令的内容。

(四)为AM2910提供输入地址信号的配套线路

  1. 由两片LS2716ROM芯片组成的MAPROM,它可以将指令寄存器中的操作码变为一段微指令的入口地址。
  2. 由1片LS125和LS244组成的接受内部总线的IB9-0信号的选择门电路,把由水平板上的开关提供的微指令地址送入AM2910的地址输入端。
  3. 由1片LS125和微指令寄存器的PLR55-48组成的一组地址输入,把当前微指令中的后续地址B55-46送入AM2910的地址输入端。
  4. 这三组信号均为10位宽,且为互斥关系,分别由/MAP、/VECT和/PL加以选通。

(五)AM2910芯片

位片式大规模集成电路芯片AM2910是微指令控制器的核心部件,主要功能是控制产生下一条微指令地址,其结构框图如图所示。其中,内部所有器件及数据通路宽度均为12位,提供的微地址可寻址4K字空间的控制存储器。

  1. 功能:正确形成下一条微指令的地址,以保证微指令正确、高效地执行。
  2. 组成:AM2910包括一个四输入的多路地址选择器,用来选择寄存器/计数器(R),直接输入(D),微指令计数器(μPC)或微堆栈(F)中的一个作为下一条微指令的地址。
  3. 寄存器/计数器由12个D型触发器组成。当它用作寄存器时,主要用于保存一个微地址,用以实现微指令分支;当它用作计数器时,具有减一功能,主要用于控制微指令的循环次数,若装入的初值为N,则可执行N+1次。
  4. 微指令计数器由12位增量器和12位寄存器组成。 当增量器的进位输入C1为高电平时,多路器的输出Y加1后装入μPC,用于实现微指令的顺序执行;当C1为低电平时,多路器的输出Y直接装入μPC,用于实现同一条微指令的多次执行。
  5. 微堆栈是由5字×12位的寄存器堆和微堆栈指针μSP组成,主要用于保存微子程序调用的返回地址和微指令循环的首地址。微堆栈指针μSP总是指向最后一次压入的数据。因此,执行微指令循环时,允许不执行弹出操作而直接访问微堆栈栈顶。当堆栈中的数据达到5个时,发出堆栈已满信号(/FULL=0)。这时,任何压入操作都将覆盖掉栈顶数据。

(六)微指令格式

每条微指令由56位组成,从高到低各位标记为B55-B0,分为13个字段。

B55-B46的10位微码是下地址字段;

B55,B44备用;

B43-B40位CI3-1,用于给出AM2910芯片的16中命令码的编号;

B39-37、36分别为3位的SCC和1位的SC,给出AM2910芯片的条件判断信号/CC的选择码,用于保证微指令的条件转移等;

B35位备用;

B34-32位SST,控制标志寄存器的写入;

B31、B27、B23位为/MI0,REQ和/WE,用于控制内存的读写、外设接口的读写,以及微码的装入。

B30-B28位为MI8-6,用于选择运算结果存入的寄存器,以及Y输出的选择;

B26-B24位为MI5-3,用于选择进行何种算术或逻辑运算;

B22-B20位为MI2-0,用于选择R和S端的数据输入;

B19-B16位为A口地址;

B15-B12位为B口地址;

B11-B10位为SCi,控制最低位进位;

B9-B8位为SSH,形成移位信号;

B7位为A口地址选通信号;

B6-B4位为DC1,控制向IB总线的发送内容;

B3位为B口选通地址;

B2-B0位为DC2,选择接收的寄存器。

(七)自行设计新指令的微指令段

  1. MEM的内容是当前地址寄存器AR所存的地址单元的内容。
  2. 寄存器Q的内容可以是立即数,也可以是地址。
  3. 11条未定义的机器指令的6位操作码已定,最低两位可用于选择C、Z、V、S四个标志位作为判别条件。
  4. 11条未定义的机器指令具有对应的微指令段的入口地址,如D4对应的是100H,D8对应的是110H。
  5. 装入新指令的微码有两种方法,一是通过水平板上的开关与按键直接拨入,二是在程序中用LDMC指令实现自动装入。
  6. 新指令在每次TEC-2机重新加电后,至少得重新装入一次对应的微码;仅在装入相应微码后,新指令才能执行。

  1. 使用TEC-2仿真软件进行微指令级的设计和调试,完成微指令控制的特定功能计算机的指令设计。

选定指令格式、操作码,设计如下指令:

  1. 加法指令

指令格式:D5DRSR, DISP 双字指令(控存入口100H)

功能: [DR]=[DR] +[[SR]+DISP]

  1. 把用绝对地址表示的内存单元ADDR2中的内容传送至地址为ADDR1的内存单元中保存。

指令格式:D8××,ADDR1,ADDR2 三字指令(控存入口110H)

功能: [ADDR1]←[ADDR2]

  1. 转移指令。

判断两个通用寄存器内容是否相等,若相等则转移到指定目的地址(IP+DISP),否则顺序执行。

指令格式:E1DRSR,DISP 双字指令(控存入口130H, DISP为相对转移地址偏移量)

功能: if DR=SR goto IP+DISP else 顺序执行。

  1. 测试程序设计及调试。
  1. 加法指令

指令格式:D5DRSR, DISP 双字指令(控存入口100H)

功能: [DR]=[DR] +[[SR]+DISP]

  1. 设计思路:

将SR寄存器的内容取出来,暂存于Q寄存器。再取DISP的值与Q相加,结果与DR寄存器的内容再相加,赋值给DR寄存器。

  1. 微指令设计:

顺序

微指令

微码

说明

1

PC->AR,PC+1->PC

0000 0E00 A0B5 5402

取出操作数

2

MEM+[SR]->AR

0000 0E00 10D0 0082

[[SR]+DISP]

3

[DR]->Q

0000 0E00 8030 0008

因为ALU计算的八种组合中,没有D和B这个组合,所以需要把【DR】的内容放去Q寄存器里面,这样子才能实现ALU的运算

4

MEM+Q->[DR],CC#=0

0000 0E00 20E0 0008

实现相加并将值传送给[DR]的过程

  1. 微码实现:

1.PC->AR,PC+1->PC

0000

0E00

A0B5

5402

AM2910命令码为14,即14号指令,顺序执行

/MIO REQ /WE = 101(不操作),不需要读写存储器或输入输出设备

5->选PC,即R5

A ->运算结果送B口,运算器Y输出A口

4->设置最低进位为1,不移位

0->选择加法运算

2->运算器输出送AR 

B->运算数选择A/B口或0

5->选PC,即R5

2.MEM+[SR]->Q

0000

0E00

10D0

0082

AM2910命令码为14,即14号指令,顺序执行

/MIO REQ /WE = 101(不操作),不需要读写存储器或输入输出设备

5->选PC,即R5

A ->运算结果送B口,运算器Y输出A口

4->设置最低进位为1,不移位

0->选择加法运算

2->运算器输出送AR 

B->运算数选择A/B口或0

5->选PC,即R5

  1. [DR]->Q

4.MEM+Q->[DR],CC#=0

  1. 测试运行:
  2. 把微码存放于900H开始的内存单元中。

>E0900

0900    0000:0000  0000:0E00  0000:90C0  0000:0082  0000:0000

0905    0000:0E00  0000:00F0  0000:0000  0000:0000  0000:0E00

090A    0000:A0B5  0000:5402  0000:0000  0000:0E00  0000:10E0

090F    0000:0002  0000:0000  0000:0E00  0000:00F0  0000:0000

0914    0000:0000  0000:0E00  0000:90B0  0000:000A  0000:0000

0919    0000:0E01  0000:00E0  0000:0000  0000:0029  0000:0300

091E    0000:1020  0000:0010

>A0800

0800: MOV R1,900

0802: MOV R2,8

0804: MOV R3,100

0806: LDMC

0807: RET

0808:

运行加载微码的程序

>G800

输入程序运行

>A0820

0820: MOV R0,0001

0822: MOV [1070],R0

0824: MOV R0,1060

0826: MOV [1080],R0

0828: MOV R0,0001

082A: MOV [1065],R0

082C: MOV R0,1070

082E: MOV R1,1080

0830: NOP

0831: NOP

0832: RET

0833:

用E命令插入新指令

>E0830

0834    0000:D501  0000:0005

运行程序

>G820

查看结果

>D1060

>D1060

1060    0000  0000  0000  0000  0000  0001  0000  0000  ................

1068    0000  0000  0000  0000  0000  0000  0000  0000  ................

1070    0002  0000  0000  0000  0000  0000  0000  0000  ................

1078    0000  0000  0000  0000  0000  0000  0000  0000  ................

1080    1060  0000  0000  0000  0000  0000  0000  0000  .`..............

1088    0000  0000  0000  0000  0000  0000  0000  0000  ................

1090    0000  0000  0000  0000  0000  0000  0000  0000  ................

1098    0000  0000  0000  0000  0000  0000  0000  0000  ................

10A0    0000  0000  0000  0000  0000  0000  0000  0000  ................

10A8    0000  0000  0000  0000  0000  0000  0000  0000  ................

10B0    0000  0000  0000  0000  0000  0000  0000  0000  ................

10B8    0000  0000  0000  0000  0000  0000  0000  0000  ................

10C0    0000  0000  0000  0000  0000  0000  0000  0000  ................

10C8    0000  0000  0000  0000  0000  0000  0000  0000  ................

10D0    0000  0000  0000  0000  0000  0000  0000  0000  ................

>  

DR=1070,[DR]=0001,SR=1080,[SR]=1060,DISP=0005,[1065]=0001,

初始值[DR]=0001,经过操作后,[DR]=[1070]+[1065]=0001+0001=0002

结果正确。

(二)传送指令

把用绝对地址表示的内存单元ADDR2中的内容传送至地址为ADDR1的内存单元中保存。

指令格式:E0××,ADDR1,ADDR2,三字指令(控存入口130H)

功能:    [ADDR1]←[ADDR2]

  1. 设计思路:

先将内存单元ADDR2中的内容取出,送入Q寄存器。再将Q寄存器内容送入内存单元ADDR1中。

  1. 微指令设计:

顺序

微指令

微码

说明

1

PC->AR,PC+1->PC

0000 0E00 A0B5 5402

取出第一个操作码的地址,此时MEM=ADDR1的地址

2

MEM->R6

0000 0E00 30F0 6000

读出第一个操作数的地址,放置于IP,因为IP在当前伪代码中,是不会变的

3

PC->AR,PC+1->PC

0000 0E00 A0B5 5402

取出第二个操作码的地址

4

MEM->AR

0000 0E00 10F0 0002

取出第二个操作数的内容

5

R6->AR,MEM->R6

0000 0E00 20F6 6002

将第二个操作数的内容,通过IP专用寄存器,将值传递到第一个操作数

6

R6->MEM,CC#=0

0029 0300 1046 0010

将IP寄存器中的结果送入存储器,即内存单元ADDR1。

  1. 微码实现:

1.PC->AR,PC+1->PC

0000

0E00

A0B5

5402

AM2910命令码为14,即14号指令,顺序执行

5->选PC,即R5

4->设置最低进位为1,不移位

2->运算器输出送AR 

2. MEM->AR

0000

0E00

30F6

0000

AM2910命令码为14,即14号指令,顺序执行

/MIO REQ /WE = 001(存储器读)

地址寄存器AR

选择DC2为AR,内部总线的数据送到AR

3.PC->AR,PC+1->PC

0000

0E00

A0B5

5402

AM2910命令码为14,即14号指令,顺序执行

/MIO REQ /WE = 001(存储器读)

第一个0表示F送Q,Y选择F输出

第二个0表示R+S

F表示D送R口,0送S口

第三个0表示0000送A口

0000送B口

4.MEM->AR

0000

0E00

10F0

0000

AM2910命令码为14,即14号指令,顺序执行

/MIO REQ /WE = 101(不操作),不需要读写存储器或输入输出设备

5->选PC,即R5

A ->运算结果送B口,运算器Y输出A口

4->设置最低进位为1,不移位

0->选择加法运算

2->运算器输出送AR 

B->运算数选择A/B口或0

5->选PC,即R5

5.R6->AR,MEM->R6

0000

0E00

20F6

6002

AM2910命令码为14,即14号指令,顺序执行

6.R6->MEM,CC#=0

0029

0300

1046

0010

这是最后一条微指令,下一条是A4H

AM2910命令码为3,即3号指令条件转移

输出F = R+S(0+Q)

送往内部数据总线

  1. 测试运行:

把微码存放于900H开始的内存单元中。

>E0900

0900    0000:0000  0000:0E00  0000:90B5  0000:5402  0000:0000

0905    0000:0E00  0000:10F0  0000:0002  0000:0000  0000:0E00

090A    0000:00F0  0000:0000  0000:0000  0000:0E00  0000:A0B5

090F    0000:5402  0000:0000  0000:0E00  0000:10F0  0000:0002

0914    0000:0029  0000:0300  0000:1020  0000:0010

>A800

0800: MOV R1,900

0802: MOV R2,6

0804: MOV R3,110

0806: LDMC

0807: RET

0808:

运行加载微码的程序

>G800

输入程序运行

>A0820

0820: MOV R0,0001

0822: MOV [1030],R0

0824: NOP

0825: NOP

0826: NOP

0827: RET

0828: tor of Virtual TEC-2 By Guiheng Zhou, Jun. 2005, Sun Yat-sen University

用E命令插入新指令

>E0824

0824    0000:D800  0000:1040  0000:1030

运行程序

>G820

查看结果

>D1030

ADDR1=1040,ADDR2=1030,[ADDR2]=0001=[ADDR1],

由上图结果显示,ADDR2地址存入ADDR1地址单元内容中的0001。

设计测试成功。

  1. 转移指令。

判断两个通用寄存器内容是否相等,若相等则转移到指定目的地址,否则顺序执行。

指令格式:E5 DR SR,DISP 双字指令(控存入口140H,  DISP为相对转移地址偏移量)

功能:    if  DR=SR goto IP+DISP  else 顺序执行。

  1. 设计思路:

利用CND字段,即IR10-8,令IR10-8=101,则CC#=Z。当DR==SR时,Z=1,转移到指定目的地址;反之Z=0,程序顺序执行。

  1. 微指令设计:

顺序

微指令

微码

说明

1

DR-SR

0000 0E01 9190 0088

SR-DR结果改变标志位Z,用以测试SR与DR是否相等

2

PC->AR, PC+1->PC, CC#=CND

0029 03E0 A0B5 5402

PC内容送入AR。条件转移信号CC#=CND判断Z是否为1。当DR=SR时Z=1微程序发生跳转。

3

MEM+IP->PC, CC#=0

0029 0310 30D6 5000

R6=IP,IP+DISP送入PC,低电平有效

  1. 微码实现:

1.DR-SR

0000

0E01

9190

0088

AM2910命令码为14,即14号指令,顺序执行

9->不进行存储器或IO操作,运算结果不送寄存器;运算器Y输出运算结果(并没有使用)

0->B口使用DR,不需要微指令给B口地址

0->不需要条件测试

1->选择减法运算

0->进位设置为0,不移位

1->进行了运算,需要对标志位进行设置,来判断DR/SR是否相等

0->A口使用SR,不需要微指令给A口地址

88->使用SR、DR

/MO REQ /WE=101存储器和IO不操作

2. PC->AR, PC+1->PC, CC#=CND

0029

03E0

A0B5

5402

预设这是最后一条微指令,下一条是A4H。A4H微指令的功能是依据有无中断请求,决定是进入中断处理过程,还是顺序执行下一条指令。

AM2910命令码为3,即3号指令,条件执行

9->不进行存储器或IO操作,运算结果不送寄存器;运算器Y输出运算结果(并没有使用)

5->选PC,即R5

E->CC#=CND=Z

2->选择减法运算

4->设置最低进位为1,不移位

如果CC#=1则继续执行下第3条微指令(跳转IP+DISP);若CC#=0则此时为最后一条微指令。

1->运算数来源选择A口和B口

2->运算器输出送AR 

0->A口使用SR,不需要微指令给A口地址

/MO REQ /WE=101存储器和IO不操作

3. MEM+R6->PC, CC#=0

0029

0310

30D6

5000

这是最后一条微指令,下一条是A4H

AM2910命令码为3,即3号指令,条件执行

3->F/2->B

5->选PC,即R5

执行IP+DISP跳转,然后CC#置零。

0->R+S

0->设置最低进位为0

D->0B

/MO REQ /WE=101存储器和IO不操作

  1. 测试运行:

把微码存放于900H开始的内存单元中。

>E900

0900    0000:0000  0000:0E01  0000:9190  0000:0088  0000:0029

0905    0000:03E0  0000:A0B5  0000:5402  0000:0029  0000:0310

090A    0000:30D6  0000:5000

>A800

0800: MOV R1,900

0802: MOV R2,3

0804: MOV R3,140

0806: LDMC

0807: RET

0808:

运行加载微码的程序

>G800

输入程序运行

DR==SR

DR!=SR

>A820

0820: MOV R1,0001

0822: MOV R2,0001

0824: NOP

0825: NOP

0826: MOV R3,1111

0828: RET

0829: MOV R3,3333

082B: RET

082C:

>A820

0820: MOV R1,0001

0822: MOV R2,0002

0824: NOP

0825: NOP

0826: MOV R3,1111

0828: RET

0829: MOV R3,3333

082B: RET

082C:

用E命令插入新指令

>E824

0824    0000:E512  0000:0005 //R1=R2时跳转至0824+0005=0829H处

运行程序

>G820

查看寄存器结果

>R

DR==SR

DR!=SR

根据上述截图中R3内容判断是否执行跳转。

若R3=1111H则表示顺序执行(R1!=R2)

若R3=3333H则表示跳转成功(R1==R2)

如上图所示,均设计成功。

4.所做任务

通过搜索学习相关内容,询问老师和同学一些指令细节,查看多篇博客和翻阅指导书,最终我独立完成了此次计算机组成课程设计。

四、实验心得

通过学习TEC-2常用微指令的微码说明,顺利地完成了第三题。主要问题出现在第一题和第三题,通过SR、DR相减改变的标志符Z是1还是0判断是否相等并跳转或继续执行,本学期我学习了汇编语言,其实能看出来这题是设计实现类似JZ指令,但是其中仍然有难点:跳转至相对地址,我不知道如何取用相对偏移地址DISP。在这几天一直在思考汇编语言中的几种寻址方式,特别是寄存器相对寻址,再研究关于跳转至绝对地址的使用慢慢摸索,最终总算实现了它。除此之外还有以下收获:

  1. 掌握TEC-2常用微指令及其微码含义,与下址、最低进位、以为控制、运算功能选择等有关。
  2. 掌握TEC-2微程序运行测试步骤:设计微程序→进入Monitor程序用E命令输入微码(如E900)→输入加载微码的程序(如A800)→运行加载微码的程序(如G800)→用另一个汇编语言程序测试新指令(准备测试数据→调用新指令→运行测试程序)→查看结果(用D/R命令查看寄存器或内存状态)
  3. 需要平时注意听老师讲的细节上的问题。比如,AM2901外部数据只能从A口进入,结果回存只能通过B口等。
  4. 答辩时老师问第3题中指令格式:E5 DR SR,DISP 双字指令,从E5改成E4是否能继续运行。当时我回答不能但是对其原因仍然不是很明白。课后通过询问同学和查阅资料,证实了E5确实不能改成E4,因为涉及到条件判断如下↓

5.通过这次实验,让我最深刻的是,很多指令,我们不是设计出来就好了,而且还要考虑它的优越性,以及通用性,就像第二题一样,我们本来可以用7条指令做出来的东西,但是我们得通过一下专用的寄存器,充分发挥出微程序控制指令,灵活,便捷,高效的特点,而不是像硬布线控制方式一下,只考虑实现。尽管花了很长时间,解决一个小问题,但是有老师的指导,以及提示,以及自己的不懈努力,也是成功的解决了问题。收益颇丰,这次课程设计。

五、附加材料

补充一些TEC-2机的内容:

TEC-2机指令有6位操作码,故支持64条指令,其中53条已实现,用于写出该机的监控程序。

IR:指令寄存器,存储当前正在执行的指令。

指令最高6位(IR15-10)是操作码,之后两位IR9-8是条件码,把它用作条件转移指令的判断条件。因此可以认为这两位是指令的扩展操作码。除条件转移指令之外,其余指令不使用这两位。

常用微指令

  1. 19H:取指令,PC增量
  2. 1AH:按新取指令的操作码找到该指令本身微程序段的入口地址。
  3. A4H:根据有无中断请求决定进入中断处理过程还是顺序执行。

常用命令

  1. 2号命令:指令功能分支,无条件转MAP
  2. 3号命令:条件转移,条件测试CC#为1时顺序执行,否则按下址D转移。
  3. 14号命令:顺序执行下一条微指令。
  • 25
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值