东北大学微机原理第2讲ppt课件.pptx
CPU指令集分类,复杂指令集,Complex Instruction Set Computer -CISC),精简指令集(Reduced Instruction Set Computing-RISC),指令是指示计算机执行某些操作的命令。一台计算机的所有指令的集合构成该机的指令系统,也称指令集。指令系统是计算机的主要属性,位于硬件和软件的交界面上,1 指令系统,早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成所需的计算任务。比如对于乘法运算,在CISC架构的CPU上,需要这样一条指令: MUL ADDRA, ADDRB 就可以将ADDRA和ADDRB中的数相乘并将结果储存在ADDRA中。将ADDRA, ADDRB中的数据读入寄存器,相乘和将结果写回内存的操作全部依赖于CPU中设计的逻辑来实现。这种架构会增加CPU结构的复杂性和对CPU工艺的要求,但对于编译器的开发十分有利。比如上面的例子,C程序中的a*=b就可以直接编译为一条乘法指令。,在CISC微处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢。今天只有Intel及其兼容CPU还在使用CISC架构。后续章节中所讲述的8086 CPU和MSC-51单片机的指令集都属于复杂指令集。,RISC架构要求软件来指定各个操作步骤。上面的例子如果要在RISC架构上实现,将ADDRA, ADDRB中的数据读入寄存器,相乘和将结果写回内存的操作都必须由软件来实现,程序: MOV A, ADDRA; MOV B, ADDRB; MUL A, B; STR ADDRA, A。 这种架构可以降低CPU的复杂性以及允许在同样的工艺水平下生产出功能更强大的CPU,但对于编译器的设计有更高的要求,与传统的CISC相比,RISC的指令格式统一,种类比较少,寻址方式也比复杂指令集少。当然处理速度就提高很多了。目前在中高档服务器中普遍采用这一指令系统的CPU,特别是高档服务器全都采用RISC 指令系统的CPU:PowerPC 处理器、SPARC 处理器、PA-RISC 处理器、MIPS 处理器、Alpha 处理器。目前一些嵌入式的CPU也采用RISC指令集。,指令格式,从二进制位串上讲,一条指令中包含两部分:操作码(Operation Code)和地址码(Address Code)。其中操作码表明了指令的操作性质及功能,地址码则给出了操作数的地址(即操作数的存储位置)。,指令是指示计算机执行某些操作的命令。一台计算机的所有指令的集合构成该机的指令系统,也称指令集。指令系统是计算机的主要属性,位于硬件和软件的交界面上,1 指令系统,(1)地址码结构计算机执行一条指令所需要的全部信息都必须包含在指令中。对于一般的双操作数运算类指令来说,除去操作码之外,指令还应包含以下信息:第一操作数地址,用A1表示。第二操作数地址,用A2表示。操作结果存放地址,用A3表示。下条将要执行指令的地址,用A4表示。这样,一条指令的格式可以细分为(OP表示具体的操作,Ai表示地址):,指令的含义: (A1) OP (A2) A3 下条将要执行指令存储在地址为A4开始的存储单元,优点:四地址指令格式的具有直观,下条指令的地址明显缺点:指令长度较长,占用的存储空间较大。,如果将指令按顺序依次存储在存储器中,用一个程序计数器(Program Counter,PC)来存放指令地址。通常每执行一条指令,PC就自动加1(设每条指令只占一个主存单元),直接得到将要执行的下一条指令的地址。,指令的含义:(A1) OP (A2 ) A3 (PC) + 1 PC (隐含),执行一条三地址的双操作数运算指令,至少需要访问4次主存。第一次取指令本身,第二次取第一操作数,第三次取第二操作数,第四次保存运算结果。这种格式省去了一个地址,但指令长度仍比较长,所以在微型计算机中很少使用。,三地址指令执行完后,主存中的两个操作数均不会被破坏。然而,通常并不一定需要完整的保留两个操作数。如果让第一操作数地址同时兼作存放结果的地址(目的地址),这样即得到了二地址指令,其格式为:,指令的含义: (A1) OP (A2 ) A1 (PC) + 1 PC (隐含)通常把A1称为目的操作数地址,A2称为源操作数地址。执行一条二地址的双操作数运算指令,同样至少需要访问4次主存。,只有一个地址的指令为一地址指令。那么另一个操作数来自何方呢?指令中虽未明显给出,但隐含着放在CPU内部的一个特殊存储器(专门寄存器)中的操作数。因为这个寄存器在连续性运算时,保存着多条指令连续操作的累计结果,故称为累加寄存器(Accumulator,Acc)。它的指令格式为:,指令的含义: (Acc) OP (A1) Acc (PC) + 1 PC (隐含),执行一条一地址的双操作数运算指令,只需要访问两次主存。第一次取指令本身,第二次取第二操作数。第一操作数和运算结果都放在累加寄存器中,所以读取和存入都不需要访问存储器。,(2)操作码,指令系统中的每一条指令都有一个唯一确定的操作码,指令不同,其操作码的编码也不同。通常,希望用尽可能短的操作码字段来表达全部的指令。指令操作码的编码可以分为定长编码和变长编码两类。,定长编码是一种最简单的编码方法,操作码字段的位数和位置是固定的。为了能表示整个指令系统中的全部指令,指令的操作码字段应当具有足够的位数。定长编码对于简化硬件设计、减少指令译码的时间是非常有利的,在字长较长的大、中型计算机及超级小型计算机上广泛采用。,变长编码的操作码字段的位数不固定,且分散地放在指令字的不同位置上。这种方式能够有效地压缩指令中操作码字段的平均长度,在字长较短的微型计算机上广泛采用。,最常用的非规整型编码方式是扩展操作码法。因为如果指令长度一定,则地址码与操作码字段的长度是相互制约的。为了解决这一矛盾,让操作数地址个数多的指令(三地址指令)的操作码字段短些,操作数地址个数少的指令(一或零地址指令)的操作码字段长些,这样既能充分地利用指令的各个字段,又能在不增加指令长度的情况下扩展操作码的位数,使它能表示更多的指令。,例如:设某计算机的指令长度为16位,操作码字段为4位,有3个4位的地址码字段,其格式为:,如果按照定长编码的方法,4位操作码最多只能表示16条不同的三地址指令。假设指令系统中不仅有三地址指令,还有二地址指令、一地址指令和零地址指令,利用扩展操作码法可以使在指令长度不变的情况下,指令的总数远远大于16条。,4位操作码的编码00001110定义了15条三地址指令,留下1111作为扩展窗口,与下一个4位(A1)组成一个8位的操作码字段。8位操作码的编码1111000011111110定义了15条二地址指令,留下11111111作为扩展窗口,与下一个4位(A2)组成一个12位的操作码字段。12位操作码的编码111111110000111111111110定义了15条一地址指令,扩展窗口为111111111111,与A3组成16位的操作码字段。最后,16条零地址指令由16位操作码的编码给出。,指令系统中要求有15条三地址指令、15条二地址指令、15条一地址指令和16条零地址指令,共61条指令。显然,只有4位操作码是不够的,解决的方法就是向地址码字段扩展操作码的位数。扩展的方法是:,2 寻址技术,所谓寻址,指的是寻找操作数的地址或下一条将要执行的指令地址,寻址技术是计算机设计中硬件对软件最早提供支持的技术之一。 寻址技术包括编址方式和寻址方式。,编址方式,编址方式是指对各种存储设备进行编码的方式。,在计算机中需要编址的设备主要有CPU中的通用寄存器、主存储器和输入输出设备3种。,如果存储设备是CPU中的通用寄存器,在指令字中应给出寄存器编号;如果是主存的一个存储单元,在指令字中应给出该主存单元的地址;如果是输入输出设备(接口)中的一个寄存器,指令字中应给出设备编号或设备端口地址或设备映像地址(与主存地址统一编址时)。,目前使用最普遍的编址方式是字节编址,这是为了适应非数值应用的需要。字节编址方式使编址单位与信息的基本单位(一个字节)相一致,这是它的最大优点。然而,如果主存的访问单位也是一个字节的话,那么主存的带宽就太窄了,所以编址单位和主存的访问单位是不相同的。通常主存的访问单位是编址单位的若干倍。在采用字节编址的机器中,如果指令长度是32位。那么每执行完一条指令,程序计数器要加4。如果数据字长是32位,当连续访问存储器时,每读写完一个数据字,地址寄存器要加4。由此可见,字节编址方式存在着地址信息的浪费。,指令中地址码的位数,指令格式中每个地址码的位数是与主存容量和最小寻址单位(即编址单位)有关联的。,常用的编址单位有字编址、字节编址和位编址。,指令寻址和数据寻址,寻址可以分为指令寻址和数据寻址。指令寻址寻找下一条将要执行的指令地址数据寻址寻找操作数的地址指令寻址比较简单,它又可以细分为顺序寻址和跳跃寻址。而数据寻址方式种类较多,其最终目的都是寻找所需要的操作数。顺序寻址可通过程序计数器加1,自动形成下一条指令的地址;跳跃寻址则需要通过程序转移类指令实现。跳跃寻址的转移地址形成方式有3种:直接(绝对)、相对和间接寻址,它与下面介绍的数据寻址方式中的直接、相对和间接寻址是相同的,只不过寻找到的不是操作数的有效地址而是转移的有效地址而已。,基本数据寻址方式,数据寻址方式是根据指令中给出的地址码字段寻找真实操作数地址的方式。,立即寻址,指令中的地址码不是操作数的地址,而是操作数本身,寄存器寻址,直接寻址,指定的寄存器中存放着操作数,指令中地址码给出的地址A就是操作数的有效地址,即:EA = A,间接寻址,间接寻址意味着指令中给出的地址A不是操作数的地址,而是存放操作数地址的主存单元的地址,简称操作数地址的地址。,(a)一级间接寻址 (b)多级间接寻址,寄存器间接寻址,指令中的地址码给出某一通用寄存器的编号,在被指定的寄存器中存放操作数的有效地址,而操作数则存放在主存单元中,变址寻址,变址寻址就是把变址寄存器Rx的内容与指令中给出的形式地址A相加,形成操作数有效地址,即EA =(Rx)+ A。Rx的内容称为变址值,基址寻址,基址寻址是将基址寄存器Rb的内容与指令中给出的位移量D相加,形成操作数有效地址,即EA=(Rb)+D。基址寄存器的内容称为基址值。指令的地址码字段是一个位移量,位移量可正、可负,相对寻址,相对寻址是基址寻址的一种变通,由程序计数器(PC)提供基准地址,指令中的地址码字段作为位移量D,两者相加后得到操作数的有效地址,即EA=(PC)+D,3 CPU结构和功能,1) 指令控制程序的顺序控制,称为指令控制。由于程序是一个指令序列,这些指令的相互顺序不能任意颠倒,必须严格按程序规定的顺序进行,因此,保证机器按顺序执行程序是CPU的首要任务。2) 操作控制一条指令的功能往往是由若干个操作信号的组合来实现的。因此,CPU管理并产生由内存取出的每条指令的操作信号。把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。3) 时间控制对各种操作实施时间上的控制,称为时间控制。因为在计算机中,各种指令的操作信号均受到时间的严格控制。另一方面,一条指令的整个执行过程也受到时间的严格控制。只有这样,计算机才能有条不紊地自动工作。4) 数据加工所谓数据加工,就是对数据进行算术运算和逻辑运算处理。完成数据的加工处理,这是CPU的根本任务。因为,原始信息只有经过加工处理后才能对人们有用。数据加工过程是由复杂数字电路构成的运算器完成的。,2.取指令和执行程序进入存储器后,就可由计算机自动完成取指令和执行指令的任务,控制器是专用于完成此项工作的。负责协调并控制计算机各部件执行程序的指令序列,其基本功能是取指令、分析指令和执行指令。1) 取指令控制器必须具备能自动地从存储器中取出指令的功能。为此,要求控制器能自动形成指令的地址,并能发出取指令的命令,将对应此地址的指令取到控制器中。2) 分析指令分析指令包括两部分内容,其一,分析此指令要完成什么操作,即控制器需发出什么操作命令;其二,分析参与这次操作的操作数地址,即操作数的有效地址。3) 执行指令执行指令就是根据分析指令产生的“操作命令”和“操作数地址”的要求,形成操作控制信号序列(不同的指令有不同的操作控制信号序列)。通过对运算器、存储器以及I/O设备的操作,执行每条指令。此外,控制器还必须能控制程序的输入和运算结果的输出(即控制主机与I/O交换信息)以及对总线的管理,甚至能处理机器运行过程中出现的异常情况(如掉电)和特殊请求(如打印机请求打印一行字符),即处理中断的能力。,根据CPU的功能不难设想,要取指令,必须有一个寄存器专用于存放当前指令的地址;要分析指令,必须有存放当前指令的寄存器和对指令操作码进行译码的部件;要执行指令,必须有一个能发出各种操作命令序列的控制部件CU;要完成算术运算和逻辑运算,必须有存放操作数的寄存器和实现算术逻辑运算的部件ALU;为了处理异常情况和特殊请求,还必须有中断系统。可见,CPU可由四大部分组成,如图1-3-12所示。,图1-3-12 使用系统总线的CPU,CPU的寄存器,4 参数与型号,CPU的主要参数,时钟频率/主频,地址总线宽度,数据总线宽度,3)数据总线宽度数据总线宽度指的是数据总线的条数。数据总线宽度则决定了CPU与主存以及输入输出设备之间进行一次数据传输的信息量。也就是一次传输的二进制位数。计算机的总线是CPU与外部(存储器、输入输出设备)进行数据交换的通道。有些CPU为了有效利用引脚,降低封装的引脚数量,采用分时复用技术,把相同的引脚上,在不同的时刻(时钟周期)分别用于地址总线和数据总线,构成所谓的“局部总线”。例如本书后续讨论的8086 和8051,都采用了这种分时复用技术。这种“复用总线”可以直接连接具有地址锁存功能的存储器或I/O 模块。但一般情况下,系统需要一套标准的非复用总线,则需要采用地址锁存器将地址和数据分离。,CPU的主要型号,