课 程 设 计 报 告
课程设计名称:简单模型机的微程序设计 系 : 三 系 学 生 姓 名 : 班 级 : 软件二班 学 号 : 成 绩 : 指 导 教 师 :
开 课 时 间 : 2012学年 2 学期
一、设计题目
计算机组成原理课程设计——简单模型机的微程序设计
二、主要内容
1.通过使用作者开发的微程序分析和设计仿真软件,熟悉本文介绍的为基本模
型机而设计的微程序的执行过程。必须充分理解并正确解释下列问题: ⑴微程序中的微指令的各个字段的作用。哪些字段是不译码的,哪些字段是直接译码的,哪些字段又可以看成是字段间接编码的。
⑵微程序中的微指令是否是顺序执行的,如果不是,那么次地址是如何产生的。什么情况下,次地址字段才是将要执行的微指令的地址。
⑶在微程序中如何根据机器指令中的相关位实现分支,据此,在设计机器指令时应如何避免和解释其它指令的微指令的微地址冲突。
⑷哪些微指令是执行所有指令都要用到的。
⑸解释一条机器指令的微程序的各条微指令的微地址是否连续这些微指令的微地址的安排的严重原则是什么
⑹为什么 读写一次内存总要用两条微指令完成
⑺机器程序中的用到的寄存器是R0,是由机器指令中哪些位决定的如果要用R1或R2,是否要改写微程序或改写机器指令如果要,应如何改写
2.在原有5条机器指令的基础上增加实现下述各功能的机器指令,试设计相应的机器指令的格式并改写原来的微程序使其可以运行所有的机器指令。新增加的机器指令的功能是:
①或指令OR RD,RS:(RS)或(RD)→(RD)
②减法指令SUB RD,(addr):(RD)减(addr)→(RD)
③异或指令XOR (addr1),(addr2):(addr1)异或(addr2)→(RD) ④与指令AND RD,RS:(RS)与(RD)→(RD) ⑤求反指令 NOT RD:/(RD) →(RD)
其中的RS、RD可以是R0、R1、R2中的任何一个。
三、具体要求
写出课程设计报告,解释你的设计思想,比如,如何实现各指令的分支,如何重新安排各指令对应的微程序中的微指令的微地址,如何设计各微指令的编码。要求画出用微命令表示的微流程图并适当加以解释。
四、进度安排
共周11天的时间,具体安排如下:
1~2天:对整个课程设计的内容做详细的讲解,并辅导学生完成课程设计指导书的学习,使其掌握和理解课程设计的核心内容;
3~5天:学生在机房学习熟悉课程设计所使用的仿真软件,并深入了解该仿真软件所实现的模型机的指令系统(原有的5条指令)和微程序设计方法;
6~9天:在原有5条机器指令的基础上增加实现下述各功能的机器指令,试设计相应的机器指令的格式并改写原来的微程序使其可以运行所有的机器指令。
10~11天:根据自己设计的微程序系统写出相应的课程设计实验报告
五、成绩评定
六、正文
(1)模型机的CPU及系统硬件
基本模型机的CPU及系统硬件组成如图1所示:
图1 模型机的CPU及系统硬件组成
各部件的功能及控制信号如下:
运算器由算逻部件ALU(8位)、暂存器DR1、DR2及通用寄存器等组成。ALU的功能控制信号为S3、S2、S1、S0、M、CN,可以实现48种算术和逻辑运算功能,如图2所示。
图2 74LS181功能表
运算器为单总线结构,其输入端分别连接到暂存器DR1和DR2,其装入数据的微命令分别为LDDR1和LDDR2,当它们为1电平时由节拍脉冲T4将数据总线上的数据装入相应的暂存器。R0、R1、R2为通用寄存器。R0的装入数据的微命令为LDR0,R1的装入数据的微命令为LDR1,R2的装入数据的微命令为LDR2。299为实现移位运算的装置,当299B微命令有效时,其数据端和数据总线连接。
控制器由程序计数器PC、指令寄存器IR、地址寄存器AR、时序电路、控制存储器及相应的译码电路组成。
程序计数器PC的功能是存放下一条指令的地址,其输出是向地址寄存器提供要将执行的指令在存储器中的地址。在提供地址后立即加1,指向指令的下一个字节或下一条指令的地址。其控制微命令有三个。当LOAD=0而LDPC=1时,由T4的正跳变将数据总线上的数据装入PC;当当LOAD=1而LDPC=1时PC的内容加1;当PCB=1时,PC中的地址信息送到数据总线上。
指令寄存器IR用于存放当前执行的指令。当微命令LDIR=1时,由节拍脉冲T3将数据总线上的数据装入。
地址寄存器AR存放要从存储器中读出的数据或指令的地址或要向存储器写入数据或指令的地址。当微命令LDAR=1时,由节拍脉冲T3将数据总线上的数据装入。
存储器RAM用于存放程序和数据。当片选信号CE=0时,如果W/R为0,则根据AR中的地址,从存储器中读出数据并送到数据总线上;如果W/R为1,则根据AR中的地址,向存储器中写入数据总线上的数据。片选信号CE是由微指令中的有关字段(B1B0)译码产生的。
模型机有两个外部设备:输入设备是置数开关SW,用于设置数据或地址,当微命令SWB=0时,设置的数据送到数据总线上;SWB也是由微指令中的有关字段(B1B0)译码产生的。输出设备是两位LED数码管,当微命令LEDB=1时,数据总线上的数据送到数码管显示。
(2)基本模型机的指令设计
根据基本模型机的硬件设计五条机器指令:外设输入指令IN、二进制加法指令ADD、存数指令STA、输出到外设指令OUT、无条件转移指令JMP。指令格式如下:
助记符 机器指令码 说 明
IN 0101 0000 ;置数开关SW(KD0~KD7)的状态→R0 ADD addr 0110 0000 ×××× ×××× ;(R0)+(addr)→(R0) STA addr 0111 0000 ×××× ×××× ;(R0)→(addr) OUT addr 1000 0000 ×××× ×××× ;(addr)→输出设备\"LED\" JMP addr 1001 0000 ×××× ×××× ;addr→PC
OR 1010 0100 ;(RS)or (RD)→(RD) SUB addr 1011 1100 ×××× ×××× ;(RD) - (addr)→(RD) XOR 1100 1100 ;(addr1)xor (addr2)→(RD)
AND 1101 0100 ;(RS)and (RD)→(RD) NOT 1110 1100 ;/(RD)→(RD)
(3)指令微流程分析
原有的五条指令的微流程如下图所示:
总微流程如图所示:
PC→AR 01 RAM→BUS BUS→IR IN 10 ADD 11 STA 12 OUT 13 JMP 14 02 OR 15 SUB 16 XOR 17 AND 18 NOT 19 SW→RO PC→AR PC→AR PC→AR PC→AR (R1∪R0)→PC→AR PC→AR (R1∩R0)/(D1)→03 07 09 0C 0D 1ARAM→BUS 01 RAM→BUS RAM→BUS RAM→BUS 01 RAM→BUS RAM→BUS 01 01 04 08 0A 0E 1B RAM→BUS RAM→BUS R0→BUS 01 RAM→BUS RAM→BUS 05 0B 0F 1C R0→DR1 01 DR1→LED (R0-R1)→R0 RAM→BUS 06 (D1+DR2)→R0 1D 01 01 RAM→BUS 1E 01 (R1⊕R0)→R0 01
该图是运行微程序的数据流图,实际上并没有分解到微命令一级。为了设计微程序,还应该根据此图进一步细化到微命令(微操作)一级。例如PC→AR,实际上应该同时发出PCB、LDAR两个微命令;PC+1应该发出LDPC微命令;SW→R0应该发出SWB、LDRi(与指令码中的相应位共同译码产生LDR0微命令)两个微命令;RAM→BUS应该发出CE有效和读存储器两个微命令;BUS→RAM应该发出CE有效和写存储器两个微命令;R0→××是指R0B微命令有效等等。
据此可将该图改画成下图:
PCB LDAR LDPC 01 CE有效 WR=0 IN ADD STA OUT JMP 02 OR SUB XOR AND NOT
10 11 12 13 14 15 16 17 18 19 SWB有效 PCB LDAR PCB LDAR PCB LDAR PCB LDAR ALU做或运PCB LDAR PCB LDAR ALU做与运ALU求反 07 09 0C 0D 03 1A CE01 WR=0 有效CE有效WR=0 LDPC CE有效WR=0 LDPC CE有效WR=0 LDPC 01 CE有效WR=0 LDPC CE有效WR=0 LDPC 01 01 04 08 0A 0E 1B CE有效WR=0 LDDR0 ROB CE有效 WR=1 CE有效01 CE有效WR=0 LDDR0 CE有效WR=0 LDDR0 WR=0 05 0B 0F 1C R0→DR1 01 ROB CE有效 ALU做减运算 CE有效WR=0 LDPC 1D ALU做加运算 01 01 CE有效WR=0 LDDR0 1E 01 ALU做异或运算 01
(4)基本模型机的微指令格式
本模型机的微指令长共24位,基本采用水平型微指令字段直接编码方式,其控制位顺序如下:
其中,S3、S2、S1、S0、M、CN(μA24~μA19位)为ALU运算类型的控制字段,其输出不需译码直接连接到ALU的对应控制信号即可。需要指出的是,该字段无论如何编码,ALU都要进行某种运算,但是只要不发出ALUB微命令,ALU的运算结果都不会送到数据总线上,也就是不会对其它部件的操作产生任何影响。在设计微程序时,只要不发ALUB微命令,该字段的编码可以任意设置。
μA18位为输出设备(LED)和主存(RAM)的读写控制字段,该位为0,表示读;该位为1,表示写。
μA17~μA16位(B1B0)字段用于选择外设和主存。B1B0=01选择主存(CE有效),B1B0=00选择输入数据开关(SWB有效),B1B0=10选择输出LED(LEDB有效)。B1B0=11对本模型机无效,即没有选中任何外设或主存。
对本模型机而言,上述三位可以看成一个字段,其编码的含义如下: uA18uA17uA16=000或100 从输入开关SW读数据 uA18uA17uA16=001 从贮存读数据 uA18uA17uA16=101 向主存写数据
uA18uA17uA16=110 向LED写数据
其他组合无意义。编写次微程序时采用011表示无效。
μA6~μA1位为6位的预置后续微地址,“预置”的含义是该字段与微地址控制字段以及指令寄存器等部件的内容共同产生下一条微指令在控存中的微地址。
A、B、C 三个译码字段,分别由三组译码控制电路译码产生各种微命令。 A字段用于产生各寄存器的数据装入微命令,各种编码的含义如上表所示。 由于模型机有三个通用寄存器(R0、R1、R2),它们都有相应的数据装入微命令,为了不增加微指令的宽度,该字段只设计了一个LDRi命令。为了区分究竟是哪个寄存器装入数据,要根据指令寄存器的最低两位(I1I0)的状态而定:当I1I0=00时,发LDR0微命令;I1I0=01时,发LDR1微命令;I1I0=10时,发LDR2微命令;I1I0=11时,对本模型机无效;
B字段中的RSB、RDB、RIB分别为源寄存器的内容送数据总线、目的寄存器送数据总线及变址寄存器送数据总线的微命令,其功能是根据机器指令来选通三个工作寄存器R0、R1及R2之一,将其内容送数据总线。 具体规则如下:
如果RDB有效,根据指令寄存器的最低两位(I1I0)的状态决定哪个寄存器的内容送数据总线:当I1I0=00时,发R0B微命令;I1I0=01时,发R1B微命令;I1I0=10时,发R2B微命令;I1I0=11时,对本模型机无效;
如果RSB有效,根据指令寄存器(I3I2)两位的状态决定哪个寄存器的内容送数据总线:当I3I2=00时,发R0B微命令;I3I2=01时,发R1B微命令;I3I2=10时,发R2B微命令;I3I2=11时,对本模型机无效;
本模型机的变址寄存器固定为R2,故RIB有效就是R2B有效。
基于上述字段的设计规则,在设计机器指令格式时,必须将目的寄存器的编码放在指令的第一个字节的I1I0位置,将源寄存器的编码放在指令的第一个字节的I3I2位置,且编码必须符合上述规则,即00代表寄存器R0,01代表寄存器R1,10代表寄存器R2。
B字段中的299B是移位运算装置的数据端与数据总线相连的微命令。该装
置在图中没有画出。
C字段中的P(1)~P(4)是四个测试字段。其功能是根据机器指令、μA5~μA0字段及其它有关部件的内容,产生下一条微指令在控存中的微地址,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行等。AR为算术运算是否影响进位及判零标志控制位,低电平有效。LDPC为使PC+1的微命令。
P(1)~P(4)的意义如下:
P(1)测试的作用是次地址字段NA(4~1位)或指令寄存器IR(8~5位)产生下一条微指令在控存中的微地址的4~1位,下一条微指令在控存中的微地址的6~5位仍为NA字段的6~5位。
P(2)测试的作用是次地址字段NA(2~1位)或指令寄存器IR(4~3位)产生下一条微指令在控存中的微地址的2~1位,下一条微指令在控存中的微地址的6~3位仍为NA字段的6~3位。
P(3)测试的作用是次地址字段NA(4位)或进位或零标志产生下一条微指令在控存中的微地址的4位,下一条微指令在控存中的微地址的其它位仍为NA字段的相应位。
P(4)测试的作用是次地址字段NA(2~1位)或(SWC,SWA)产生下一条微指令在控存中的微地址的2~1位,下一条微指令在控存中的微地址的6~3位仍为NA字段的6~3位。
(5)微程序设计
01:00000000010 02:00000010000 03:00000000100 04:00000000101 05:00000000110 06:001
07:00000001000 08:00000000001 09:00000001010 0A:00000001011 0B:00000000001 0C:00000000001 0D:00000001110 0E:00000001111 0F:00000000001 10:00000000001 11:00000000011 12:00000000111 13:00000001001 14:00000001100 15:00000000001 16:001 17:000 18:
19:00000000001 1A:00000011011 1B:00000011111 1C:00000011101 1D:00000011110 1E:00000000001 1F:00000011100
(6)机器指令测试程序的编写
00H:00000000 ;IN
01H:00010000 ;ADD(R0)+(addr)→(R0) 02H:00010011
03H:00100000 ;STA(R0)→(addr) 04H:00010100
05H:00110000 ;OUT(addr)→输出设备\"LED\" 06H:00010100
07H:01010100 ;OR (RS)or (RD)→(RD) 08H:01101100 ;SUB (RD) - (addr)→(RD) 09H:00010011
0AH:01111100 ;XOR(addr1)xor (addr2)→(RD) 0BH:00010010 OCH:00010011
0DH: ;AND(RS)and (RD)→(RD) 0EH: ;NOT /(RD)→(RD) 0FH:01000000 ;JMP (addr)→PC 10H:00000000
11H:00000001 12H:00001110 13H:01110000
(7)运行测试程序对编写的机器指令格式以及微程序进行检验
微指令00000000010
执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02
微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01
微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10 微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01 微指令00000000010
执行的操作是:存储器CE有效,存储器读,PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02 微指令00000010000
执行的操作是:P(1)测试:NA(3~0)或(IR7~IR4),转微地址:10
微指令00000000001
执行的操作是:299保持数据,输入开关SWB有效,299→B,LDR0,转微地址:01
(8)问题解答
通过使用作者开发的微程序分析和设计仿真软件,熟悉本文介绍的为基本模型机而设计的微程序的执行过程。必须充分理解并正确解释下列问题:
1微程序中的微指令的各个字段的作用。哪些字段是不译码的,哪些字段是直接译码的,哪些字段又可以看成是字段间接编码的。
答:直接译码的是A、B、C字段;不译码的是S3~B0字段;而间接编码的是uA6~uA1。
2微程序中的微指令是否是顺序执行的,如果不是,那么次地址是如何产生的。什么情况下,次地址字段才是将要执行的微指令的地址。
答:微程序中的微指令不是顺序执行的,如果遇到P(1)~P(4)测试时,则根据机械指令,uA5~uA其他有关部件的内容,产生下一条微指令在空存中的微地址,是微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行等。例如遇到P(1)测试,则下一条微指令在空存中的微地址的4~1位是用次地址字段NA(4~1位)或指令寄存器IR(8~5位)所产生,下一条微指令的微地址仍为 NA字段的6~5位。如果没有遇到P(1)~P(4)测试的话,那么次地址即为该微指令地址字段所指向的微地址。
3在微程序中如何根据机器指令中的相关位实现分支,据此,在设计机器指令时应如何避免和解决与其它指令的微指令的微地址冲突。
答:微程序中是根据测试程序的机器指令中的8~5位和微程序中后六位进行“或”运算来实现分支的。避免和解决与其它指令的微指令的微地址冲突的方法就是不用已经被其它微指令用过的微地址。
4哪些微指令是执行所有指令都要用到的。 答:01:00000000010
02:00000110000
5解释一条机器指令的微程序的各条微指令的微地址是否连续这些微指令
的微地址的安排的严重原则是什么
答:不连续。严重原则是将各条机器指令的入口微地址置于地址连续的地址单元中,避免其它微指令乱用这一段地址。
6为什么读写一次内存总要用两条微指令完成
答:因为W/R只有两种状态,即要么是读,要么是写,所以,要完成一次读写总要用两条微指令完成。
7机器程序中用到的寄存器是R0,是由机器指令中哪些位决定的如果要用R1或R2,是否要改写微程序或改写机器指令如果要,应如何改写
答:是由机器指令中的2~1位决定。如果要用到R1或R2,那么不需要改写微程序,但得改写机器指令的低两位,即2~1位,若要用到R1,则将其改为01,若要用R2,则将其改为10。
(8)心得体会
为期一周半的课程设计快结束了,回忆起此次课程设计,我感触颇深。
这一次的课程设计并不是很难,只是有点烦而已,所以耐心很重要。俗话说会者不难,难者不会,当你把原理都搞懂之后,一切就水到渠成了。
平时的实验课我都能很好地完成,所以,课程设计开始几天就没有太在意,总觉得很简单,我能够做好。但是,实施却并非如此。
一开始老师没有讲原理,自己看辅导书也是一头雾水,根本分不清书中的“东西南北”。后来老师讲解了一下,虽然说比较详细,根本也还是一窍不通。知道各个部分的功能,但是具体怎么实现不清楚,为什么这样编写更加不清楚,所以迟迟没有进展。
到了最后三天,开始问同学,也开始真正着手编写微指令和机器指令,此时的我,自以为了解了很多,而编写出来的程序根本运行不了,不管是微指令还是机器指令都会出现运行错误。
于是,我又重新按照老师的要求,画流程图,写代码,了解代码每一部分的
来源跟去向,尤其是机器指令编写时比较繁琐,有的时候由于微指令地址的原因,机器指令根本写不出来,所以只好更改伪指令的地址,此时比较复杂,最好的方法就是更改02号微指令的后续指令地址,随之而来的是几乎全部的微指令后续地址的更改。过程虽然比较繁琐,但是,经过这一轮修改,指令已经基本能够运行,这让我有莫大的欣慰。
虽然在后来调试过程中还是出现了一些问题,但是都很快得到了解决。这些问题的解决,不仅跟我个人的努力有关,还包含了同学和老师的帮助。
进过此次课程设计,我知道不管平时学习得如何,都不能放松对自己的要求,对新的知识点要能够抓住重点才能抓住其本质,只有掌握了本质,才能顺利的驾驭它,运用好它。
(9)参考资料
唐朔飞.《计算机组成原理》,北京,高等教育出版社,
蒋君,于启红,卞利.《课程设计指导书--简单模型机的微程序设计》,宿迁,
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务