《计算机组成原理》课程设计报告微程序设计.docx
- 文档编号:23361089
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:26
- 大小:1.12MB
《计算机组成原理》课程设计报告微程序设计.docx
《《计算机组成原理》课程设计报告微程序设计.docx》由会员分享,可在线阅读,更多相关《《计算机组成原理》课程设计报告微程序设计.docx(26页珍藏版)》请在冰豆网上搜索。
《计算机组成原理》课程设计报告微程序设计
《计算机组成原理》
课程设计报告
——微程序设计
指导老师:
肖铁军,赵蕙
学院:
计算机学院
班级:
信息安全1501
姓名:
周里威
学号:
3150604044
一、个人感想
这一个多星期的课设做下来真是收获超大,我强烈建议以后的课可以实验课理论课对半开,现在我们的实验课真是太少了,平时上课基本听不懂,没有实验课根本学不到什么。
我刚开始学习计算机组成原理这门课程的时候感觉,这课怎么这么难啊,什么也看不懂,什么也听不懂,除了介绍一些基本的概念的时候,都没听懂过课讲真,于是乎考试也是一脸懵逼,就挂了。
。
。
。
。
。
。
。
但是其实上课期间的实验课还是挺有意思的,能够让我稍微了解一点计算机组成原理的一丁点,但是并没有什么卵用,我还是对之啥也不懂,在这挂科加上啥也不懂之际,迎来了可亲可爱的课设。
课设第一天,我在老师在人没来齐就走了的情况下扯了半小时的蛋才开始问到大神,他说老师让我们自己瞎搞先。
。
。
。
。
我当时心里真是一万个Whatthehell跑了出来,后来才了解原来这是老师的良苦用心,要是一开始就讲讲讲我也是啥也听不到,还不如先实际操作一下先,老师再讲,效果更好(但最好也要先告诉我们该干什么),于是在大神的帮助下,我开始看书上什么微指令,什么寻址方式,什么汇编指令等等东西,好在我还有之前实验的基础,才看了10分钟就看不下去了。
。
。
。
。
。
于是在社霸们的神奇的搜寻下,一个牛逼学长的报告已经在群里传开了,于是我顺利的完成了第一天的任务,虽然是抄的,但是我知道只是抄是没用的,于是我就不厌其烦的叨扰大神,让他给我一点一点得讲了每一条指令,每一个数据通路运行图上各个部件是啥有啥用等等,虽然有些似懂非懂,但是我似乎领悟到了什么。
第二天开始,我感觉我每天都能学到很多新知识,经过4天的洗礼,我感觉我已经从啥也不懂的小白晋级为青铜圣斗士了,有时其他同学不懂的问题我也能回答一些了,就在我觉得我可以爆发小宇宙的时候,堆栈和中断横亘而来,给了我一个猝不及防的打击,前4天的任务我已经提前半天完成,可剩下的半天我却一点都整不出来,然而听说隔壁的大神已经开始写报告了。
。
。
于是我开始方了,屁颠屁颠的跑去请教大神,于是我又自己加班跟着另一个班一起做,这么难的东西当然要多花时间才能搞定的啦,虽然到最后都没有完全搞定,但是堆栈,中断的基本原理和简单测试还是实现了,这让我感到一丝安慰,突然发现我的感想似乎写得有点长了。
。
。
。
。
。
总结一下,实验是个好东西,课设真的很有趣。
二、项目任务
本项目的任务是针对第2章所述的OpenJUC-II教学机模型机,设计控制器的微程序,实现该模型机的指令系统。
通过课程设计理解指令的执行过程,指令系统与硬件的关系,进而加深对计算机的结构和工作原理的理解。
三、报告主体
报告我分为三个阶段来描述
1熟悉寻址方式阶段;
2了解算术,逻辑,移位,程序控制等基本常用指令阶段;
3尝试堆栈与中断有关指令阶段;
1熟悉寻址方式阶段
①阶段开始我当然是熟悉数据通路图上画了什么
AR:
地址寄存器;DR:
数据寄存器;IR:
指令寄存器;
PC:
时钟信号;SP:
栈顶指针寄存器;TR:
临时寄存器;
ALU:
运算器;SHIFTER:
移位器;A:
暂存寄存器;
GRS:
寄存器组;IB:
总线;WD:
写;RD:
读;
PSW:
程序状态标志位;XXoe:
出口;XXce:
入口。
②此阶段第二步是熟悉基本的微指令,取指令,取源操作数,取目的操作数,执行指令,保存数据。
以汇编指令MOV#0001H,0033H为测试
(1)取指令的微程序
微地址(H)
微指令(H)
微命令
微指令运行效果
000
20080001
PCoe,ARoe
PC送出信号0030到AR
001
00069002
ARoe’,RD,DRce’,PCinc
主存读出地址0030的内容即测试汇编指令到DR
002
CC000003
DRoe,IRce
DR把指令送到IR
003
00000404
BM=2
BM=2是多分支转移,取源操作数入口为004,所以转向004H。
(2)取源操作数微程序
微地址(H)
微指令(H)
微命令
微指令运行效果
004
00000A08
BM=5
取源操作数入口
BM=5,NA=008H为寄存器寻址,立即寻址入口为00BH。
00B
20080012
PCoe,ARce
PC送出信号0031到AR
012
00069016
ARoe’,RD,DRce’,PCinc
主存读出地址0031的内容即源操作数到DR
016
D000006
DRoe,TRce
立即寻址直接把立即数放入TR
取出的源操作数放在TR中,转到取目的操作数的微程序入口006H
(3)取目的操作数微程序
微地址(H)
微指令(H)
微命令
微指令运行效果
006
00000A28
BM=5
取目的操作数入口
BM=5,NA=028H为寄存器寻址,直接寻址入口为02CH。
02C
20080033
PCoe,ARce
PC送出信号0032到AR
033
00069034
ARoe’,RD,DRce’,PCinc
主存读出地址0032的内容即目的操作数到DR
034
C0080035
DRoe,ARce
直接寻址把地址从DR送到AR
035
00061036
ARoe’,RD,DRce’
直接寻址中没用
036
D4000007
DRoe,TRce
直接寻址中没用
取出的目的操作数放在A中,转到执行指令的微程序入口007H
(4)执行阶段微程序
双操作数赋值指令MOV的微程序入口地址为041H
微地址(H)
微指令(H)
微命令
微指令运行效果
007
00000800
NOP
跳转到MOV的微指令
041
94000040
TRoe,Ace
把TR中保存的数据送入A
040
00300E50
SVce,BM=7
把A中的数据送入SHIFTER
将结果保存在主存中,依Md转移,所以转到051H
051
60030052
Soe,DRce
把SHIFTER中的数据送入DR
052
00052200
ARoe,DRoe’,WR
数据0001写入地址0033里
指令执行结果:
把0001写入0033地址中。
(1)取指令的微程序配图
(2)取源操作数微程序配图
(3)取目的操作数微程序配图
(4)执行阶段微程序配图
③前面使用了立即寻址以及直接寻址,以下为其他寻址方式的微程序。
(1)寄存器寻址
取源操作数阶段
微地址(H)
微指令(H)
微命令
008
D0000006
GRSoe,TRce
取目的操作数阶段
微地址(H)
微指令(H)
微命令
028
D4000007
GRSoe,TRce
(2)寄存器间接寻址
取源操作数阶段
微地址(H)
微指令(H)
微命令
008
50000006
GRSoe,TRce
取目的操作数阶段
微地址(H)
微指令(H)
微命令
028
54000007
GRSoe,Ace
(3)寄存器自增间接寻址
取源操作数阶段
微地址(H)
微指令(H)
微命令
00A
54080010
GRSoe,Ace,ARce
010
02700011
INC,SVce
011
68000015
Soe,GRSce
取目的操作数阶段
微地址(H)
微指令(H)
微命令
02A
54080030
GRSoe,Ace,ARce
030
02700031
INC,SVce
031
68000035
Soe,GRSce
(4)立即寻址
取源操作数阶段
微地址(H)
微指令(H)
微命令
00B
20080012
PCoe,ARce
012
00069016
ARoe’,RD,DRce’,PCinc
取目的操作数阶段
微地址(H)
微指令(H)
微命令
02B
00000007
NOP
(5)直接寻址
取源操作数阶段
微地址(H)
微指令(H)
微命令
00C
20080013
PCoe,ARce
013
00069014
ARoe’,RD,DRce’,PCinc
014
C0080015
DRoe,ARce
015
00061016
ARoe’,RD,DRce’
016
D0000006
DRoe,Tce
取目的操作数阶段
微地址(H)
微指令(H)
微命令
02C
20080033
PCoe,ARce
033
00069034
ARoe’,RD,DRce’,PCinc
034
C0080035
DRoe,ARce
035
00061036
ARoe’,RD,DRce’
036
D4000007
DRoe,Ace
(6)间接寻址
取源操作数阶段
微地址(H)
微指令(H)
微命令
00D
20080017
PCoe,ARce
017
00069018
ARoe’,RD,DRce’,PCinc
018
C0080019
DRoe,ARce
019
00061014
ARoe’,RD,DRce’
取目的操作数阶段
微地址(H)
微指令(H)
微命令
02D
20080037
PCoe,ARce
037
00069038
ARoe’,RD,DRce’,PCinc
038
C0080039
DRoe,ARce
039
00061034
ARoe’,RD,DRce’
(7)变址寻址
取源操作数阶段
微地址(H)
微指令(H)
微命令
00E
2008001A
PCoe,ARce
01A
0006901B
ARoe’,RD,DRce’,PCinc
01B
D400001C
DRoe,Ace
01C
40700020
GRSoe,ADD,SVce
020
60080015
Soe,ARce
取目的操作数阶段
微地址(H)
微指令(H)
微命令
02E
2008003A
PCoe,ARce
03A
0006903B
ARoe’,RD,DRce’,PCinc
03B
D400003C
DRoe,Ace
03C
40700032
GRSoe,ADD,SVce
032
60080035
Soe,ARce
(8)相对寻址
取源操作数阶段
微地址(H)
微指令(H)
微命令
00F
2008001D
PCoe,ARce
01D
0006901E
ARoe’,RD,DRce’,PCinc
01E
D400001F
DRoe,Ace
01F
20700020
PCoe,ADD,SVce
取目的操作数阶段
微地址(H)
微指令(H)
微命令
02F
2008003D
PCoe,ARce
03D
0006903E
ARoe’,RD,DRce’,PCinc
03E
D400003F
DRoe,Ace
03F
20700035
PCoe,ADD,SVce
2了解算术,逻辑,移位,程序控制等基本常用指令阶段
汇编指令
微地址(H)
微指令(H)
微命令
MOV(赋值)
041
94000040
TRoe,ace
MOV
040
00300E50
SVce,BM=7
ADD(加)
042
98700E50
TRoe,ADD,SVce,PSWce,BM=7
ADDC(带进位加)
043
98B00E50
TRoe,ADDC,SVce,PSWce,BM=7
SUB(减)
044
98F00E50
TRoe,SUB,SVce,PSWce,BM=7
SUBB(带进位减)
045
99300E50
TRoe,SUBB,SVce,PSWce,BM=7
AND(与)
046
99700E50
TRoe,AND,SVce,PSWce,BM=7
OR(或)
047
99B00E50
TRoe,OR,SVce,PSWce,BM=7
XOR(异或)
048
9A300E50
TRoe,XOR,SVce,PSWce,BM=7
CMP(比较)
049
98C00200
TRoe,SUB,PSWce,BM=1
TEST(测试)
04A
99400200
TRoe,AND,PSWce,BM=1
SAR(算术右移)
061
不会
SHL(逻辑左移)
062
18200E50
PSWce,SLce,BM=7
SHR(逻辑右移)
063
18100E50
PSWce,SRce,BM=7
ROL(循环左移)
064
00200E50
SLce,BM=7
ROR(循环右移)
065
00100E50
SRce,BM=7
RCL(进位循环左移)
066
不会
RCR(进位循环右移)
067
不会
JC(CF=1跳)
068
00000626
BM=3
JNC(CF=0跳)
069
00000626
BM=3
JO(OF=1跳)
06A
00000626
BM=3
JNO(OF=0跳)
06B
00000626
BM=3
JZ(ZF=1跳)
06C
00000626
BM=3
JNZ(ZF=0跳)
06D
00000626
BM=3
JS(SF=1跳)
06E
00000626
BM=3
JNS(SF=0跳)
06F
00000626
BM=3
J(条件不满足)
026
00000200
BM=1
J(条件满足)
027
A4000200
ARoe,PCce,BM=7
JMP(跳转)
070
A4000200
ARoe,PCce,BM=1
INC(自增)
071
1A700E50
PSWce,INC,SVce,BM=7
DEC(自减)
072
1AB00E50
PSWce,DEC,SVce,BM=7
NOT(取反)
073
19F00E50
PSWce,NOT,SVce,BM=7
HALT(停机)
058
00000058
NOP
NOP(空)
059
00000200
BM=1
部分指令配图
MOV指令1
MOV指令2
ADD指令
CMP指令
SHR指令
INC指令
3尝试堆栈与中断有关指令阶段
1)堆栈
入栈PUSH
微地址(H)
微指令(H)
微命令
微指令运行效果
078
0030009B
SVce
把A中的目的操作数放入SHFTER
09B
6003009C
Soe,DRce
把SHFTER中的目的操作数放入DR
09C
F400009D
SPoe,Ace
把栈顶指针地址放入A中
09D
02B0009E
DEC,SVce
把栈顶指针地址减一放入SHFTER
09E
7C080052
Soe,ARce,SPce
把减了1的栈顶地址放入AR和SP
入栈配图1
入栈配图2
出栈POP
微地址(H)
微指令(H)
微命令
微指令运行效果
079
B000009F
ARoe,TRce
AR把取到的目的操作数放入TR
0A0
02C610A1
SPinc,ARoe’,DRce’,RD
读出栈内的内容到DR
0A1
D40000A2
DRoe,Ace
DR把栈内的信息送到A
0A2
003000A3
SVce
A把栈内的信息送到SHFTER
0A3
80080051
TRoe,ARce
TR把保存的目的操作数送回AR
出栈配图1
出栈配图2
出栈配图3
测试汇编指令(如上图)
MOV#0051H,R2
PUSHR2
PUSH0050H
POP0053H
POP(R2)
CALL指令
微地址(H)
微指令(H)
微命令
微指令运行效果
07A
B00000A4
ARoe,TRce
AR把取到的目的操作数放入TR
0A4
230300A5
SPdec,PCoe,DRce
PC送到DR,栈顶指针减1
0A5
E00800A6
SPoe,ARce
栈顶指针送到AR
0A6
84000052
TRoe,PCce
TR把取到的目的操作数放入PC
RET指令
微地址(H)
微指令(H)
微命令
微指令运行效果
05A
E00800A7
SPoe,ARce
SP把栈顶指针送到AR
0A7
02C610A8
SPinc,ARoe’,DRce’,RD
主存读出栈中内容DR
0A8
C4000000
DRoe,PCce
DR把保存的内容送到PC
2)中断
微地址(H)
微指令(H)
微命令
微指令运行效果
EI开中断
05C
00005200
STI,BM=1
开中断,BM=1,依中断转移
DI关中断
05D
00006200
CLI,BM=1
关中断,BM=1,依中断转移
中断隐指令
080
F4000081
SPoe,Ace
把栈顶指针地址放入A中
081
22B30082
PCoe,DEC,SVce,DRce
把A中的栈顶指针地址自减1放入移位寄存器中,PC送到DR
082
74080083
Soe,Ace,ARce
把移位寄存器栈顶指针地址放入A和AR中
083
00052084
ARoe’,DRoe’,WR
把PC写入栈中
084
02B33085
DEC,SVce,DRce,PWSoe
栈顶指针自减1放入移位寄存器,PSW送到DR
085
7C080086
Soe,SPce,ARce
把移位寄存器栈顶指针地址放入A和SP中
086
00052087
ARoe’,DRoe’,WR
把PSW写入栈中
087
00027088
Droe’,INTA
中断
088
C0080089
DRoe,ARce
取到中断向量表放入AR
089
0006108A
ARoe’,DRoe’,RD
主存读出中断地址
08A
C4006000
DRoe,PCce,CLI
中断地址送到PC
RETI中断返回
05B
E00800A9
SPoe,ARce
把栈顶指针地址放入AR中
0A9
02C610AA
SPinc,ARoe’,DRce’,RD
栈顶指针自减1,读出栈中保存的PSW信息到DR
0AA
C00040AB
DRoe,PSWce’
把PSW信息从DR放回PSW
0AB
E00800AC
SPoe,ARce
把栈顶指针地址放入AR中
0AC
02C610AD
SPinc,ARoe’,DRce’,RD
栈顶指针自减1,读出栈中保存的PC信息到DR
0AD
C4005000
DRoe,PCce,STI
把PC信息从DR放回PC
测试汇编指令
MOV#0050H,0000H
MOV#FFFEH,FF00H
EI
AD:
MOV#0003H,R1
NOP
DECR1
JNZFFCH(PC)
NOTFF02H
JMPAD
0050H:
MOVFF08H,R4
RETI
中断隐指令配图1
中断隐指令配图2
RETI指令配图1
RETI指令配图2
报告完毕
鸣谢:
肖铁军老师,赵蕙老师以及帮助过我的同学们
参考书籍:
《计算机组成原理》主编肖铁军清华大学出版社
《计算机组成原理实践教程》肖铁军赵蕙等编著清华大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机组成原理 计算机 组成 原理 课程设计 报告 微程序 设计