计算机组成原理指令扩展实验.docx
《计算机组成原理指令扩展实验.docx》由会员分享,可在线阅读,更多相关《计算机组成原理指令扩展实验.docx(14页珍藏版)》请在冰豆网上搜索。
计算机组成原理指令扩展实验
《计算机组成原理A》课程设计性实验报告
开课实验室:
计算机组成原理实验室年月日
实验题目
指令扩展实验
一、实验目的
深入了解教学计算机微程序控制器的组成和设计技术,包括Am2910器件的功能与具体用法,教学计算机的总体组成和部件之间的连接方法,总之应该深入理解控制器部件的组成、设计、控制与使用等诸项知识。
二、设备与环境
TEC-XP+教学机,微机(装有WindowsXP、ISPLEVER、ispVMSystem等软件)。
三、实验内容
在现有的基本指令系统上,扩展2条指令,分别是:
指令一:
NXORDR,SR,其功能是(DR⊕SR)→DR。
指令二:
SWRMDR,[SR],其功能是DR与[SR]的值互换,实现寄存器与内存单元(通过间接寻址方式)之间的数据传送。
四、实验步骤
1、CPU模型
2、微程序控制器组成原理框图
3、机器指令与微指令关系
①PC:
存放下一条机器指令的地址(向指令存储器提供指令地址)。
②指令存储器:
(存放所有机器指令),经地址译码,选中相应存储单元,取出相应机器指令,送入指令寄存器IR。
③指令寄存器IR:
存放正在执行的机器指令。
机器指令包含两个字段:
操作码(OP)、地址码。
④由操作码(OP)映射得到微地址(译码过程),即机器指令所对应的微程序入口地址,存入微地址寄存器。
⑤控制存储器存放所有的微程序,经地址译码读出一条微指令。
⑥由控制存储器读出的一条微指令存入微指令寄存器。
4、教学机TEC-XP的控制器提供的控制信号(微指令格式)
①B0-B5字段:
DC1:
CPU内部总线数据来源选择控制,详见表1-1;DC2:
专用寄存器接收控制,详见表1-2。
②B6-B11字段:
SSHSCI:
最低进位输入、移位输入控制信号,详见表2-1;SST:
状态寄存器控制信号,详见表2-2。
③B12-B19字段:
A口:
0000表示不使用寄存器,1000表示取IR中的SR,0100表示R4(SP),0101表示R5(PC);
B口:
0000表示不使用寄存器,1000表示取IR中的DR,0100表示R4(SP),0101表示R5(PC)。
表1-1DC1-CPU内部总线数据来源选择表1-2DC2-专用寄存器接收控制
DC1
编码
译码
信号
操作说明
000
/SWTOIB
送开关内容到内部总线
001
/RTOIB
送ALU输出到内部总线
010
/ETOIB
送IR低位字内容到内部总线
011
/FTOIB
送程序状态字到内部总线
100
/
16位机不用
101
/
16位机不用
110
/INTV
送中断向量到内部总线
111
NC
无操作
DC1
编码
译码
信号
操作说明
000
NC
无操作
001
/GIR
指令寄存器接收
010
/
16位机不用
011
/GAR
地址寄存器接收
100
/INTR
恢复中断优先级
101
/INTN
接收中断优先级
110
/EI
用于开中断指令
111
/DI
用于关中断指令
表2-1状态寄存器表2-2最低进位输入、移位输入控制信号
SSHSCI
Cin/Shift
000
Cin=0
001
Cin=1
010
Cin=C
100
逻辑移位
101
循环移位
SST
C
Z
V
S
000
C
Z
V
S
001
Cy
ZR
OV
F15
010
内部总线
011
0
Z
V
S
100
1
Z
V
S
101
RAM0
Z
V
S
110
RAM15
Z
V
S
111
Q0
Z
V
S
④B20-B28字段:
I5-I3,I8-I6,I2-I0,为Am2901的9位控制码,详见下表3-1。
I8-I6:
运算结果处理
I5-I3:
运算功能
I2-I0:
数据来源
编码
通用寄存器
Q寄存器
Y的输出
R
S
000
F→Q
F
R+S
A
Q
001
F
S-R
A
B
010
F→B
A
R-S
0
Q
011
F→B
F
R∨S
0
B
100
F/2→B
Q/2→Q
F
R∧S
0
A
101
F/2→B
F
/R∧S
D
A
110
F*2→B
Q*2→Q
F
R∀S
D
Q
111
F*2→B
F
/(R∀S)
D
0
⑤B29-B31字段:
/MIOREQ/WE对内存和I/O接口读写控制:
MRW编码
功能
000
写内存
001
读内存
010
写串口
011
读串口
1XX
无内存和串口的读写操作
/MIO(0:
有内存或串口的读写,1:
无)
REQ(0:
读写内存,1:
读写串行口)
/WE(0:
写操作,1:
读操作)
⑥B32-B39字段:
顺序控制字段,CI3-CI0,SCC3-0=00100000(20H)时,表示MAPROM映射入口地址;CI3-CI0,SCC3-0=11100000(E0H)时,表示顺序执行;当CI3-CI0=0011(3H)时SCC3-0字段有效,此时SCC编码及功能详见下表4-1。
SCC编码
(CI3-CI0=0011时有效)
功能
(下面条件满足时,使/CC=0)
0000
必转移
0010
有中断,INT=0时转移
0100
C、Z测试,JRC、JRNC、JRZ、JRNZ指令
微指令转移条件不成立时,转移
0101
S测试,JRS、JRNS指令
微指令转移条件不成立时,转移
0110
IR10=0时(IN),转移
0111
IR8=1时(PUSH、POP),转移
⑦B40-B47字段:
微下地址字段
5、扩展的2条机器指令的格式及功能
扩展的2条机器指令的格式、功能、寻址方式、操作码编码、微程序步数、微程序入口地址如下表所示:
序号
格式
功能
寻址方式
编码
微程序步数
微程序
入口地址
1
NXORDR,SR
DR与SR的值异或送DR
寄存器直接寻址
22H
1
80
2
SWRMDR,[SR]
DR与[SR]的值互换
DR为寄存器直接寻址,[SR]为寄存器间接寻址
E9H
4
8A
6、指令所对应的微程序
每条机器指令对应的微程序、以及每步(微指令)的功能及各字段值的意义:
(1)如下表所示,为两条指令所对应的微程序:
序号
指令
入口
地址
下址
CI3-0
SCC3-0
MRW
I2-0
I8-6
I5-3
B口
A口
SST
SSHSCI
DC2
DC1
1
NXORDR,SR
80
30
30
4,1
3,7
8,8
1,0
0,0
2
SWRMDR,[SR]
8A
00
E0
4,3
0,0
8,0
0,0
0,0
00
E0
4,4
1,0
0,8
0,0
3,0
00
E0
1,7
3,0
8,0
0,0
0,0
30
30
0,2
1,0
0,0
0,0
0,1
(2)扩展的两条机器指令的功能及各字段的意义如下:
指令一:
NXORDR,SR
机器指令NXOR共包括一条微指令,该微指令的功能及各字段值的意义如下:
①入口地址:
表示该机器指令对应的微程序入口地址为80H;
②下址:
表示下一条机器指令的微程序入口地址为30H,并且为结束程序指令;
③CI3-0/SCC3-0:
CI3-0=0011,表示进行条件微转移;SCC3-0=0000,表示必转移,即执行完该条微指令后必须转移到下一条机器指令所对应的地址;
④MRW/I2-0:
MRW=100,表示无内存和串口的读写操作;I2-0=001,表示数据来源于A,B两个寄存器;
⑤I8-I6/I5-I3:
I8-I6=011,I5-I3=111,I8-I6表示将运算结果存入B寄存器;I5-I3表示进行异或运算;
⑥B口/A口:
B=A=1000,表示A口和B口的地址均为1000,该指令使用了A和B两个寄存器;
⑦SST/SSHSCI:
该指令中SST为1,转换为二进制位001,SST的功能为设置状态寄存器的值,表示为CZVS为C(Cy)Z(ZR)V(OV)S(F15);SSHSCI为0,其功能是设置进位输入,转换为二进制为000,表示Cin=0;
⑧DC2/DC1:
该指令中DC1和DC2分别为0,0,转换为二进制为000,000,其功能为DC1送开关内容到内部总线,DC2不进行操作。
指令二:
SWRMDR,[SR]
机器指令SWRM包括四条微指令,以下是四条微指令执行过程概述:
①机器指令入口地址为8A,下址为00,微指令顺序执行,无内存操作,数据来源为011,运算结果送入Q寄存器,由Y口输出,进行R与S的加法操作,B口为IR的DR,不使用A口数据,状态寄存器的值不变,进位输入为0,专用寄存器无操作,送开关内容到内部总线;
②微指令的入口地址为8B,下址为00,微指令顺序执行,无内存操作,数据来源为100,运算结果送入Y输出,进行R与S的加法运算,不使用B口数据,A口为IR的SR,状态寄存器的值不变,进位输入为0,地址寄存器接收数据,送开关内容到内部总线;
③微指令的入口地址为8C,下址为00,微指令顺序执行,对内存进行读操作,运算器获得数据,运算结果送入B口,并由Y输出,进行R与S的或运算,B口为IR的DR,不使用A口数据,状态寄存器的值不变,进位输入为0,专用寄存器无操作,送开关内容到内部总线;
④微指令的入口地址为8D,下址为30,执行完后必转,对内存进行写操作,数据来源为010,运算结果送入Y输出,进行R与S的加法运算,不使用A口与B口数据,状态寄存器的值不变,进位输入为0,专用寄存器无操作,送ALU输出到内部总线。
7、ABEL语言源程序编辑以及JED文件生成
(1)添加指令操作码
NXOR=(IR==[0,0,1,0,0,0,1,0]);
SWRM=(IR==[1,1,1,0,1,0,0,1]);
(2)添加入口地址
添加NXOR指令的入口地址:
MA80=(Y==[1,0,0,0,0,0,0,0]);
添加SWRM指令的入口地址:
MA8A=(Y==[1,0,0,0,1,0,1,0]);
MA8B=(Y==[1,0,0,0,1,0,1,1]);
MA8C=(Y==[1,0,0,0,1,1,0,0]);
MA8D=(Y==[1,0,0,0,1,1,0,1]);
(3)入口地址定义
对NXOR指令做如下修改:
D7=!
C_M&(!
_MAP&(NXOR#......)#NXTADDR7&!
_PL)&!
Bit8;
对SWRM指令做如下修改:
D1=!
C_M&(!
_MAP&(SWRM#······)#NXTADDR1&!
_PL)&!
Bit8;
D3=!
C_M&(!
_MAP&(SWRM#······)#NXTADDR3&!
_PL)&!
Bit8;
D7=!
C_M&(!
_MAP&(NXOR#SWRM#······)#NXTADDR7&!
_PL)&!
Bit8;
(4)下址定义
对NXOR指令做如下修改:
NXTADDR5:
=!
C_M&(MA80#......)&!
Bit8;
NXTADDR4:
=!
C_M&(MA80#......)&!
Bit8;
对SWRM指令做如下修改:
NXTADDR5:
=!
C_M&(MA8D#......)&!
Bit8;
NXTADDR4:
=!
C_M&(MA8D#......)&!
Bit8;
(5)条件转移字段定义
对NXOR指令做如下修改:
CI0:
=!
C_M&(MA80#......)&NRST&!
Bit8;
对SWRM指令做如下修改:
CI3:
=!
C_M&(MA8A#MA8B#MA8C#......)&NRST&!
Bit8;
CI2:
=!
C_M&(MA8A#MA8B#MA8C#......)&NRST&!
Bit8;
CI1:
=!
C_M&(MA8A#MA8B#MA8C#......)&NRST&!
Bit8;
CI0:
=!
C_M&(MA8D#......)&NRST&!
Bit8;
(6)MRW定义
对NXOR指令做如下修改:
!
_MIO00:
=!
(MA80#......);
对SWRM指令做如下修改:
!
_MIO00:
=!
(MA8A#MA8B#......);
_WE00:
=(MA8C#......);
(7)I2-I0,I8-I6,I5-I3定义
I200:
=(MA8B#MA8C#......);
I100:
=(MA8A#MA8C#MA8D#......);
!
I000:
=!
(MA8A#MA8C#......);
I700:
=(MA8C#......);
!
I600:
=!
(MA8B#MA8C#MA8D#MA80#......);
I500:
=(MA80#......);
I400:
=(MA80#......);
I300:
=(MA80#......);
(8)B口、A口定义
B30=(MA80#MA8A#MA8C#......);
A30=(MA8B#MA80#......);
(9)SST/SSHSCI定义
SST000:
=(MA80#......);
(10)DC2DC1定义
DC2_100:
=(MA8B#......);
DC2_000:
=(MA8B#......);
将源程序按如上所述修改完毕后,双击lc4256.syn,启动ispLEVER软件,之后双击m256c.abl文件,再双击CompileLogic进行编译,最后双击JEDECFile,生成.jed文件。
8、MACH编程
将JED文件下载到MACH器件的过程:
(1)接好教学机上的在线MACH编程电缆,将教学机电源打开;
(2)启动ispVMSystem软件,通过主界面的SCAN按钮找到在线编程器件;
(3)双击找到的编程器件,双击Browse按钮选择已经编译好的jed文件,选择OK按钮;
(4)重新回到主界面,点击GO命令进行编程。
5、编程验证及结果分析
1、NXORDR,SR机器指令验证结果:
送R1寄存器0001,送R2寄存器0001,R1与R2异或结果送R1,机器指令NXOR对应的机器码为2212,其中22为操作码,1-表示目的寄存器为R1,2-表示源寄存器为R2,由于没有修改监控程序,所以通过直接修改内存单元值,完成输入机器指令,验证结果R1=FFFF。
2、SWRMDR,[SR]机器指令验证结果:
送R1寄存器0001,R2寄存器2040,表示内存单元地址,2040的内存单元值为0007,机器指令SWRM对应的操作码为E9,地址码分别为1、2,表示目的寄存器使用R1,源寄存器使用R2,源操作数为寄存器间接寻址,实现内存单元与寄存器之间的数据交换,在没有修改监控程序的情况下,为了执行扩展的机器指令,通过E命令在内存单元2004处输入机器指令SWRM对应的机器码E912,最后结果R1=0007,内存单元2040的值为0001。
六、实验体会
通过本次指令扩展实验,认识到了,CPU不是直接执行由汇编语言汇编成的机器指令,而是执行微指令。
即一条机器指令的功能是由许多条微指令组成的序列来实现的,这个微指令序列就是微程序,也就是说往往一条机器指令对应一个微程序。
对于CPU来说,其主要完成4个基本功能:
①指令控制②操作控制③时间控制④数据加工;而CPU的基本组成有:
①控制器②运算器③cache,也就是说控制器在CPU中起着发布命令的“决策机构”作用,它完成协调和指挥整个计算机系统的操作。
对于实现控制器有两种方式:
①硬连线控制器,这种方法把控制器看作产生专门固定时序控制信号的逻辑电路,以用最少元件取得最高操作速度为设计目标;②微程序控制器,采用软件方法来设计硬件的一门技术,其主要思想是,仿照通常的解题程序的方法,把操作控制信号编成所谓的“微指令”,存放到一个只读存储器里,当机器运行时,一条又一条地读出这些微指令,从而产生全机所需的各种操作控制信号,使相应部件执行所规定的操作。
微程序控制器主要由控制存储器、微指令寄存器和地址转移逻辑三大部分组成,其中微指令寄存器分为微地址寄存器和微命令寄存器两部分。
①控制存储器用来存放实现全部指令系统的微程序;②微指令寄存器用来存放由控制存储器读出的一条微指令信息,其中为微地址寄存器决定将要访问的下一条微指令的地址,而微命令寄存器则保存一条微指令的操作控制字段和判别测试字段的信息;③地址转移逻辑:
当微程序出现分支时,通过判别测试字段P和执行部件的“状态条件”反馈信息去修改微地址寄存器内容。
最后,在实验中也对于TEC-XP教学机的组成有了一定的了解,通过在指令扩展实验中对机器指令、微指令以及CPU的组成和微指令的执行过程有了更深刻的认识。
教师评价
评定项目
A
B
C
D
评定项目
A
B
C
D
基本部件原理清楚
操作熟练
微指令设计合理
解析完整
微程序功能正确
文字流畅
验证程序运行正确
报告规范
其他:
评价教师签名:
年月日