简单模型机的微程序设计.docx
《简单模型机的微程序设计.docx》由会员分享,可在线阅读,更多相关《简单模型机的微程序设计.docx(6页珍藏版)》请在冰豆网上搜索。
简单模型机的微程序设计
简单模型机的微程序设计
一.设计题目 计算机组成原理课程设计——简单模型机的微程序设计 二.主要内容 一般地讲,编写微程序可以分成以下几步:
1、设计机器的指令格式。
2、对所设计的指令进行分析,画出各指令的用微命令表示的微流程图。
不仅要画出每个对应一条微指令的功能框内的微命令,而且要初步确定该条微指令在控存中的微地址,以便于在设计微程序时确定前一条指令的次地址NA字段和C字段的编码。
在这个过程中,一定要注意P测试的规则以及指令高四位的编码。
3、根据微流程图的顺序,一个功能框一个功能框地确定各字段的编码,将这些字段组合即可形成一条条的微指令编码。
这些微指令的集合就是可以完成所设计的指令功能的微程序。
当然这样设计的微程序有可能不完全正确,还需要进一步检查修改。
以上几步可以用脑、手、纸、笔即可完成。
4、对设计的微程序进行检查修改。
本模型机可以手动地用开关将微程序输入机器的控存。
为了能将要执行的指令输入主存,在微程序中必须安排一端相应的微程序;为了能检查输入的指令是否正确,也要设计一段微程序。
三.具体要求 1.通过使用作者开发的微程序分析和设计仿真软件,熟悉介绍的为基本模型机而设计的微程序的执行过程。
必须充分理解并正确解释下些问题:
微程序中的微指令的各个字段的作用。
哪些字段是不译码的,哪些字段是直接译码的,哪些字段又可以看成是字段间接编码的。
答:
不译码的是S3~B0字段;直接译码的是A、B、C字段;间接编码的是uA6~uA1。
微程序中的微指令是否是顺序执行的,如果不是,那么次地址是如何产生的。
什么情况下,次地址字段才是将要执行的微指令的地址。
答:
微程序中的微指令不是顺序执行的。
如果遇到P测试时,则在每一条功能指令执行完后,进行一次P测试,根据P测试跳到下一条机器指令的微地址。
P测试就是根据测试程序的机器指令中的8~5位和微程序的后六位进行或运算来实现分支,此次课程设计的微程序后六位设计为010000,则根据下面各功能的指令设计,IN、ADD、STA、OUT、JMP、MOV、NADD、AND、OR、XOR的入口地址分别为10H、11H、12H、13H、14H、15H、16H、17H、18H、19H。
如果没有遇到P测试的话,那么次地址即为该微指令地址字段所指向的微地址。
在微程序中如何根据机器指令中的相关位实现分支,据此,在设计机器指令时应如何避免和解决与其它指令的微指令的微地址冲突。
答:
微程序中是根据测试程序的机器指令中的8~5位和微程序中后六位进行“或”运算来实现分支的。
避免和解决与其它指令的微指令的微地址冲突的方法 就是使用不同没有被其他微指令用过的微地址。
哪些微指令是执行所有指令都要用到的。
答:
01:
10 02:
00 解释一条机器指令的微程序的各条微指令的微地址是否连续?
这些微指令的微地址的安排的严重原则是什么?
答:
不连续。
严重原则是将各条机器指令的入口微地址置于地址连续的地址单元中,避免其它微指令乱用这一段地址。
为什么读写一次内存总要用两条微指令完成?
答:
因为W/R只有两种状态,即要么是读,要么是写,所以,要完成一次读写总要用两条微指令完成。
机器程序中用到的寄存器是R0,是机器指令中哪些位决定的?
如果要用R1或R2,是否要改写微程序或改写机器指令?
如果要,应如何改写?
答:
是机器指令中的2~1位决定。
如果要用到R1或R2,那么不需要改写微程序,但得改写机器指令的低两位,即2~1位,若要用到R1,则将其改为01,若要用R2,则将其改为10。
2.根据基本模型机的硬件设计五条机器指令:
外设输入指令IN、二进制加法指令ADD、存数指令STA、输出到外设指令OUT、无条件转移指令JMP。
并且增添下列五条指令:
①新加法指令NADDRD,RS:
(RS)加(RS)→(RD)②或指令ORRD,RS:
(RS)或(RD)→(RD) ③异或指令XORRD,RS:
(RS)异或(RD)→(RD) ④与指令ANDRD,RS:
(RS)与(RD)→(RD)⑤数据传送指令MOVRD,RS:
(RS)→(RD) 四.进度安排 共周11天的时间,具体安排如下:
1~2天:
对整个课程设计内容作详细的讲解,并辅导学生完成课程设计指导书的学习,使其掌握和理解课程设计的核心内容。
3~5天:
学生在机房学习熟悉课程设计所使用的仿真软件,并深入了解该仿真软件所实现的模型机的指令系统和微程序的设计方法。
6~9天:
在原有5条机器指令的基础上增加实现下述各功能的机器指令,试设计相应的机器指令的格式并改写原来的微程序使其可以运行所有的机器指令。
10~11天:
根据自己设计的微程序系统写出相应的课程设计报告。
五.成绩评定 1 正文 一.课程设计的目的 1.计算机的硬件基本组成2.计算机中机器指令的设计 3.计算机中机器指令的执行过程4.微程序控制器的工作原理5.微指令的格式设计原则 在此基础上设计可以运行一些基本机器指令的微程序的设计 二.课程设计的内容 1.编写基本模型机的指令 基本模型机的指令设计:
助记符 机器指令码 说明 IN 00000000 ;置数开关SW的状态→R0ADDaddr 00010000×××××××× ;(R0)+(addr)→STAaddr 00100000×××××××× ;(R0)→OUTaddr 00110000×××××××× ;(addr)→输出设备\JMPaddr 01000000×××××××× ;addr→PC MOV 0101RSRD ;RS:
(RS)→(RD) NADD 0110RSRD ;(RS)+(RS)→AND 0111RSRD ;and(RD)→OR 1000RSRD ;or(RD)→XOR 1001RSRD ;xor(RD)→说明:
十条指令分别为外设输入指令、二进制加法指令、存数指令、输出到外设指令、无条件转移指令、寄存器间传数指令、新加法指令、与指令、或指令、异或指令。
××××××××为要读写的主存储器单元的二进制地址码。
2 2.根据基本模型机的指令画流程图、 IN10SW→R0ADD11PC→ARPC+103RAM→BUSBUS→AR04→BURAMSTA12PC→ARPC+107RAM→BUSBUS→AR08R0→BUSBUS→RAMOUT13PC→ARPC+109RAM→BUSBUS→AR0ARAM→BUSBUS→DR10B01DR1→LED01PC→ARPC+102RAM→BUSBUS→IRP
(1)测试JMP14PC→ARPC+1MOV15RS→RDNAND16RS→DR1AND17RS→DR1OR18RS→DR1XOR19RS→DR10D0C01(DR1+DR1)→RD010ERD→DR21ARD→DR21B(DR1或RD1CRD→DR201RAM→BUSBUS→PC010F(DR1与RD1D(DR1异或DR2)→RDS→DR2BUS05R0→DR1 06(DR1+DR2)→R0 01DR2)→DR2)→01010101 流程图 3 IN10SWB有效LDRiADD11PCBLDARLDPC03CE有效W/R=0LDAR04CE有效W/R=0LDDR205R0B有效LDDR106ALU做加法LDRiALUB 01PCBLDARLDPC02CE有效W/R=0LDIRP
(1)测试STA12PCBLDARLDPC07CE有效W/R=0LDAR08R0BCE有效W/R=1OUT13PCBLDARLDPCJMP14PCBLDARLDPC0CMOV15RSBLDRiNADD16RSBLDDR1AND17RSBLDDR10ERDBLDDR20FOR18RSBLDDR11ARDBLDDR21BALU做“或”LDRiALUBXOR19RSBLDDR11CRDBLDDR21DALU做“异或”LDRiALUB0109CE有效W/R=0LDAR0ACE有效W/R=0LDDR10B010DALU做新加法LDRiALUB01CE有效W/R=0LOAD01ALU做“与”LDRiALUB01ALUBLEDBALU=AW/R=101010101 流程图 014
3.根据基本模型机微指令格式按流程图顺序写出微程序代码:
编写的机器指令代码如下:
01:
1002:
0003:
0004:
1105:
1006:
1107:
0008:
0109:
100A:
110B:
010C:
110D:
110E:
110F:
1110:
1111:
1112:
1113:
0114:
0015:
1116:
0117:
1018:
1019:
001A:
111B:
11110000000011C:
111D:
11 5 下面是利用该软件设计的微程序编码及各条微指令的功能分析:
242322212019S3S2S1S0MCn01:
000000 无效02:
000000 无效03:
000000 无效04:
000000 无效05:
000000 无效06:
100101ALU作加法07:
000000 无效08:
000000 无效09:
000000 无效0A:
000000 无效0B:
000001ALU=A0C:
000000无效0D:
110001ALU0E:
000000无效0F:
101111ALU与10:
000000 无效11:
000000 无效12:
000000 无效13:
000000 无效14:
000000 无效 181716111无效151413121110987 B110PCB000无效000无效000无效010RDB101ALUB000无效001RSB000无效000无效101ALUB000无效101ALUB010RDB101ALUB000无效110PCB110PCB110PCB110PCB6 654321uA6uA5uA4uA3uA2uA1000010转微地址:
02010000转微地址:
NA或WEB1B0 A110LDARC110LDPC001P
(1)000无效000无效000无效000无效000无效000无效000无效000无效000无效000无效000无效000无效000无效000无效110LDPC110LDPC110LDPC110LDPC001100从主存读LDIR001110从主存读LDAR001011从主存读LDDR2111无效111无效010LDDR1001LDRiIR000100转微地址:
04000101转微地址:
05000110转微地址:
06000001转微地址:
01001000转微地址:
08000001转微地址:
01001010转微地址:
0A001011转微地址:
0B000001转微地址:
01000001转微地址:
01000001转微地址:
01001111转微地址:
0F000001转微地址:
01000001转微地址:
01000011转微地址:
03000111转微地址:
07001001转微地址:
09001100转微地址:
0C001110从主存读LDAR101000向主存写无效001110从主存读LDAR001010从主存读LDDR1110向LED000写无效001101从主存读LOAD111无效111无效111无效001LDRi011LDDR2001LDRi001000从SW读LDRi111110无效LDAR111无效111无效111无效110LDAR110LDAR110LDAR15:
000000 无效16:
000000 无效17:
000000 无效18:
000000 无效19:
000000 无效1A:
000000无效1B:
111011ALU或1C:
000000无效1D:
011011ALU异或 111无效111无效111无效111无效111无效111无效111无效111无效111无效001LDRi010LDDR1010LDDR1010LDDR1010LDDR1011LDDR2001LDRi011LDDR2001LDRi001RSB001RSB001RSB001RSB001RSB010RDB101ALUB010RDB101ALUB000无效000无效000无效000无效000无效000无效000无效000无效000无效000001转微地址:
01001101转微地址:
0D001110转微地址:
0E011010转微地址:
1A011100转微地址:
1C011011转微地址:
1B000001转微地址:
01011101转微地址:
1D000001转微地址:
014.根据已经写好的微程序指令编写测试的机器指令程序编码:
00H:
00000000;INR0:
SW->R0 验证IN指令,将SW状态赋给寄存器R0,此时R0=0 01H:
00010000;ADDR0+31->R0 验证AND指令,将寄存器R0里的数据和0E地址内 容相加送给R0,此时R0=31 02H:
00001110;地址0EH 03H:
00100000;STAR0->10H 验证STA指令,将R0里的内容送到地址10H04H:
00001111;地址0FH 05H:
00110000;OUT 验证STA指令,将地址10H内容输出到外设06H:
00001111;地址0FH 07H:
01010001;MOVR0->R1 验证STA指令,将寄存器R0里的数据赋给寄存器 R0,此时R0=31,R1=31 08H:
01100100;NADDR1+R1->R0验证NADD指令,将寄存器R1里的数据加上自身后 赋给寄存器R0,此时R0=62 09H:
01110100;(R0andR1)->R0 验证AND指令,将R0与R1内容赋给R0,此时R0=200AH:
10000100;(R0orR1)->R0 验证OR指令,将R0或R1内容赋给R0,此时R0=310BH:
10010100;(R0xorR1)->R0 验证OR指令,将R0异或R1内容赋给R0,此时R0=00CH:
01000000;JMP->00H 验证JMP指令,将地址0D的内容无条件转移给PC0DH:
000000000EH:
00110001;31H0FH:
三.课程设计总结 通过这次一个多星期的课程设计,使我对计算机组成原理这门课程有了深刻的理解。
在课程设计过程中,通过对各种指令代码的设计以及相应指令微程序的设计是我对计算机内部结构有了更深的理解,特别是运算器,存储器,微程序控 7 制器的运行和实现过程有了比较深刻的认识。
在这次课程设计的过程中也遇到了一些问题,一开始面对好多的0和1代码,无从下手,但经过老师的讲解和自己不断阅读指导书,最终问题也迎刃而解。
其中问题最大的还是P
(1)测试,只要把P
(1)测试搞清楚了,微程序的跳转地址问题也就解决了。
P
(1)测试的微地址的最后4位的选择很重要,对指令的扩展有影响。
其余各位的微指令参照指导书一一查找即可。
总之这次课程设计让我受益匪浅,在摸索设计的同时,培养了我的设计思想,增强了逻辑思维能力,对于计算机组成原理这门课的知识框架也有了清晰地认识,同时也深深体会到自己所学知识的不足之处,对知识的理解程度还不深。
在设计的过程中虽然遇到了一些问题,通过与老师同学的交流最终解决了所遇到的问题。
8