1、计算机组成原理课程设计指导书汇总计算机组成原理课程设计指导书-简单模型机的微程序设计2010年4月第一部分 基本模型机的硬件、指令系统及其微程序的设计一、模型机的CPU及系统硬件 基本模型机的CPU及系统硬件组成如图1所示:图1 模型机的CPU及系统硬件组成各部件的功能及控制信号如下: 运算器由算逻部件ALU(8位)、暂存器DR1、DR2及通用寄存器等组成。ALU的功能控制信号为S3、S2、S1、S0、M、CN,可以实现48种算术和逻辑运算功能,如图2所示。 运算器为单总线结构,其输入端分别连接到暂存器DR1和DR2,其装入数据的微命令分别为LDDR1和LDDR2,当它们为1电平时由节拍脉冲T
2、4将数据总线上的数据装入相应的暂存器。R0、R1、R2为通用寄存器。R0的装入数据的微命令为LDR0,R1的装入数据的微命令为LDR1,R2的装入数据的微命令为LDR2。299为实现移位运算的装置,当299B微命令有效时,其数据端和数据总线连接。 控制器由程序计数器PC、指令寄存器IR、地址寄存器AR、时序电路、控制存储器及相应的译码电路组成。 图2 74LS181功能表 程序计数器PC的功能是存放下一条指令的地址,其输出是向地址寄存器提供要将执行的指令在存储器中的地址。在提供地址后立即加1,指向指令的下一个字节或下一条指令的地址。其控制微命令有三个。当LOAD=0而LDPC=1时,由T4的正
3、跳变将数据总线上的数据装入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是由微指令中
4、的有关字段(B1B0)译码产生的。模型机有两个外部设备:输入设备是置数开关SW,用于设置数据或地址,当微命令SWB=0时,设置的数据送到数据总线上;SWB也是由微指令中的有关字段(B1B0)译码产生的。输出设备是两位LED数码管,当微命令LEDB=1时,数据总线上的数据送到数码管显示。二、基本模型机的指令设计 根据基本模型机的硬件设计五条机器指令:外设输入指令IN、二进制加法指令ADD、存数指令STA、输出到外设指令OUT、无条件转移指令JMP。指令格式如下: 助记符 机器指令码说明IN 0000 0000 ; 置数开关SW(KD0KD7)的状态R0ADD addr 0001 0000 ; (
5、R0)+(addr)(R0)STA addr 0010 0000 ; (R0)(addr)OUT addr 0011 0000 ; (addr)输出设备LEDJMP addr 0100 0000 ;addrPC说明: 指令IN为单字节指令,其余均为双字节指令, 为要读写的主存储器单元的二进制地址码。三、指令微流程分析 这五条指令的微流程如图3所示:图3 用数据流表示的微程序流程 该图是运行微程序的数据流图,实际上并没有分解到微命令一级。为了设计微程序,还应该根据此图进一步细化到微命令(微操作)一级。例如PCAR,实际上应该同时发出PCB、LDAR两个微命令;PC+1应该发出LDPC微命令;SW
6、R0应该发出SWB、LDRi(与指令码中的相应位共同译码产生LDR0微命令)两个微命令;RAMBUS应该发出CE有效和读存储器两个微命令;BUSRAM应该发出CE有效和写存储器两个微命令;R0是指R0B微命令有效等等。据此可将该图改画成下图: 图4 用微命令表示的执行五条基本指令的微指令流程 该图中每个框上的数字表示该条微指令在控存中的地址(与指令格式有关,也与设计者的意愿有关)。如何在一条微指令中实现一个框中的微操作与微指令的格式密切相关。四、基本模型机的微指令格式 本模型机的微指令长共24位,基本采用水平型微指令字段直接编码方式,其控制位顺序如下:08:000000 000 001 000
7、 000 00000105: 000000 111 010 001 000 00011006: 100101 111 001 101 000 00000108:000001 000 001 000 000 000001 其中,S3、S2、S1、S0、M、CN(A24A19位)为ALU运算类型的控制字段,其输出不需译码直接连接到ALU的对应控制信号即可。需要指出的是,该字段无论如何编码,ALU都要进行某种运算,但是只要不发出ALUB微命令,ALU的运算结果都不会送到数据总线上,也就是不会对其它部件的操作产生任何影响。在设计微程序时,只要不发ALUB微命令,该字段的编码可以任意设置。 A18位为输
8、出设备(LED)和主存(RAM)的读写控制字段,该位为0,表示读;该位为1,表示写。 A17A16位(B1B0)字段用于选择外设和主存。B1B0=01选择主存(CE有效),B1B0=00选择输入数据开关(SWB有效),B1B0=10选择输出LED(LEDB有效)。B1B0=11对本模型机无效,即没有选中任何外设或主存。 对本模型机而言,上述三位可以看成一个字段,其编码的含义如下:+ A18A17A16=000或100 从输入开关SW读数据 A18A17A16=001 从主存读数据 A18A17A16=101 向主存写数据 A18A17A16=110 向LED写数据 其它组合无意义。 A6A1位
9、为6位的预置后续微地址,“预置”的含义是该字段与微地址控制字段以及指令寄存器等部件的内容共同产生下一条微指令在控存中的微地址。A、B、C 三个译码字段,分别由三组译码控制电路译码产生各种微命令。 A字段用于产生各寄存器的数据装入微命令,各种编码的含义如上表所示。 由于模型机有三个通用寄存器(R0、R1、R2),它们都有相应的数据装入微命令,为了不增加微指令的宽度,该字段只设计了一个LDRi命令。为了区分究竟是哪个寄存器装入数据,要根据指令寄存器的最低两位(I1I0)的状态而定:当I1I0=00时,发LDR0微命令;I1I0=01时,发LDR1微命令;I1I0=10时,发LDR2微命令;I1I0
10、=11时,对本模型机无效;LOAD:PC装数 B字段中的RSB、RDB、RIB分别为源寄存器的内容送数据总线、目的寄存器送数据总线及变址寄存器送数据总线的微命令,其功能是根据机器指令来选通三个工作寄存器R0、R1及R2之一,将其内容送数据总线。 具体规则如下: 如果RDB有效,根据指令寄存器的最低两位(I1I0)的状态决定哪个寄存器的内容送数据总线:当I1I0=00时,发R0B微命令;I1I0=01时,发R1B微命令;I1I0=10时,发R2B微命令;I1I0=11时,对本模型机无效; 如果RSB有效,根据指令寄存器(I3I2)两位的状态决定哪个寄存器的内容送数据总线:当I3I2=00时,发R
11、0B微命令;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)是四个测试字段。其功能是根据机器指令、A5A0字段及其它有关部件
12、的内容,产生下一条微指令在控存中的微地址,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行等。AR为算术运算是否影响进位及判零标志控制位,低电平有效。LDPC为使PC+1的微命令。 P(1)P(4)的意义如下: P(1)测试相当于指令译码 作用是 次地址字段NA(41位) 或(或运算) 指令寄存器IR(85位)产生下一条微指令在控存中的微地址的41位,下一条微指令在控存中的微地址的65位仍为NA字段的65位。 P(2)测试的作用是次地址字段NA(21位)或指令寄存器IR(43位)产生下一条微指令在控存中的微地址的21位,下一条微指令在控存中的微地址的63位仍为NA字段的63位
13、。 P(3)测试的作用是次地址字段NA(4位)或进位或零标志产生下一条微指令在控存中的微地址的4位,下一条微指令在控存中的微地址的其它位仍为NA字段的相应位。 P(4)测试的作用是次地址字段NA(21位)或(SWC,SWA)产生下一条微指令在控存中的微地址的21位,下一条微指令在控存中的微地址的63位仍为NA字段的63位。五、编写微程序 在了解了微指令格式后,就可以开始编写微程序了。 一般地讲,编写微程序可以分成以下几步: 1、设计机器的指令格式,如本文第二部分所示。 2、对所设计的指令进行分析,画出各指令的用微命令表示的微流程图,如本文第二部分所示。不仅要画出每个对应一条微指令的功能框内的微
14、命令,而且要初步确定该条微指令在控存中的微地址,以便于在设计微程序时确定前一条指令的次地址NA字段和C字段的编码。在这个过程中,一定要注意P(1)测试的规则以及指令高四位的编码。 执行五条基本指令的微指令流程如图4所示。 3、根据微流程图的顺序,一个功能框一个功能框地按照第四段所述的微指令格式,确定各字段的编码,将这些字段组合即可形成一条条的微指令编码。这些微指令的集合就是可以完成所设计的指令功能的微程序。当然这样设计的微程序有可能不完全正确,还需要进一步检查修改。 以上几步可以用脑、手、纸、笔即可完成。 4、对设计的微程序进行检查修改。本模型机可以手动地用开关将微程序输入机器的控存。为了能将
15、要执行的指令输入主存,在微程序中必须安排一端相应的微程序;为了能检查输入的指令是否正确,也要设计一段微程序。这段微程序的微命令流程图如图5所示。图5 读写机器指令的微程序流程图 根据上述流程图,可设计相应的微程序。 将这段微程序(启动微地址为00H)和13步设计好的微程序组合成一个既可以向主存中写指令也可以从主存中读指令又可以运行主存中的程序的完整的微程序。 用于测试的机器指令程序编码如下:地址 编码 说明00H: 00000000 ;置数开关SW(KD0KD7)的状态R001H: 00010000 ;(R0)+(0A)(R0)02H: 0000101003H: 00100000 ;(R0)(
16、0B)04H: 0000101105H: 00110000 ; (0B)输出设备LED06H: 0000101107H: 01000000 ;00PC08H: 0000000009H:0AH: 00000001 ;数据为01H不难看出这一段程序的功能是将置数开关设置的数加存储器0A单元中的内容送数码管LED显示。既可读写机器指令又可运行微程序的完整的微程序编码如下: 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 100:00000101100000010001000001:00000101111011011000001
17、002:00000100110000000100100003:00000100111000000000010004:00000100101100000000010105:00000101101000100000011006:10010101100110100000000107:00000100111000000000110108:00000100000100000000000109:0000010111101101100000110A:0000010111101101100001110B:0000010111101101100011100C:0000010111101101100101100D
18、:0000011010000010000000010E:0000010011100000000011110F:00000100101000000001010110:00000101111011011001001011:00000101111011011001010012:00000100101000000001011113:00000101100000000000000114:00000100001000000001100015:00000111000010100000000116:00000100110100011000000117:00000111000010100001000018:00
19、0001101000101000010001 00:00000101100000010001000001:00000101111011011000001002:00000100110000000100100003:00000100111000000000010004:00000100101100000000010105:00000101101000100000011006:10010101100110100000000107:00000100111000000000110108:00000100000100000000000109:0000010111101101100000110A:0000
20、010111101101100001110B:0000010111101101100011100C:0000010111101101100101100D:0000011010000010000000010E:0000010011100000000011110F:00000100101000000001010110:00000101111011011001001011:00000101111011011001010012:00000100101000000001011113:00000101100000000000000114:00000100001000000001100015:0000011
21、1000010100000000116:00000100110100011000000117:00000111000010100001000018:000001101000101000010001此后就可以手动地用开关将微程序输入机器的控存。然后将控存的启动地址置为0,运行微程序,将要执行的测试程序存入主存,也可从主存中读出指令,检查输入的指令是否正确。关于如何将指令输入主存以及将微指令写入控存,参见实验设备厂的实验六和实验七的指导书。总之,这是一件相当烦琐的工作。 在完成上述工作后,即可单步或连续运行微程序,检查微程序是否正确。如果发现错误,及时修改后再试。 这个过程的操作参见实验指导书的实
22、验六 。 不难看出,要在本模型机上编写微程序是十分困难的。 为了解决这个难题,笔者开发了一个专门设计、分析针对本模型机的仿真软件,使得微程序的设计变得相当容易。关于该软件的功能和使用方法,参见该软件的“帮助”。 下面是利用该软件设计的微程序编码及各条微指令的功能分析。注意第一条微指令的微地址为01H,其它各条微指令的微地址都由上一行文字最后的数字(16进制)指定。微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001001000执行的操作是:存储器CE有效,存储器读,LDIR,
23、P(1)测试:NA(30)或(IR7IR4),转微地址:08微指令000001000001000000000001执行的操作是:输入开关SWB有效,LDR0,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001001000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:09微指令000001011110110110000011执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:03微指
24、令000001001110000000000100执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:04微指令000001001011000000000101执行的操作是:存储器CE有效,存储器读,LDDR2,转微地址:05微指令000001011010001000000110执行的操作是:R0B,LDDR1,转微地址:06微指令100101011001101000000001执行的操作是:算术:A加B,ALUB,LDR0,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001
25、001100000001001000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:0A微指令000001011110110110000111执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:07微指令000001001110000000001101执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:0D微指令000001101000001000000001执行的操作是:存储器CE有效,写存储器,R0B,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许
26、PC加1(LDPC=1),转微地址:02微指令000001001100000001001000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:0B微指令000001011110110110001110执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:0E微指令000001001110000000001111执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:0F微指令000001001010000000010101执行的操作是:存储器CE有效,存储器读,LDDR1,转微地址:15微指令00000111000
27、0101000000001执行的操作是:算术:A,数码管LEDB有效,写LED,ALUB,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001001000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:0C微指令000001011110110110010110执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:16微指令000001001101000110000001执行的操作是:存储
28、器CE有效,存储器读,PCLOAD,允许PC加1(LDPC=1),转微地址:01 不难看出,上面的文字说明和我们所画的用微命令表示的微程序流程图中各个框中所列的微命令是一一对应的。 这个微程序可以根据用微命令表示的微程序流程图在本仿真软件上很方便地设计出来。第二部分 课程设计要求一 课程设计的目的通过课程设计更清楚地理解下列基本概念:1 计算机的硬件基本组成;2 计算机中机器指令的设计;3 计算机中机器指令的执行过程;4 微程序控制器的工作原理。5 微指令的格式设计原则;在此基础上设计可以运行一些基本机器指令的微程序的设计二课程设计的内容和要求 1通过使用作者开发的微程序分析和设计仿真软件,熟
29、悉本文介绍的为基本模型机而设计的微程序的执行过程。必须充分理解并正确解释下列问题: 微程序中的微指令的各个字段的作用。哪些字段是不译码的,哪些字段是直接译码的,哪些字段又可以看成是字段间接编码的。 微程序中的微指令是否是顺序执行的,如果不是,那么次地址是如何产生的。什么情况下,次地址字段才是将要执行的微指令的地址。 在微程序中如何根据机器指令中的相关位实现分支,据此,在设计机器指令时应如何避免和解释其它指令的微指令的微地址冲突。 哪些微指令是执行所有指令都要用到的。 解释一条机器指令的微程序的各条微指令的微地址是否连续?这些微指令的微地址的安排的严重原则是什么? 为什么 读写一次内存总要用两条
30、微指令完成?机器程序中的用到的寄存器是R0,是由机器指令中哪些位决定的?如果要用R1或R2,是否要改写微程序或改写机器指令?如果要,应如何改写? 2.在原有5条机器指令的基础上增加实现下述各功能的机器指令,试设计相应的机器指令的格式并改写原来的微程序使其可以运行所有的机器指令。新增加的机器指令的功能是:寄存器间的数据传送指令MOV RD,RS:(RS)(RD)减法指令SUB R0,(ADDR):(R0)-(addr)(R0)与指令AND RD,RS:(RS)AND(RD)(RD)或指令OR RD,RS:(RS)OR(RD)(RD)异或指令XOR RD,RS:(RS)异或(RD)(RD)其中的RS、RD可以是R0、R1、R2中的任何一个。3写出课程设计报告,解释你的设计思想,比如,如何实现各指令的分支,如何重新安排各指令对应的微程序中的微指令的微地址,如何设计各微指令的编码。要求画出用微命令表示的微流程图并适当加以解释。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1