微程序控制计算机的设计.ppt
2007.7.2,计算机组成原理,1,第9章 微程序控制计算机的设计,计算机组成原理,2007.7.2,计算机组成原理,2,第9章 微程序控制计算机的设计,本章主要是为配合前面各章节理论教学而设计的,是理论与应用相结合教学内容的一部分。通过讲述微程序控制计算机的设计方法和过程,加深读者对计算机存储器、微程序控制器、指令系统等内容的理解,2007.7.2,计算机组成原理,3,本章要点:,计算机整机框图设计指令系统设计微操作信号设计指令微程序设计编写应用程序,2007.7.2,计算机组成原理,4,第9章 微程序控制计算机的设计,9.1 微程序控制计算机概述 9.2 指令系统设计 9.3 微程序设计 9.4 编写源程序,2007.7.2,计算机组成原理,5,9.1 微程序控制计算机概述,控制计算机工作的微命令信号主要通过两种方法实现,一种是由设计的微程序产生,另外一种是通过组合逻辑电路产生。计算机控制器构成电路主要是围绕这两种方法进行设计的,二者各有优缺点,详细知识第6章已经讲述,在此通过设计实例主要介绍微程序控制计算机的应用情况。,2007.7.2,计算机组成原理,6,9.1 微程序控制计算机概述,9.1.1 设计要求与目标 9.1.2 计算机硬件设计,2007.7.2,计算机组成原理,7,设计一个完整的计算机系统不仅要考虑计算机硬件设计,还要考虑机器字长、指令系统规模、外部设备规模等。详细分析主要包括如下几个方面:(1)机器字长采用8位还是16位。即运算器、数据总线是采用8位还是16位。(2)地址总线的位数。确定计算机寻址空间的大小。(3)计算机运算器采用什么结构(如多通用寄存器结构、多累加器结构等)。,1.设计要求,2007.7.2,计算机组成原理,8,(4)计算机指令系统规模(共有多少条指令,多少种寻址方式,指令功能等)。(5)计算机是否使用外设(键盘和打印机),以什么方式使用外设(程序查询I/O方式还是中断I/O方式)。,2007.7.2,计算机组成原理,9,计算机系统采用8位字长,计算机系统的硬件组成应该完备,运算器、控制器、主存、I/O接口及总线等应有一定的典型性,并能驱动简单的I/O设备。此外该计算机系统应具备一定规模的指令系统,能够完成基本的算术逻辑运算以及数据的输入输出控制。,2.设计目标,2007.7.2,计算机组成原理,10,计算机的工作过程,实质上是不同的数据流在控制信号作用下在限定的数据通路中进行传送。数据通路不同,指令所经过的操作过程也不同,机器的结构也就不样,因此数据通路的设计是至关重要的。所谓数据通路的设计,也就是确定机器各逻辑部件相对位置的总框图。,9.1.2 计算机硬件设计1设计整机逻辑框图,2007.7.2,计算机组成原理,11,数据通路的设计,目前还没有非常标准的方法。主要是依据设计者的经验,并参考现有机器的几种典型形式(比如单总线、双总线或三总线结构),根据指令系统的要求,可采用试探方法来完成。其主要步骤如下:(1)对指令系统中的各条指令进行分析,得出所需要的指令周期与操作序列,以便决定各器件的类型和数量。,2007.7.2,计算机组成原理,12,(2)构成一个总框图草图,进行各逻辑部件之间的互相连接,即初步确定数据通路,使得由指令系统所包涵的数据通路都能实现,并满足技术指标的要求。(3)检验全部指令周期的操作序列,确定所需要的控制点和控制信号。(4)检查所设计的数据通路,尽可能降低成本,简化线路。注:以上过程可以反复进行,以便得到一个较好的方案。,2007.7.2,计算机组成原理,13,根据设计要求,对计算机模块的硬件资源进行逻辑剪辑组合,便可设计出该计算机的整机数据通路逻辑框图,如图9-1所示。为利于调试,在通路框图上标明了各器件的控制信号及必要的输出信号。图9-1中设计了运算器ALU、移位发生器(74299)、数据寄存器(DR1、DR2等)、寄存器组(R0、R1、R2)、内存RAM、微程序控制器单元CU、地址加法器、指令寄存器IR、程序计数器PC以及输入/输出设备等单元模块。,2007.7.2,计算机组成原理,14,图9-1 计算机整机逻辑框图,2007.7.2,计算机组成原理,15,(1)移位发生器单元如图9-2所示,该电路使用了一片74LS299作为移位发生器,其中8位输入输出和8位数据总线连接。299-B信号控制其使能端(0有效),T4为时序节拍脉冲。由S0、S1、M控制信号设置其运行状态,其控制特性见表9-1所示。,2单元模块详细设计,2007.7.2,计算机组成原理,16,表9-1 移位发生器控制状态表,2007.7.2,计算机组成原理,17,图9-2 移位发生器电路图,2007.7.2,计算机组成原理,18,受设计复杂度的限制,在计算机整机框图中时序启停模块并没有画出,但对于计算机系统来说,控制计算机工作的时序信号是极为重要的。如图9-3时序启停电路原理所,其中时序电路由1/2片74LS74、1片74LS175及6个二输入与门、2个二输入与非门和3个反向器构成。可产生4个等间隔的时序信号T1T4,其中“时钟”信号由“脉冲源”提供。为了便于控制程序的运行,时序电路发生器也设置了一个启停控制触发器CR,使T1T4信号输出可控。,(2)时序启停电路单元,2007.7.2,计算机组成原理,19,图中给出了“运行方式”、“停机”和启动控制位,用来分别管理时序信号T1T4将周而复始地发送或单步发送。时序信号T1T4连续发送,机器就可以连续执行微程序;机器仅发送单周期4拍制时序信号,便单步运行状态,机器每次只执行一条微指令,这样,可以观察微控制状态与当前微指令的执行结果。,2007.7.2,计算机组成原理,20,图9-3 时序启停电路图,2007.7.2,计算机组成原理,21,用示波器观察时序波形,可看到时序信号T1T4的波形,如图9-4所示。,图9-4 时序信号T1T4的波形图,2007.7.2,计算机组成原理,22,在计算机进行算术运算、逻辑运算或移位运算时,运算结果的状态主要依靠标志寄存器来显示,因此设计计算机系统时,设计合理的标志位锁存电路十分必要。如电路图9-5所示,其中181的8位输出端逻辑或非后进入74LS74锁存器D端,该端的状态由AR和T4信号控制,当AR=1时,在时序T1T4处于单步执行状态下,在T4节拍把当前零(ZQ)状态锁存到零标志锁存器中。,(3)标志位锁存单元,2007.7.2,计算机组成原理,23,图9-5 标志位锁存电路图,2007.7.2,计算机组成原理,24,如电路图9-6所示,使用2片74LS163组成8位程序计数器PC,其8位输入/输出公用端与总线(BUS)接口相连接。通过LDPC、LOAD信号和脉冲T3来控制对程序计数器PC装载数据和加1操作。当LOAD=1、LDPC=1时,在时序T3上升沿把数据开关的内容装入PC。当LOAD=0、LDPC=1时,在单周期四节拍时序的T2时刻打开PC-B三态门,在T3时刻PC值通过总线打入地址寄存器、同时PC值加1。,(4)程序计数器单元,2007.7.2,计算机组成原理,25,图9-6 程序计数器电路图,2007.7.2,计算机组成原理,26,(5)指令寄存器单元 如图9-7所示,1片74LS273作为指令寄存器单元,其8位输入端与BUS总线已作连接,其输出端与微程序存储器地址(SE5SE0)接口连接。指令数据寄存器IR(74LS273)的LDIR为电平正跳变时,把来自数据总线的数据打入寄存器IR,IR的输出就作为本系统内的8位指令I7I0。在本系统内由这8位指令(可最多译码256条不同的指令),通过编码可对应这些指令在微程序存储器中的入口地址,并且输出相应的微控制指令。,2007.7.2,计算机组成原理,27,图9-7 指令寄存器电路图,2007.7.2,计算机组成原理,28,(6)输入/输出单元计算机系统中所用的输入/输出设备如电路图9-8、9-9所示。其中输入设备有8位带显示数据开关经一个三态门(74LS245)8位数据总线相连。输出设备经一锁存器(74LS273)实现,该锁存器的8位输入端和8位数据总线相连,其锁存输出端与8个发光二极管的显示接口相连,该显示接口以二进制方式显示输出结果(灯亮表示该输出位为1,灯灭表示该输出位为0)。,2007.7.2,计算机组成原理,29,说明:在本设计中8位数据开关就是简单的输入设备,一次只能向计算机输入8位 二进制;8个发光二极管是简单的输出设备,一次能显示一个字节的结果。,图9-8 输入设备电路图,2007.7.2,计算机组成原理,30,图9-9 输出设备电路图,2007.7.2,计算机组成原理,31,说明:运算器、存储器及微程序控制器工作原理分别在前面第2章、第4章 和第6章已讲述,它们设计及应用内容在第10章实训部分还会详细介绍,此处不再重点讲述。,思考:结合数字电路知识,请查阅资料分析74LS245、74LS 74、74LS175、74LS299、74LS273芯片的作用及特性。,2007.7.2,计算机组成原理,32,9.2 指令系统设计,设计一个计算机系统需确定计算机的指令系统具体由哪些指令组成,包括哪几种类型指令,指令操作数有哪几种寻址方式,以及指令编码等,要兼顾必要性(编程方便)和可行性(硬件条件)两个条件。,2007.7.2,计算机组成原理,33,9.2 指令系统设计,9.2.1 指令类型 9.2.2 设计指令执行流程,2007.7.2,计算机组成原理,34,1.算术逻辑指令系统共设计9条算术逻辑指令,分别是:寄存器清零指令(CLR)、数据传送指令(MOV)、带进位加法指令(ADC)、借位减法指令(SUC)、自增运算指令INC)、与运算指令(AND)、取反运算指令(COM)、带进位循环右移指令(RRC)和带进位循环左移指令RLC)。这些指令全部用单字节表示,寻址方式采用寄存器直接寻址,其格式如下:,微程序控制计算机设计四大类指令共十六条,其中包括算术逻辑指令、I/O指令、访问及转移指令和停机指令。,2007.7.2,计算机组成原理,35,其中,OPCODE为操作码占用4位二进制(D7D4),rs为源寄存器占用2位二进制(D3、D2),rd为目的寄存器占用2位二进制(D1、D0),并规定:,9条算术逻辑指令的名称、功能和具体格式见表9-1所示。,2007.7.2,计算机组成原理,36,2.访存指令及转移指令系统共设计2条访存指令存数(STA)和取数(LAD),2条转移指令无条件转移(JMP)和结果为零或有进位转移指令(JZC),这4条指令长度为2个字节,其指令格式为:,2007.7.2,计算机组成原理,37,其中,OPCODE为操作码,rd为目的寄存器地址(LDA、STA指令使用)。D为偏移量(正负均可),M为寻址模式,其定义如下:,本计算机规定变址寄存器RI指定为寄存器R2。,2007.7.2,计算机组成原理,38,3.I/O指令I/O指令共两个,分别是输入(IN)和输出(OUT)。指令采用单字节指令,其格式如下:,其中,addr01时,选中“输入设备”中的开关组作为输入设备,addr10时,选中“输出设备”中的数码显示单元作为输出设备。,2007.7.2,计算机组成原理,39,4.停机指令设计一个停机指令HLT,该指令用于实现停机操作。指令格式如下:,根据上面介绍,表9-1列出了本计算机系统16条基本指令的格式、汇编符号和指令功能,其中算术逻辑指令9条,访存指令和程序控制指令4条,输入输出指令2条,停机指令1条。,2007.7.2,计算机组成原理,40,表9-1 指令详细信息表,2007.7.2,计算机组成原理,41,9.2.2 设计指令执行流程,指令类型和数量确定后,还需结合计算机整机通路逻辑图(见图9-1)设计出每条指令的执行流程。我们知道,一条指令从内存取出到执行完毕,需要若干个机器周期(节拍)。任何指令的第一个机器周期都是“取指令周期”,或称为公共操作周期。而条指令共需几个机器周期取决于指令在计算机系统中实现的复杂程度。对于微程序控制的计算机设计指令执行流程时,要保证每条微指令所含微操作的必要性和合理性,防止微操作之间有时序冲突,为此要分析:,2007.7.2,计算机组成原理,42,(1)哪些微操作信息可以安排在同一条微指令中;(2)哪些微操作信息必须安排在同一条微指令中;(3)哪些微操作信息不能安排在同条微指令中。,另外,还应记住:总线(数据总线DB、地址总线AB、控制总线CB)仅是传输信息的通路而已,无寄存信息的功能;利用总线传输信息时要保证信息的唯一性(即不能有个以上器件向总线发送信息);ALU的输出缓冲器仅是三态传输门电路,无寄存功能。,2007.7.2,计算机组成原理,43,下面我们举几个例子说明如何设计指令流程。,说明:箭头表示数据信息流向,括号中的T1,T2,T3为工作脉冲。,【例9-1】单字节指令 ADC rs,rd(rd是目的寄存器,rs是源寄存器,硬件见图(9-1)该指令功能为rs+rd+cy rd(cy是进位值),需执行的微操作和所需的微操作信号如下:(1)(PC)(AR)RAM;根据PC访问内存 所需的微操作信号:LDPC,LDAR(T3)(2)RAM DB IR(DB为数据总线);读出指令字节送IR 所需的微操作信号:WE,CE,LDIR(T3)(3)(PC)+1 PC;PC加l计数,为取下条指令字节准备 所需的微操作信号:PC+1(T3)(4)R0 DR1;R1DR2;取两个操作数送数据寄存器为ALU准备好被加数 所需的微操作信号:R0-B,R1-B,RS-BUS,LDDR1,LDDR2(5)(DR1+DR2)+cy R1;ALU执行加法,结果暂存目的寄存器 所需的微操作信号:M,CN,S0,S1,S2,S3,ALU-BUS,LDRi(T2),2007.7.2,计算机组成原理,44,【例9-2】单字节指令MOV rs,rd 该指令功能为rs rd,需执行的微操作和所需的微操作信号如下:(1)(PC)(AR)RAM;根据PC访问内存 所需的微操作信号:LDPC,LDAR(T3)(2)RAM DB IR(DB为数据总线);读出指令字节送IR 所需的微操作信号:WE,CE,LDIR(T3)(3)R0 DB;读出数据到数据总线 所需的微操作信号:R0-B,RS-BUS(4)DB R1;数据总线上的数据送R1 所需的微操作信号:LDRi(T2),根据计算机整机数据通路逻辑框图(9-1),参照例9-1和9-2的设计方法,可以完成对INC、AND、RRC 等其余14条指令的微操作流程和所需的微操作信号的设计。详细设计留给读者完成。,思考:指令执行过程中微操作信号的作用是什么?,2007.7.2,计算机组成原理,45,9.3 微程序设计,在微程序控制计算机中,源程序指令的执行是建立在微程序的基础之上的。计算机要完成程序执行,必须先设计每条指令的微程序,并且放在微程序控制器的存储器中,这样,计算机就把执行源程序指令的工作通过执行一个微程序来实现。在计算机中指令执行的效率如何和微程序控制、微指令字长以及微程序设计情况密切相关。,2007.7.2,计算机组成原理,46,9.3.1 微程序控制器,微程序控制计算机的数据通路确定后,下一个设计重点就集中在控制器的设计上。控制器逻辑框图,如图9-10所示。图中IR存放的是源程序指令,控制器对源程序指令的操作码译码可以找到该指令的微程序的入口地址,然后送入微程序计数器Upc中,根据微程序的入口地址访问控制存储器就可以读取微程序的第一条微指令,从而开始执行一个微程序完成指令的工作。图中微程序每一条微指令的执行都是在微指令寄存器中完成的。,2007.7.2,计算机组成原理,47,图9-10微程序控制逻辑框图,2007.7.2,计算机组成原理,48,9.3.2 微程序设计,将机器的全部指令系统采用微指令序列实现的过程,叫做微程序设计。一条机器指令对应一个微程序,本系统共有16条机器指令就应当对应有16个微程序。计算机中微程序控制器的强大与否,机器性能如何,取决于如何设计控制流程,并转化为微程序。微程序设计是以微指令设计为基础的。,2007.7.2,计算机组成原理,49,1.微指令格式,本部分设计任务是综合微程序控制计算机指令系统各指令执行流程中涉及到的微操作控制信号,统计总共需多少个微操作控制信号,决定这些信号中在微指令中产生的方式及格式。微指令设计分为水平型微指令和垂直微指令两种。如果计算机系统复杂不高,微指令格式建议采用水平型微指令,微命令编码采用直接表示法和分段直接译码法相结合的混合表示法,以缩短微指令长度。后继地址采用下址字段给出的方式。微指令格式如下:,2007.7.2,计算机组成原理,50,结合计算机指令系统和数据通路逻辑框图,可以分析系统所需的微命令信号的数目,从而确定微指令中控制字段的长度。比如微指令长24位,若微指令采用全水平不编码直接控制的格式,那么至多可有24个微命令控制信号直接产生。如果采用分组编码译码,那么n位微指令编码通过译码器译码可实现2n个互斥的微命令控制信号(即它们不可能在同一节拍内激活)。系统中微指令格式及微命令信号设计实例如下:,2007.7.2,计算机组成原理,51,微指令字长共24位,其控制位顺序如下:,2416为直接控制字段,共给出9个微命令信号;A、B、C为译码字段,可以分别送3-8译码器,共可以设计出互斥的24个微命令信号;A5A0为下址字段(微指令后继微地址),6位地址可以访问的控制存储器的空间为26,即系统设计的微指令最多不超过64条。,2007.7.2,计算机组成原理,52,2.指令流水执行时空表设计指令执行流程时空表应在设计数据通路之前确定,因为具体的流水线是跟时空表紧密相联的。本设计是在已有的数据通路的基础上(该数据通路支持流水),通过改进控制来提升系统性能,因此将时空表放在控制器部分进行设计。表9-2给出的是指令执行过程时空表,表9-3给出的是指令两级流水执行时空表,表9-4给出的是指令四级流水执行时空表。,2007.7.2,计算机组成原理,53,表9-2 指令执行过程时空表,表9-3 指令两级流水执行时空表,2007.7.2,计算机组成原理,54,表9-2 指令执行过程时空表,注意:设计选用的时空表只要设计可以实现即可,不同的时空表直接影响系统的性 能。,思考:设计微指令格式时,判别字段的主要作用是什么?,2007.7.2,计算机组成原理,55,3.编写各指令的微程序根据指令流程和微指令格式仔细地逐条编写每一个指令的微程序,源程序指令对应的微程序流程图及确定微地址,如图9-11所示。,2007.7.2,计算机组成原理,56,图9-11 微程序流程图,2007.7.2,计算机组成原理,57,根据流程图,可以写成二进制表示的微程序,为了书写方便,在此用十六进制书写。十六进制微地址$:表示地址M:表示微指令十六进制表示微程序格式说明 微指令代码:,2007.7.2,计算机组成原理,58,$M2205DB81$M230180E4$M24018001$M2595AAA0$M2600A027$M2701BC28$M2895EA29$M2995AA0$M2A01B42B$M2B959B41$M2C01A42D$M2D65AB6E$M2E0D9A01$M2F01AA30$M300D8171$M31959B41$M32019A01$M3301B435$M3405DB81$M35B99B41$M360D9A01$M37298838$M38019801$M3919883A$M3A019801$M3B070A08$M3C068A09$M00018108$M0101ED82$M0200C050$M0300A004,$M230180E4$M24018001$M2595AAA0$M2600A027$M2701BC28$M2895EA29$M2995AA0$M2A01B42B$M2B959B41$M2C01A42D$M2D65AB6E$M2E0D9A01$M2F01AA30$M300D8171$M31959B41$M32019A01$M3301B435$M3405DB81$M35B99B41$M360D9A01$M37298838$M38019801$M3919883A$M3A019801$M3B070A08$M3C068A09,$M0400E0A0$M0500E006$M0600A007$M0700E0A0$M0801ED8A$M0901ED8C$M0A00A03B$M0B018001$M0C00203C$M0D00A00E$M0E01B60F$M0F95EA25$M1001ED83$M1101ED85$M1201ED8D$M1301EDA6$M14001001$M15030401$M16018016$M173D9A01$M18019201$M1901A22A$M1A01B22C$M1B01A232$M1C01A233$M1D01A236$M1E318237$M1F318239$M20009001$M21028401$M2205DB81,2007.7.2,计算机组成原理,59,9.4 编写源程序,计算机系统共设计了16条指令,指令机器码采用单字节设计,指令与机器码对应关系如表9-5所示:,9.4.1 指令机器码,2007.7.2,计算机组成原理,60,表9-5 指令与机器码对应关系表,2007.7.2,计算机组成原理,61,9.4.2 机器程序设计实例,根据指令的机器码,设计的机器指令程序如下:,地址(二进制)内容(二进制)源程序说明 0000 1101 0000 IN R0 输入设备内容R0 0001 0010 0000 ADC R0,O9H R0+09H+cyR0 0010 0000 1001 0011 1010 0000 STA 0BH,R0 R00BH 0100 0000 1011 0101 1110 0000 OUT 0BH,LED 0BHLED(输出设备)0110 0000 1011 0111 1011 0000 JMP 00H 00HPC 1000 0000 0000 1001 0101 0101 自定 1010 1010 1010 自定 1011 求和结果,2007.7.2,计算机组成原理,62,机器指令及微程序按照规定的格式编写成十六进制格式文件,程序清单如下:,P00 D0;机器指令格式说明(P代表机器指令):P01 20;PXX XXP02 09;地址 机器代码P03 A0P04 0BP05 E0P06 0BP07 B0P08 00P09 55P0A AA,2007.7.2,计算机组成原理,63,本章小节,本章小节本章从微程序计算机的设计过程作为学习点,重点讲述了计算机的硬件设计,指令系统设计,微程序设计,指令编码和源程序设计等内容。旨在从应用角度使读者加深对计算机组成原理的理解,提升学习兴趣。,