《计算机组成原理》课程设计---微程序设计

《计算机组成原理》课程设计---微程序设计

  • 一、目的和要求
  • 二、实验环境
  • 三、具体内容
        • 1.分析TEC-2机的功能部件组成,分析TEC-2机支持的指令格式等。
          • (一)AM2901芯片的内部结构和芯片的引脚信号
          • (二)AM2901芯片引脚信号
          • (三)TEC-2机的控制器组成
          • (四)为AM2910提供输入地址信号的配套线路
          • (五)AM2910芯片
          • (六)微指令格式
          • (七)自行设计新指令的微程序段
        • 2.使用TEC-2仿真软件进行微指令级的设计和调试,完成微程序控制的特定功能计算机的指令设计。
          • (1)把用绝对地址表示的内存单元ADDR1中的内容与内存单元ADDR2中的内容相加,结果存于内存单元ADDR1中。
          • (2)将一通用寄存器内容减去某内存单元内容,结果放在另一寄存器中。
          • (3)转移指令。判断两个通用寄存器内容是否相等,若不相等则转移到指定绝对地址,否则顺序执行。
        • 3.测试程序设计及调试。

一、目的和要求

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


二、实验环境

Windows10
TEC-2仿真软件


三、具体内容

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-R63个寄存器分别作为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芯片

1.功能:正确形成下一条微指令的地址,以保证微程序正确、高效地执行。
2.组成:AM291包括一个四输入的多路地址选择器,用来选择寄存器/计数器(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机重新加电后,至少得重新装入一次对应的微码;仅在装入相应微码后,新指令才能执行。



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

(1)把用绝对地址表示的内存单元ADDR1中的内容与内存单元ADDR2中的内容相加,结果存于内存单元ADDR1中。

指令格式:D8××,ADDR1,ADDR2, 三字指令(控存入口110H)
功能: [ADDR1]=[ADDR1] + [ADDR2]

1.指令格式
D8XX
ADDR1
ADDR2

2.功能
[ADDR1]=[ADDR1]+[ADDR2]

3.设计
先将内存单元ADDR2中的内容取出,送入Q寄存器。然后取出内存单元ADDR1中的内容与Q寄存器的内容相加,结果暂存于Q寄存中,最后将Q寄存器中的内容送入内存单元ADDR1中。

4.微程序
PC+1->AR 0000 0E00 90B5 5402
将存储第二个数地址的内存单元地址送入AR

MEM->AR 0000 0E00 10F0 0002
读取第二个数的内存单元地址

MEM->Q 0000 0E00 00F0 0000
读取第二个数送入Q寄存器

PC->AR,PC+1->PC 0000 0E00 A0B5 5402
将存储第一个数地址的内存单元地址送入AR,PC+1

MEM->AR 0000 0E00 10F0 0002
读取第一个数的内存单元地址

MEM+Q->Q 0000 0E01 00E0 0000
读取第一个数并与第二个数相加,结果送Q寄存器

PC+1->PC 0000 0E00 A0B5 5400
PC+1,形成下一条指令地址,保证程序正确走向

Q->MEM,CC#=0 0029 0300 1020 0010
将Q寄存器中的结果送入存储器,即内存单元ADDR1

(2)将一通用寄存器内容减去某内存单元内容,结果放在另一寄存器中。

指令格式:E0 DR SR,ADDR (SR,DR源、目的寄存器各4位)双字指令(控存入口130H)
功能: DR=SR-[ADDR]

1.指令格式
E0XX
ADDR

2.功能
DR = SR - [ADDR]

3.设计
先从存储器中取出内存单元ADDR的地址送到AR,然后取出AR指向的存储器中内存单元ADDR的内容,同时用通用寄存器SR的内容减去该内存单元ADDR的内容,将结果送入通用寄存器DR中。

4.微程序
PC->AR,PC+1->PC 0000 0E00 A0B5 5402
将存储ADDR地址的单元地址送入AR,PC+1

MEM->AR 0000 0E00 10F0 0002
读取内存单元ADDR的地址,送入AR

SR-MEM->DR 0029 0301 31D0 0088
读取ADDR中的数,用SR-[ADDR],结果送入DR


(3)转移指令。判断两个通用寄存器内容是否相等,若不相等则转移到指定绝对地址,否则顺序执行。

指令格式:OP DR SR,ADDR 双字指令(控存入口地址根据操作码而定)
功能: if DR!=SR goto ADDR else 顺序执行。

1.指令格式
E5XX
ADDR

2.功能
若DR!=SR,则微程序跳转至ADDR;否则,顺序执行下一条指令。

3.设计
将两个通用寄存器SR、DR相减,结果不保存,根据运算结果重新设置标志位。将存储ADDR的内存单元地址送入AR,并选择标志位Z赋值给CC/,并将PC+1,形成下一条指令地址。若SR不等于DR,则微程序跳转至A4H,若无中断请求,则顺序执行下一条指令,下一条指令设为对通用寄存器R7赋值,以此来检验是否执行该指令。若SR等于DR,则微程序不跳转,顺序执行,将ADDR送入PC,ADDR地址的微指令为RET,微程序结束。

4.微程序
SR-DR 0000 0E01 9190 0088
用SR-DR,结果不保存,设置标志位

PC->AR,CC#=CND,PC+1->PC 0029 03E0 A0B5 5402
选择标志位Z作为CC#的值,若SR!=DR, 跳转至A4H,否则顺序执行

MEM->PC 0029 0300 30F0 5000
读取ADDR送入PC


3.测试程序设计及调试。

(微码程序加载及测试新指令)
(1)把用绝对地址表示的内存单元ADDR1中的内容与内存单元ADDR2中的内容相加,结果存于内存单元ADDR1中。

E900
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:0000 0000:0E01 0000:00E0 0000:0000 0000:0000
0919 0000:0E00 0000:A0B5 0000:5400 0000:0029 0000:0300
091E 0000:1020 0000:0010

A800
0800: MOV R1,900
0802: MOV R2,8
0804: MOV R3,110
0806: LDMC
0807: RET
0808:
G800
A820
0820: MOV R0,0023
0822: MOV [A00],R0
0824: MOV [A01],R0
0826: NOP
0827: NOP
0828: NOP
0829: RET
082A:
E826
0826 0000:D800 0000:0A00 0000:0A01
G820
DA00
0A00 0046 0023 0000 0000 0000 0000 0000 0000 .F.#…
0A08 0000 0000 0000 0000 0000 0000 0000 0000 …
0A10 0000 0000 0000 0000 0000 0000 0000 0000 …
0A18 0000 0000 0000 0000 0000 0000 0000 0000 …
0A20 0000 0000 0000 0000 0000 0000 0000 0000 …
0A28 0000 0000 0000 0000 0000 0000 0000 0000 …
0A30 0000 0000 0000 0000 0000 0000 0000 0000 …
0A38 0000 0000 0000 0000 0000 0000 0000 0000 …
0A40 0000 0000 0000 0000 0000 0000 0000 0000 …
0A48 0000 0000 0000 0000 0000 0000 0000 0000 …
0A50 0000 0000 0000 0000 0000 0000 0000 0000 …
0A58 0000 0000 0000 0000 0000 0000 0000 0000 …
0A60 0000 0000 0000 0000 0000 0000 0000 0000 …
0A68 0000 0000 0000 0000 0000 0000 0000 0000 …
0A70 0000 0000 0000 0000 0000 0000 0000 0000 …

《计算机组成原理》课程设计---微程序设计_第1张图片
《计算机组成原理》课程设计---微程序设计_第2张图片
《计算机组成原理》课程设计---微程序设计_第3张图片

(2)将一通用寄存器内容减去某内存单元内容,结果放在另一寄存器中。

E900
0900 0000:0000 0000:0E00 0000:A0B5 0000:5402 0000:0000
0905 0000:0E00 0000:10F0 0000:0002 0000:0029 0000:0301
090A 0000:31D0 0000:0088
A800
0800: MOV R1,900
0802: MOV R2,3
0804: MOV R3,130
0806: LDMC
0807: RET
0808:
G800
A820
0820: MOV R9,0037
0822: MOV R0,0022
0824: MOV [A00],R0
0826: NOP
0827: NOP
0828: NOP
0829: RET
082A:
E826itor of Virtual TEC-2 By Guiheng Zhou, Jun. 2005, Sun Yat-sen University
0826 0000:E079 0000:0A00
U820
0820: 2C90 0037 MOV R9, 0037
0822: 2C00 0022 MOV R0, 0022
0824: 3400 0A00 MOV [0A00], R0
0826: E079 DW E079
0827: 0A00 ADC R0, R0
0828: 0000 NOP
0829: AC00 RET
082A: 0000 NOP
082B: 0000 NOP
082C: 0000 NOP
082D: 0000 NOP
082E: 0000 NOP
082F: 0000 NOP
0830: 0000 NOP
0831: 0000 NOP
0832: 0000 NOP
G820
R
R0=0022 R1=090C R2=0000 R3=0133 SP=FFFF PC=0820 IP=0829 R7=0015 R8=0000
R9=0037 R10=0000 R11=0000 R12=0000 R13=0000 R14=0000 R15=0000 F=00001111
0820: 2C90 0037 MOV R9, 0037
DA00
0A00 0022 0000 0000 0000 0000 0000 0000 0000 ."…
0A08 0000 0000 0000 0000 0000 0000 0000 0000 …
0A10 0000 0000 0000 0000 0000 0000 0000 0000 …
0A18 0000 0000 0000 0000 0000 0000 0000 0000 …
0A20 0000 0000 0000 0000 0000 0000 0000 0000 …
0A28 0000 0000 0000 0000 0000 0000 0000 0000 …
0A30 0000 0000 0000 0000 0000 0000 0000 0000 …
0A38 0000 0000 0000 0000 0000 0000 0000 0000 …
0A40 0000 0000 0000 0000 0000 0000 0000 0000 …
0A48 0000 0000 0000 0000 0000 0000 0000 0000 …
0A50 0000 0000 0000 0000 0000 0000 0000 0000 …
0A58 0000 0000 0000 0000 0000 0000 0000 0000 …
0A60 0000 0000 0000 0000 0000 0000 0000 0000 …
0A68 0000 0000 0000 0000 0000 0000 0000 0000 …
0A70 0000 0000 0000 0000 0000 0000 0000 0000 …

《计算机组成原理》课程设计---微程序设计_第4张图片
《计算机组成原理》课程设计---微程序设计_第5张图片
《计算机组成原理》课程设计---微程序设计_第6张图片

(3)转移指令。判断两个通用寄存器内容是否相等,若不相等则转移到指定绝对地址,否则顺序执行。

E900
0900 0000:0000 0000:0E01 0000:9190 0000:0088 0000:0029
0905 0000:03E0 0000:A0B5 0000:5402 0000:0029 0000:0300
090A 0000:30F0 0000:5000
A800
0800: MOV R1,900
0802: MOV R2,3
0804: MOV R3,140
0806: LDMC
0807: RET
0808:
G800
A820
0820: MOV R8,0011
0822: MOV R9,0011
0824: NOP
0825: NOP
0826: MOV R7,0033
0828: RET
0829:
E824
0824 0000:E589 0000:0828y Guiheng Zhou, Jun. 2005, Sun Yat-sen University
U820
0820: 2C80 0011 MOV R8, 0011
0822: 2C90 0011 MOV R9, 0011
0824: E589 DW E589
0825: 0828 ADC R2, R8
0826: 2C70 0033 MOV R7, 0033
0828: AC00 RET
0829: 0000 NOP
082A: 0000 NOP
082B: 0000 NOP
082C: 0000 NOP
082D: 0000 NOP
082E: 0000 NOP
082F: 0000 NOP
0830: 0000 NOP
0831: 0000 NOP
0832: 0000 NOP
R
R0=0000 R1=090C R2=0000 R3=0143 SP=FFFF PC=0800 IP=0807 R7=0000 R8=0000
R9=0000 R10=0000 R11=0000 R12=0000 R13=0000 R14=0000 R15=0000 F=01001111
0800: 2C10 0900 MOV R1, 0900
G820
R
R0=0000 R1=090C R2=0000 R3=0143 SP=FFFF PC=0820 IP=0828 R7=0000 R8=0011
R9=0011 R10=0000 R11=0000 R12=0000 R13=0000 R14=0000 R15=0000 F=01001111
0820: 2C80 0011 MOV R8, 0011
A820
0820: MOV R8,0022
0822: MOV R9,0011
0824: NOP
0825: NOP
0826: MOV R7,0033
0828: RET
0829:
E824
0824 0000:E589 0000:0828
R
R0=0000 R1=090C R2=0000 R3=0143 SP=FFFF PC=0820 IP=0828 R7=0000 R8=0011
R9=0011 R10=0000 R11=0000 R12=0000 R13=0000 R14=0000 R15=0000 F=01001111
0820: 2C80 0022 MOV R8, 0022
G820
R
R0=0000 R1=090C R2=0000 R3=0143 SP=FFFF PC=0820 IP=0828 R7=0033 R8=0022
R9=0011 R10=0000 R11=0000 R12=0000 R13=0000 R14=0000 R15=0000 F=00001111
0820: 2C80 0022 MOV R8, 0022

《计算机组成原理》课程设计---微程序设计_第7张图片
《计算机组成原理》课程设计---微程序设计_第8张图片

你可能感兴趣的:(计算机组成原理)