计算机组成原理课设Tec-2 03-指令设计

看了前面两篇的话,算是个入门了,相当于你已经能跑 hello world!了,接下来就是进入设计的阶段了,如果还没看前两篇的话,建议先去看看

01-基础入门

02-实例分析

首先,每一年的题目会有微小的变化,比如换控存入口,减法变成加法,最后输出位置之类的,但是换汤不换药

第一题

就是第二篇的实例分析

计算机组成原理课设Tec-2 02-实例分析

第二题

题目:

把立即数DATA传输至地址为ADDR的内存单元中保存

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

功能:    [ADDR]=DATA

设计思路

该指令为三字指令,类似于实验一,需要先取出第二个地址中的内容,并储存回第一个地址位置。由此可见第一个地址直至最后都需要使用到,为了增加效率,可以先将第二个操作数取出储存至Q寄存器,再取用第一个地址

流程图中的缩写含义:

PC: Program Counter (程序计数器)

AR: Address Register (地址寄存器)

MEM: Memory (当出现MEM的时候,就是在对"AR"存的地址取值)

AR相当于"指针",MEM相当于"值"

Q: Q Register (用来计算的)

微指令流程图

微指令详细设计

序号

微指令功能

微指令代码

详细功能

1

PC+1→AR

0000 0E00 90B5 5402

为AR读入第二个操作数的地址做准备

2

MEMQ

0000 0E00 00F0 0000

读第二个操作数并送Q寄存器

3

PCAR,PC+1→PC

0000 0E00 A0B5 5402

为AR读入第一个操作数的地址做准备

4

MEM→AR

0000 0E00 10F0 0002

AR读入第一个操作数的地址

5

QMEM,CC#=0

0029 0300 1020 0010

Q寄存器结果送回第一个操作数位置

仔细观察你会发现,实验二就是把实验一的第2条和第6条去掉了。具体原因我们来分析一下:

下面这部分建议把02-实例分析也打开到对应的位置,双开对比着看

首先,第一题和第二题的共同点都是要把数据最后存回ADDR中。区别在于,第一题和第二题的第一步指令虽然功能都是PC+1→AR,但是在第一题中,读入的是ADDR1的地址,第二题中读入的是DATA的地址。也就是说,在第一题中对AR取值后取出来的是另一个地址,第二题取出来的直接就是要用的的数字了。即:第一题中是指针的指针,第二题只是一个指针,取一层就出来值了。

所以,在第二题中,指令2直接可以MEMQ,因为MEM(也就是对AR取值)就是立即数DATA了,而第一题你需要再加一条MEMAR,这样才把ADDR1的地址取出来,再执行MEMQ才是把ADDR1里的东西取出来

实验二去掉实验一的第6条单纯是因为不需要运算了,直接送回就完事了。

具体的单条分析也在02中,这里就不贴了。
 

第三题

题目:

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

指令格式:E1 DR SR,ADDR   单字指令(控存入口130H)

功能:    if DR!=SR go to ADDR else 顺序执行

设计思路

该指令为二字指令,第一步让SR-DR,把结果是否为零的信息记录在标识位,接着根据标志位Z#来条件跳转。等于1,说明两个数不相等,微程序跳转,取出需要跳转的位置位置至PC。反之,顺序执行

流程图中的缩写含义:

SR,DR: 通用寄存器,Tec-2 共有16个寄存器,部分有专属功能,部分为通用寄存器

PC: Program Counter (程序计数器)

AR: Address Register (地址寄存器)

MEM: Memory (当出现MEM的时候,就是在对"AR"存的地址取值)

AR相当于"指针",MEM相当于"值"

(CC)#: 条件码

Z#:条件码
(条件码这个东西有单独说)

微指令流程图

微指令详细设计

序号

微指令功能

微指令代码

详细功能

1

SR-DR

0000 0E01 9190 0088

通过SR-DR改变Z状态值

2

PCAR

PC+1PC

(CC)#=Z#

0029 03E0 A0B5 5402

为顺序执行做准备

并通过判断Z状态值判断是否要跳转

3

MEM→PC
(CC)#=0

0029 0300 30F0 5000

跳转

逐条分析

每条指令里面,标黄的部分是关键的指令位,对着analyzer一条一条看一遍,大概能理解了就(看起来最难的题结果只有三条指令)

Instruction#1

B55-B46

下地址字段

顺序执行时,下地址段任意

B45-B44

备用

备用位任意

B43-B40

CI3~CI0

顺序执行

B39-B37

SCC

任意

B36

SC

任意

B35

备用

备用位任意

B34-B32

SST

接受ALU标志位输出值

B31,B27,B23

/MIO、/REQ、/WE

不操作

B30-B28

MI8-6

运算器Y输出送F

B26-B24

MI5-3

运算功能选择为“S-R

B22-B20

MI2-0

Am2901的运算数来源选择A口和B

B19-B16

A口

未用,任意

B15-B12

B口

未用,任意

B11-B10

SCi

进位为0

B9-B8

SSH

无需移位

B7

SA

指令给R赋值

B6-B4

DC1

未向总线发送控制,可任意

B3

SB

指令给S赋值

B2-B0

DC2

未使用

Instruction#2

B55-B46

下地址字段

跳转执行,下地址段为A4,进行中断检测

B45-B44

备用

备用位任意

B43-B40

CI3~CI0

条件转移

B39-B37

SCC

判断

B36

SC

任意

B35

备用

备用位任意

B34-B32

SST

不是运算,任意即可

B31,B27,B23

/MIO、/REQ、/WE

不操作

B30-B28

MI8-6

运算器Y输出送A,寄存器结果送回B

B26-B24

MI5-3

运算功能选择为“R+S

B22-B20

MI2-0

Am2901的运算数来源选择0B

B19-B16

A口

R5(PC)

B15-B12

B口

R5(PC)

B11-B10

SCi

进位设置为1(实现PC+1)

B9-B8

SSH

无需移位

B7

SA

选择A口地址

B6-B4

DC1

未使用

B3

SB

选择B口地址

B2-B0

DC2

运算器输出送AR,选/GAR

Instruction#3

B55-B46

下地址字段

跳转执行,下地址段为A4,进行中断检测

B45-B44

备用

备用位任意

B43-B40

CI3~CI0

条件转移

B39-B37

SCC

任意

B36

SC

任意

B35

备用

备用位任意

B34-B32

SST

不是运算,任意即可

B31,B27,B23

/MIO、/REQ、/WE

储存器读取

B30-B28

MI8-6

运算器Y输出送F口,寄存器输出FB

B26-B24

MI5-3

运算功能选择为“R+S

B22-B20

MI2-0

Am2901的运算数来源选择D0

B19-B16

A口

未用,任意

B15-B12

B口

R5(PC)

B11-B10

SCi

进位为0

B9-B8

SSH

无需移位

B7

SA

选择A口地址

B6-B4

DC1

未使用

B3

SB

选择B口地址

B2-B0

DC2

未使用

 

 

下一篇是一些需要注意的点和心得

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值