计算机组成原理第3章课件_第1页
计算机组成原理第3章课件_第2页
计算机组成原理第3章课件_第3页
计算机组成原理第3章课件_第4页
计算机组成原理第3章课件_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章处理器3.1处理器的指令集

3.2处理器的基本组成与工作过程

3.3从CISC到RISC3.4Intel80x86系列微处理器

3.5ARM系列微处理器

2023/7/26第3章处理器3.1处理器的指令集

3.1.1概述

人们与计算机交流所用的“词汇”叫做“指令(Instruction)”,所有可以采用的“词汇”组成的集合叫做“指令集(InstructionSet)”,这些“词汇”按照一定的顺序组合就形成了程序(Program)。在国内,“指令集”常称为“指令系统”。

2023/7/26第3章处理器3.1.1概述

计算机能直接识别的是由0和1排列而成的指令,即所谓“机器指令”。使用不方便。汇编语言是基于英文的机器指令助记符。例如,某个机器指令原来用0101表示加法运算,现在引入助记符ADD或add来表示0101,方便了人们编写程序。按汇编语言书写的程序叫做汇编语言源程序,汇编语言源程序由汇编程序(Assembler)转换成机器指令,供计算机接受并执行。2023/7/26第3章处理器3.1.1概述

汇编语言的提出是计算机技术的一大进步,体现了计算思维的一个重要概念——抽象。

计算机程序设计语言的发展过程就是不断抽象的过程。通过抽象,程序设计语言具有了更好的可编程性、可移植性、可重用性。2023/7/26第3章处理器3.1处理器的指令集

3.1.2指令的操作码与操作数

指令操作码(OperationCode)指令操作数(Operand)3.1.1概述

冯·诺依曼型计算机机器指令的逻辑格式

规定了指令所具有的功能。课程中主要用汇编语言助记符表示。指令所要处理的数据。常以数据所在存储单元的地址形式给出。也称“指令地址码”。2023/7/26第3章处理器3.1.2指令的操作码与操作数

一条指令中,操作数可能有一个、两个或三个,甚至更多。当然,操作数的个数也可以是零,即指令没有操作数,如停机指令。

在这些操作数中,作为处理单元输入的叫源操作数(SourceOperand),用于存放处理结果的叫目的操作数(DestinationOperand)。2023/7/26第3章处理器3.1.2指令的操作码与操作数

指令中所能表示的操作数数据类型,即能够被计算机硬件直接辨识的操作数数据类型,称为“数据表示”。常见的“数据表示”有定点数(含有符号数和无符号数)、浮点数(含单精度浮点数和双精度浮点数)、字符、逻辑数(又称布尔型数据)。2023/7/26第3章处理器3.1.2指令的操作码与操作数

“堆栈(Stack)”是一个重要的数据结构,广泛应用于子程序调用和中断服务等领域。堆栈的存取原则是后进先出(LastInFirstOut,LIFO)。对堆栈的操作都是针对栈顶单元进行的,有“压入(PUSH)”和“弹出(POP)”两条指令。2023/7/26第3章处理器3.1.2指令的操作码与操作数

用专门的硬件设备来实现的堆栈称为级联堆栈或硬件堆栈。为了降低硬件成本,大多数计算机(特别是微型计算机)常用软件来实现堆栈,即在内存中开辟一个堆栈区,并在处理器中设置指示堆栈栈顶单元地址的“堆栈指针寄存器(StackPointer,SP)”来管理这个堆栈。2023/7/26第3章处理器3.1.2指令的操作码与操作数

相对于硬件堆栈,软件堆栈有三个优点:可以有较大的深度。可以设置多个堆栈。除了专门的堆栈指令PUSH和POP外,还可以使用任何访问主存的指令来访问堆栈中的数据。2023/7/26第3章处理器3.1.2指令的操作码与操作数

只有标量数据表示和标量指令的处理器叫标量处理器,这是最常见、最通用的处理器。带有向量数据表示和向量指令的处理器叫向量处理器,例如我国于20世纪80年代研制的银河-1超级计算机就装备有向量处理器。2023/7/26第3章处理器3.1处理器的指令集

3.1.3寻址方式

所谓寻址方式(Addressing)指的是指令按照何种方式寻找或访问到所需的操作数或信息。寻址方式分为指令寻址和数据寻址。指令寻址是为了找到下一条指令;数据寻址是为了找到本条指令所需的操作数。

2023/7/26第3章处理器3.1.3寻址方式

分为顺序寻址和跳跃寻址两种。顺序寻址就是程序计数器PC中的值就是下一条指令的存储地址。每读取一次PC后,PC自动加1,指向下一条指令。跳跃寻址则是先由当前指令改写PC的内容,然后计算机读取PC,根据PC的值访问主存储器,取下一条指令。1.指令寻址

2023/7/26第3章处理器改写PC的指令有“跳转指令(Jump)”和“分支指令(Branch)”。在国内,“跳转指令”常称为“无条件转移指令”,“分支指令”常称为“条件转移指令”。这两种指令既可直接赋予PC一个新的值,也可在PC现有值的基础上增加或减少一定数量。后者也称“相对寻址”或“PC相对寻址”,其中增加或减少的数量叫做“相对位移量”,它是一个补码表示整数。1.指令寻址

2023/7/26第3章处理器3.1.3寻址方式

立即数寻址直接寻址间接寻址堆栈寻址1.指令寻址

2.数据寻址

寄存器寻址寄存器间接寻址基址寻址变址寻址2023/7/26第3章处理器(1)立即数寻址(ImmediateAddressing)(2)直接寻址(DirectAddressing)2.数据寻址

在指令中直接给出操作数的数值。只要取到指令,就可以立即处理指令中的操作数,这种操作数叫做“立即数”。在指令中直接给出操作数内存地址。“直接寻址”执行时间较长。另外,由于指令长度的限制,指令中采用“直接寻址”的操作数的个数一般不超过两个,所能寻址的范围较小。

2023/7/26第3章处理器(3)间接寻址(IndirectAddressing)

2.数据寻址

指令中给出的主存地址中存放的并不是操作数,而是操作数的内存地址。先按指令给出的地址访问主存读出操作数的存放地址,然后再次访问主存,访问目标操作数。“间接寻址”的优点一是扩大了主存中操作数的寻址范围,二是使用同一条指令可以访问/处理存放于不同主存单元中的数据。

2023/7/26第3章处理器(4)寄存器寻址(RegisterAddressing)

2.数据寻址

操作数是寄存器名(即寄存器编号),指令要处理的数据就存储在该寄存器中。处理器的寄存器数量很少,所以寄存器名很短,采用“寄存器寻址”的指令格式中可以放下两个或三个寄存器地址。优点是增加了指令中操作数的个数,增强了指令的功能;获取操作数的速度快。2023/7/26第3章处理器(5)寄存器间接寻址(RegisterIndirectAddressing)

2.数据寻址

存储在寄存器中的是操作数的内存地址。在读取寄存器后,要按照读取值访问内存,才能获得真正的操作数。优点是,通过改变寄存器中的内存地址,可用相同的指令处理不同的数据;指令较短,执行速度较快

2023/7/26第3章处理器(6)基址寻址(

BaseAddressing

)

2.数据寻址

“逻辑地址”是程序员编写程序时使用的地址。“主存物理地址”是程序段/数据段在主存中的实际存放地址。程序段/数据段的“逻辑地址”都是从零开始编址的。而程序段/数据段每次装入主存的起始地址是不确定的,每次运行时,某条指令或某个数据的“主存物理地址”也是不确定的。但是这条指令或这个数据的“逻辑地址”是固定的。2023/7/26第3章处理器(6)基址寻址(

BaseAddressing

)

2.数据寻址

为了实现“逻辑地址”到“主存物理地址”的转换,可以在处理器内部设置一个专门存放程序段/数据段在主存中起始地址的寄存器,称起始地址为“基地址”,简称“基址”,称该寄存器为“基址寄存器”。这样在执行时将“逻辑地址”与基址寄存器中的值相加即得到指令或数据的“主存物理地址”。指令中给出的“逻辑地址”又称为相对于基址的“位移量”,位移量是一个有符号的整数,常用补码表示。

2023/7/26第3章处理器(7)变址寻址(IndexedAddressing)

2.数据寻址

为支持用循环结构处理数组/向量而提出。寻址过程:将数组/向量的起始地址作为操作数在指令中给出,将数组/向量的元素下标i存放在一个专门的寄存器——变址寄存器中。指令执行时,用变址加法器将指令中的起始地址与变址寄存器中的内容相加,得到数组/向量元素的地址。由于对数组/向量的访问既可能是顺序访问,又可能是随机访问,这样只需改变变址寄存器中的i值,就可/访问到数组/向量的任一元素。2023/7/26第3章处理器2.数据寻址

为了支持同时处理多个数组或向量,处理器可设置多个变址寄存器。例如,8086微处理器有两个变址寄存器,一个是存放源操作数变址值的寄存器SI,另一个是存放目的操作数变址值的寄存器DI。此时,采用“变址寻址”指令中除了要给出数组/向量的起始地址外,还需指明使用的是哪个变址寄存器。变址寻址还可与其他寻址方式结合使用。例如与基址寻址结合可得到“基址变址寻址”,与“间接寻址”结合可以得到“先变址后间接寻址”等。

2023/7/26(7)变址寻址(IndexedAddressing)

第3章处理器(8)堆栈寻址2.数据寻址

采用“堆栈寻址”的前提是处理器支持堆栈数据结构,设置有“堆栈指针寄存器SP”。“堆栈寻址”无须给出操作数的存储地址,只要声明操作数采用堆栈寻址,机器就会根据栈顶指示寄存器的内容找到栈顶单元,然后对栈顶单元进行弹出或压入操作。2023/7/26第3章处理器根据堆栈的增长方向,基于主存储器实现的堆栈分为:①递增堆栈(AscendingStack),也称向上增长堆栈。随着数据的压入,这种堆栈向高地址方向增长;②递减堆栈(DescendingStack),也称向下增长堆栈。随着数据的压入,这种堆栈向低地址方向增长。2023/7/26(8)堆栈寻址第3章处理器根据SP所指示栈顶单元的属性,堆栈也可分为:①满堆栈(FullStack)。SP指示栈顶单元存储的是最后压入数据。②空堆栈(EmptyStack)。SP指示栈顶单元用于接收下一个要压入的数据。

2023/7/26(8)堆栈寻址第3章处理器2023/7/262009年全国研究生入学统一考试计算机专业试题某机器字长16位,主存按字节编址,转移指令采用相对寻址,由两个字节组成,第一字节为操作码字段,第二字节为相对位移量字段。假定取指令时,每取一个字节PC自动加1。若某转移指令所在主存地址为2000H,相对位移量字段的内容为06H,则该转移指令成功转移后的目标地址是

。A.2006HB.2007HC.2008HD.2009H2011年全国研究生入学统一考试计算机专业试题偏移寻址通过将某个寄存器内容与一个形式地址相加而生成有效地址。下列寻址方式中,不属于偏移寻址的是

。A.间接寻址B.基址寻址C.相对寻址D.变址寻址第3章处理器3.1处理器的指令集

3.1.4指令的基本功能

通用计算机系统的指令集可分为5类基本指令:(1)算术/逻辑/移位指令(简称算逻指令)(2)数据传送指令(简称数传指令)(3)控制转移指令(4)输入/输出指令(5)处理器控制及调试指令2023/7/26第3章处理器3.1.4指令的基本功能

(1)算逻指令定点加法指令ADD定点减法指令SUB定点乘法指令MUL定点除法指令DIV加1指令INC减1指令DEC比较指令CMP浮点加法指令ADDF浮点减法指令SUBF浮点乘法指令MULF浮点除法指令DIVF十进制数算术运算指令使用这些指令时,要注意它们对处理器中状态标志位的影响算术指令2023/7/26第3章处理器3.1.4指令的基本功能

(1)算逻指令“与”运算指令AND“或”运算指令OR“非”运算指令NOT“异或”运算指令XOR位测试位清除位求反

算术左移指令算术右移指令逻辑左移指令逻辑右移指令带进位循环左移指令不带进位循环左移指令带进位循环右移指令不带进位循环右移指令逻辑指令移位指令2023/7/26第3章处理器3.1.4指令的基本功能

(2)数传指令根据数据的流向分:寄存器与寄存器之间的数据传送寄存器与主存储器单元之间的数据传送寄存器与堆栈之间的数据传送堆栈与主存储器单元之间的数据传送内存单元与内存单元之间的数据传送2023/7/26第3章处理器(2)数传指令根据传输的功能分:一般传送指令实现数据复制功能,即把源操作数的内容写入目的操作数。其汇编语言助记符通常为MOV。在有些计算机上,将主存储器单元的内容写入寄存器的数据传送指令,其汇编语言助记符为LOAD;将寄存器内容写入主存储器单元的数据传送指令,其汇编语言助记符为STORE。2023/7/26第3章处理器(2)数传指令根据传输的功能分:堆栈操作指令压入栈顶PUSH弹出栈顶POPPUSH的源操作数和POP指令的目的操作数,一般是寄存器号,也可能是主存储器单元地址.2023/7/26第3章处理器(2)数传指令

上述两类数据指令的数据流动是单方向的。要实现两个数据的交换,需要编写三条指令并额外占用一个存储单元。因此大多数计算机都提供“数据交换指令”来简化双向数据流动的实现,如Intel80x86中的XCHG指令。这类指令的源操作数和目的操作数一般都是寄存器,至多允许源操作数是主存储器单元。数据交换指令的执行时间一般较长。2023/7/26第3章处理器3.1.4指令的基本功能

(1)算逻指令(2)数传指令(3)控制转移指令跳转指令JUMP分支指令子程序调用CALL/返回指令RET循环控制指令LOOP中断系统指令

将指令操作数的内容写入PC之中,强制改变指令执行的顺序。也称无条件转移指令2023/7/26第3章处理器3.1.4指令的基本功能

(3)控制转移指令跳转指令JUMP分支指令根据特定条件(往往是上一条指令的执行结果),决定程序是顺序执行还是转移到一个新的位置执行,即有条件地改变指令执行的顺序。也称条件转移指令。条件转移指令可能依据的条件有:为0、为正/负数、发生进位/借位、为奇数/偶数、发生溢出或以上条件的组合。

2023/7/26第3章处理器3.1.4指令的基本功能

(3)控制转移指令分支指令条件转移指令又分为“绝对转移”和“相对转移”两种。对于“绝对转移”,当条件满足时,计算机将把该指令中所含操作数的内容直接写入PC中。对于“相对转移”,当条件满足时,计算机将把该指令中所含操作数的内容与PC中的内容相加后,把结果写入PC中。

2023/7/26第3章处理器常见的条件转移指令有:等于零转移BEQ不等于零转移BNEQ小于转移BLS大于转移BGT小于等于转移/不大于转移BLEQ大于等于转移/不小于转移BGEQ不带符号小于转移BLSU不带符号大于转移BGTU不带符号小于等于转移/不带符号不大于转移BLEQU不带符号大于等于转移/不带符号不小于转移BGEQU没有进位转移BCC有进位转移BCS没有溢出转移BVC有溢出转移BVS2023/7/26第3章处理器(3)控制转移指令跳转指令JUMP分支指令子程序调用CALL/返回指令RET

在程序中,有一些具有特定功能的程序段会被反复使用。为了提高程序的可读性、可重用性和可维护性,人们将这样的程序段独立出来,将其定义成一个子程序。这样,在需要执行特定功能时,主程序中不再需要编写一个程序段,而只需要编写一条调用子程序的指令即可。

2023/7/26第3章处理器子程序调用CALL/返回指令RET调用子程序的指令格式:CALLSubprogram_Name功能是,首先把当前程序的断点(也称主调程序的返回地址,即当前程序计数器PC中的值)保存到系统堆栈中,然后由子程序名Subprogram_Name求得子程序的入口地址,最后把子程序的入口地址写入PC,从而将程序控制转移至被调子程序。调用子程序指令CALL一般都与“返回指令RET”一起配合使用。RET指令的功能是把保存在堆栈中的程序断点弹回到PC之中。2023/7/26第3章处理器3.1.4指令的基本功能

(1)算逻指令(2)数传指令(3)控制转移指令(4)输入/输出指令为了完成主机与外设之间信息交换的各种操作而设置,包括:启动输入/输出设备、停止输入/输出设备、测试输入/输出设备及数据的输入或输出等指令。例如,Intel80x86中的输入指令为IN指令,输出指令为OUT指令。

2023/7/26第3章处理器3.1.4指令的基本功能

(1)算逻指令(2)数传指令(3)控制转移指令(4)输入/输出指令(5)处理器控制及调试指令包括各种设置/清除标志位(如陷阱标志、中断允许标志、处理器工作状态标志位)指令、特权指令、进程同步指令、调试指令、停机指令(HALT)等。调试指令用于硬件或软件的调试。硬件调试指令包括钥匙位置、开关状态的读取指令,重要寄存器和主存储器单元内容的显示等。软件调试指令包括断点的设置及跟踪指令,自陷阱指令等。2023/7/26第3章处理器对于面向多用户系统的处理器,为了保证信息安全,处理器的工作状态被分为核心态(Kernelmode/Systemmode)和用户态(Usermode)。仅能在核心态(也叫管理态/管态)下运行的指令称为特权指令(Privilegedinstruction)。用户态(也叫目态)下的程序要想执行管态下的功能(由操作系统实现并提供用户使用)必须通过执行“访管指令”来实现。2023/7/26第3章处理器此外,还有:空操作指令NOP和等待指令WAIT一般通用计算机应具有的指令及其功能参见表4-1访管指令是一条可以在目态下执行的指令,用户程序中凡是要调用操作系统功能的地方就安排一条访管指令。当执行到访管指令时,处理器就自愿地产生一个中断事件(访管中断),暂停用户程序的执行,陷入管态,让操作系统为用户服务。2023/7/26第3章处理器3.1处理器的指令集

3.1.5指令的格式

涉及指令的操作码长度、指令“地址制”及采用的寻址方式、指令长度等三方面的问题。

2023/7/26第3章处理器3.1.5指令的格式

(1)指令操作码的长度有定长和不定长两种选择选择定长的操作码可以简化指令译码器的设计与实现;选择不定长操作码(也称扩展操作码)可使常用指令拥有较短的操作码而不常用指令拥有较长的操作码(即哈夫曼压缩编码),从而压缩程序所占的存储空间。2023/7/26第3章处理器3.1.5指令的格式

(2)在一条指令中出现几个操作数地址,这是指令的“地址制”所要解决的问题。一般情况下,指令中地址的个数,可以取4,3,2,1,0个。在四地址指令中,两个地址分别指示两个源操作数,一个地址指示目的操作数,最后一个地址指示下一条指令的存储单元。2023/7/26第3章处理器三地址指令是在四地址指令的基础上,将指令中下一条指令的地址省略掉,改用PC来指示下一条指令的地址。两地址指令是在三地址指令的基础上,将一个源操作数同时作为目的操作数。一地址指令是在两地址指令的基础上,隐含使用某个寄存器(如ACC)作为一个源操作数或目的操作数。停机指令、清除/设置特定标志位指令无须操作数,即为零地址。2023/7/26第3章处理器“地址制”设计或改进的目的是为了压缩指令长度,缩短指令的执行时间。在相同的指令长度内,减少地址个数可以扩大所能表示指令的条数或操作数的寻址范围。同一条指令中不同操作数可采用不同的寻址方式例如,一条指令中的操作数可以都存放在寄存器里,也可以把一个操作数存放在寄存器里,而另一个操作数存放在主存里。存放在主存里的操作数可以按基址寻址、变址寻址或间接寻址。2023/7/26第3章处理器3.1.5指令的格式

指令长度可以是固定或变化的。固定长度的指令便于指令的存取和译码,但会限制操作数个数的增加和复杂寻址方式的使用;而变化长度的指令的特点正好相反。例如,IBMS/370指令采用定长的8位操作码,有单地址、两地址和三地址三种地址制,不同的操作数可以采用不同的寻址方式,指令字长有16位、32位和48位三种。2023/7/26第3章处理器3.1处理器的指令集

3.1.1概述

3.1.2指令的操作码与操作数3.1.3寻址方式3.1.4指令的基本功能

3.1.5指令的格式3.1.6面向多媒体处理的增强指令

请同学们自行阅读、了解。2023/7/26第3章处理器3.1处理器的指令集

3.2处理器的基本组成与工作过程

3.2.1处理器的基本功能和基本组成1.处理器概述从外观上看,处理器是矩形或正方形的块状物,通过密密麻麻的管脚与主板相连。

实现处理器内部各个单元之间信号传输的线路称为片内总线,它又分为片内控制总线和片内数据总线。用于实现处理器与主存储器和输入/输出设备之间信号传输的线路称为片外总线,简称总线。2023/7/26第3章处理器3.2.1处理器的基本功能和基本组成1.处理器概述除了电源引脚(Vcc)和接地引脚(GND)外,大部分引脚都用于信号传输。按照传输信号类别的不同,这些引脚可以分为数据总线引脚、地址总线引脚和控制总线引脚。若数据总线的宽度是8位,则数据总线引脚将被命名为D0,D1,…,D7;若数据总线的宽度是16位,则数据总线引脚将被命名为D0,D1,…,D15。32位的数据总线可类推。2023/7/26第3章处理器3.2.1处理器的基本功能和基本组成1.处理器概述若处理器的访存地址宽度是10位,则地址总线引脚将被命名为A0,A1,…,A9;若访存地址宽度是20位,则地址总线引脚将被命名为A0,A1,…,A19。32位的地址总线可类推。常见的控制总线引脚有时钟CLK、复位RESET、总线请求HRQ、总线允许HLDA、中断请求INTR、中断响应INTA、读RD、写WR等。

2023/7/26第3章处理器3.2.1处理器的基本功能和基本组成2.处理器的基本功能处理器的工作就是周而复始地执行指令,它的基本功能包括取指令、分析指令、取数据、处理数据、写回结果。(1)取指令。处理器根据PC给出的主存地址访问主存储器,取出一个标准字长的指令,将其送入处理器内部专门存放当前指令的指令寄存器IR,然后PC加1。2023/7/26第3章处理器(2)分析指令。处理器将IR中的操作码部分取出送入指令译码器(Decoder)进行译码。根据译码结果判断出指令的功能(即指令将要执行什么操作)、操作数的寻址方式以及操作数的数据类型,形成源操作数或目的操作数的物理地址。(3)取数据。根据源操作数的物理地址访问主存,取出源操作数。源操作数将被送入处理器内部的数据寄存器,如累加器ACC。2023/7/26第3章处理器(4)处理数据。处理器将源操作数送入运算器,并根据指令译码结果启动运算器的相应操作对数据进行处理。处理结果存回通用数据寄存器。(5)写回结果。如果指令要求将结果写回主存,那么处理器将根据目的操作数的地址,将目的操作数写入主存。

2023/7/263.2.1处理器的基本功能和基本组成2.处理器的基本功能第3章处理器3.2.1处理器的基本功能和基本组成3.处理器的基本组成访问主存是处理器经常执行的一个公共操作。为此,处理器设置了专门存放访存地址的寄存器MAR、专门存放与主存交换数据的寄存器MDR/MBR。在用户看来,只要把主存地址送入MAR,启动读命令,在一个访存周期内,目标数据就会从主存被读入到MDR中;或者只要把主存地址送入MAR并把目标数据送入MDR,启动写命令,在一个访存周期内,目标数据就会从MDR被写回到主存中。2023/7/26第3章处理器3.2.1处理器的基本功能和基本组成3.处理器的基本组成处理数据的功能单元叫算术逻辑单元ALU,它的功能是对数据进行各种算术运算或逻辑运算。2023/7/26第3章处理器3.2.1处理器的基本功能和基本组成2023/7/26第3章处理器3.处理器的基本组成根据冯·诺依曼型计算机的特点,处理器的所有工作都是在控制单元CU的指挥下完成的。CU的功能是,通过对指令的分析(译码),按照一定的时序,发出控制信号,使CPU在控制信号的驱动下,完成相应指令的功能。2023/7/26第3章处理器3.处理器的基本组成处理器内部设置有大量的寄存器。高级语言程序员,无须了解这些寄存器。中级程序(如C语言)程序员,可能需要了解一些寄存器的知识。汇编语言程序员需要对寄存器有深入的了解。但是即使是汇编语言程序员,处理器内部的某些寄存器也是无须关心的,如MAR和MDR。即,MAR和MDR对汇编程序员是“透明的”。2023/7/26第3章处理器寄存器分为“用户可见的寄存器”和“用户透明的寄存器”,这里的“用户”是指汇编语言程序员。“用户可见的寄存器”包括通用数据寄存器、基址寄存器、变址寄存器、FR、PC等“用户透明的寄存器”包括MAR、MDR、ALU的输入寄存器A和B以及输出寄存器SUM

3.处理器的基本组成2023/7/26第3章处理器目前,中断已经成为计算机/处理器不可或缺的功能。没有中断,很多现代计算机系统的功能(比如多用户、多任务)都无法实现。所谓中断,是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机会在适当时机暂停现行程序的运行,转向执行处理这些异常情况或特殊请求的程序(即中断处理程序或中断服务程序),处理结束后再返回到现行程序的间断处继续执行。3.处理器的基本组成2023/7/26第3章处理器能够发出中断请求的部件或事件,称为“中断源”。为了区分不同请求信号,不同的中断源被赋予了一个不同的“中断类型号”。由于中断请求信号到来的时间是随机的,处理器不可能随时对它进行处理。通常约定:中断可以中断程序,但不能中断指令。处理器只会在指令执行的末尾,去检测是否有中断请求。若有,并且处理器处于允许响应的状态,则响应中断请求,否则执行下一条指令。3.处理器的基本组成2023/7/26第3章处理器为此,控制总线要增加接收中断请求(InterruptRequest)信号的引脚INTR和发出中断响应(InterruptAcknowledge)信号的引脚INTA。处理器内部要设置一个“中断允许(EnableInterrupt,EINT)”标志和一个中断状态触发器“INT”。EINT=1,表示允许响应中断请求,否则不允许。响应中断请求后,处理器将进入中断状态——INT被置成1。可以通过“开中断(SetInterrupt,STI)”指令将EINT置为1,也可以通过“关中断(ClearInterrupt,CLI)”指令将EINT清成0。2023/7/26第3章处理器处理器内部与中断有关的逻辑电路称为中断单元,实现中断的所有硬件和软件称为中断系统。中断技术的详细内容将在第8章中介绍.2023/7/2609年计算机专业研究生入学统一考试试题下列选项中,能引起外部中断的事件是

。A.键盘输入B.除数为0C.浮点运算下溢D.访存缺页答:根据中断源位于处理器的内部还是外部,中断分为内部中断和外部中断。内部中断的例子有:除数为0,溢出,非法访问(如越界访问等。外部中断的例子有:来至外设的中断(如键盘输入),来至定时器的时钟中断等。“访存缺页”属于故障,不是中断。故选A。第3章处理器3.2.1处理器的基本功能和基本组成2023/7/26第3章处理器3.2处理器的组成与工作过程

3.2.2计算机的工作过程计算机的工作是由处理器的工作来驱动的,所以这里讨论计算机的工作过程主要关注处理器的工作,而处理器的工作就是执行指令。通常,把处理器取出并执行一条指令称为对指令的解释(Interpret)。处理器每取出并执行一条指令所需的全部时间叫指令周期。2023/7/26第3章处理器3.2.2计算机的工作过程在一个指令周期内,处理器所要完成的操作有“取指”和“执行”,“取指”就是将一条指令从主存取入到处理器中,“执行”就是对指令进行译码并完成其指定的操作2023/7/26第3章处理器3.2.2计算机的工作过程有的指令采用间接寻址。为了取到操作数,在取指周期之后还有一个访问主存,读取操作数地址的周期,这个周期就是间址周期。2023/7/26第3章处理器3.2.2计算机的工作过程不同指令所完成的功能不同,所以它们的指令周期也不尽相同。例如,无条件转移指令“JUMPTARGET”在取指周期中就可以把转移目标地址“TARGET”写入PC,不再需要执行其他操作,所以无条件转移指令的执行周期就可以省略。类似的还有空操作指令NOP。2023/7/26第3章处理器加法指令“ADDX”在执行周期中需要访问地址为X的主存单元取出操作数,将其与ACC中的数据相加,结果存回ACC。该指令取指周期和执行周期中的主要操作都是访问一次主存,其取指周期和执行周期可以设计成等长。有的指令在执行周期中需要完成较多的操作,那么它的执行周期就要长于取指周期,乘/除法指令就是这样的指令。2023/7/26第3章处理器由于不同指令的指令周期不尽相同,为了简化控制,一般将其设计成某个基准周期的整数倍,这个基准周期称为机器周期。机器周期是所有指令执行过程中的一个基准时间。指令操作分为处理器内部操作和对主存的访问两类。前者完成时间较短,而后者完成时间较长。为了保证在一个机器周期至少能够完成一个指令的基本操作,选取处理器访问一次主存的时间(也称主存周期)作为机器周期。

2023/7/26第3章处理器在一个机器周期内,处理器需要完成若干带有时序限制的微操作,每个微操作的完成也需要一定的时间。为了实现对微操作的控制,处理器用时钟信号CLK来控制每一个微操作命令的产生。这样,在一个机器周期内又包含了若干时钟周期(也称节拍)。一个节拍的宽度正好等于一个时钟周期。在一个节拍内,处理器完成一个或几个可以同时执行的微操作。2023/7/26第3章处理器为了实现各种操作的时序控制,在处理器内部专门设置有时钟部件。指令周期、机器周期和节拍的关系如下图所示。2023/7/26第3章处理器3.2.2计算机的工作过程

下面以计算X

+

Y为例来编制控制计算机/处理器工作的程序。(1)从内存单元X中取数据送入累加器ACC;(2)ACC加上内存单元Y中的数据,结果存回ACC中;(3)ACC的值存入内存单元Z中;(4)停机。2023/7/26第3章处理器3.2.2计算机的工作过程此程序在某模型机上运行,用到的指令如下:指令名称助记符指令功能操作码指令操作数数据读入LOAD将某个内存单元X中的数据取出并送入ACC0001B内存单元X的地址加法ADDACC加上内存单元Y中的数据,结果存回ACC中0010B内存单元Y的地址数据存回STORE将ACC的值存入内存单元Z中0011B内存单元Z的地址停机HALT停止处理器工作1000B无操作数2023/7/26第3章处理器程序存入主存的结果如下,其中分配给变量X,Y和Z的内存单元地址是1100B、1101B和1110B。

主存单元地址汇编程序指令操作码指令操作数1000BLOADX0001B1100B1001BADDY0010B1101B1010BSTOREZ0011B1110B1011BHALT1000B1100BX0000B0001B1101BY0000B0010B1110BZ2023/7/26第3章处理器执行程序时,管理程序先将程序第一条指令的地址(1000B)送入PC,然后启动执行。

LOADX取指周期T1将PC中内容送MAR,MAR把它的内容送到地址总线上T2处理器发出“读”命令信号T3数据总线上的内容送入MDRT4MDR的内容送到IR,进行译码执行周期T1IR中的操作数部分送入MAR,MAR的内容送到地址总线上T2处理器发出“读”命令信号T3数据总线上的内容送入MDRT4MDR的内容送到ACC2023/7/26第3章处理器3.2.2计算机的工作过程ADDY取指周期T1PC内容送MAR,MAR的内容送到地址总线上T2处理器发出“读”命令信号T3数据总线上的内容送入MDRT4MDR的内容送到IR,进行译码执行周期T1IR中的操作数部分送入MAR,MAR的内容送到地址总线上T2处理器发出“读”命令信号T3数据总线上的内容送入MDRT4ACC和MDR的内容送ALU相加,结果存回ACC2023/7/26第3章处理器STOREZ取指周期T1PC内容送MAR,MAR的内容送到地址总线上T2处理器发出“读”命令信号T3数据总线上的内容送入MDRT4MDR的内容送到IR,进行译码执行周期T1IR中的操作数部分送入MAR,MAR的内容送到地址总线上T2ACC的内容送MDR,处理器向控制总线上发出“写”命令信号T3MDR的内容送数据总线T4数据总线上的内容写入主存相应单元2023/7/26第3章处理器3.2.2计算机的工作过程HALT取指周期T1PC内容送MAR,MAR的内容送到地址总线上T2处理器向控制总线上发出“读”命令信号T3数据总线上的内容送入MDRT4MDR的内容送到IR,进行译码。发出让处理器停止工作的信号2023/7/26第3章处理器3.2处理器的组成与工作过程

3.2.1处理器的基本功能和基本组成3.2.2计算机的工作过程3.2.3采用流水线技术的处理器请同学们自行阅读、了解。2023/7/26第3章处理器3.1处理器的指令集

3.2处理器的基本组成与工作过程

3.3从CISC到RISC上世纪七十年代,系列机的发展,使得计算机的指令系统变得越来越复杂。例如,VAX-11拥有330条指令,指令长度从16位到456位长不等,寻址方式有16种。这使得CPU的设计变得十分复杂,设计周期延长,设计成本倍增。3.3.1

RISC产生的背景

2023/7/26序号指令名称使用频率累积百分比1MOV24.8524.852PUSH10.3635.213CMP10.2845.494JMP9.0354.525ADD6.0861.326POP4.1465.467RET3.9269.388CALL3.8973.279JUMP2.7075.9710SUB2.4378.4011INC2.3780.7712LES1.9882.7513REPN1.9284.6714IMUL1.6986.3615DEC1.3787.7316XOR1.1388.8617REPNZ0.7889.6418CLD0.5490.10某计算机的指令使用频率2023/7/26

20—80规律

在典型程序的运行中,80%的时间执行的只是占指令系统20%的少数常用指令。在CPU控制存储器中,80%的空间被只占运行时间20%的多数复杂指令占用。3.3.1

RISC产生的背景

由于存在着“软硬件等价性原理”,复杂指令的功能可以由基于简单指令的子程序来完成。所以人们就产生了一种想法:设计一个只具有简单指令的简单的CPU2023/7/26

1975年,IBM的JohnCocke领导的一个研究小组率先设计了一个只有120条简单指令的计算机IBM8011981年,美国加州大学伯克利分校的David

Patterson设计了一个只有31条指令的简单的微处理器,并将其命名为RISCIRISC是ReducedInstructionSetComputer的缩写3.3.1

RISC产生的背景

2023/7/26IBM的JohnCocke也因此获得了国际计算机界的最高奖——图灵奖。此后,RISC技术得到了广泛地接受,几乎所有的微处理器都宣称采用RISC技术。2023/7/26采用简单的指令格式、寻址方式的计算机就称为精简指令集计算机RISC(ReducedInstructionSetComputer)相对而言,具有复杂的指令格式、寻址方式的计算机就称为复杂指令集计算机CISC(ComplexInstructionSetComputer)3.3.1

RISC产生的背景

2023/7/26第3章处理器3.3从CISC到RISC3.3.1

RISC产生的背景3.3.2

RISC的定义

目前,指令条数的多少已不再是区分CISC和RISC的标志,CISC和RISC正在走向融合。绝大多数现代微处理器都宣称采用RISC技术。对于RISC,目前尚未出现一个能为众人所接受的定义。但是人们更多关注的是RISC的特征

2023/7/26RISC的主要特征

选用使用频率较高的一些简单指令复杂指令的功能由简单指令来组合

指令长度固定

只有LOAD/STORE

指令访存

引入流水技术,一个时钟周期

完成一条指令

组合逻辑

实现控制器

多个

通用寄存器

采用优化

的编译

程序2023/7/26RISC的新发展控制系统部分采用微程序技术;指令的种类有所增加;现代RISC具有如下特点1.面向寄存器结构;2.重视流水线的执行效率;3.LOAD/STORE风格4.重视优化编译技术2023/7/26第3章处理器3.3从CISC到RISC3.3.1

RISC产生的背景3.3.2

RISC的定义3.3.3指令级并行技术2023/7/26请同学们自行阅读、了解。第3章处理器3.1处理器的指令集

3.2处理器的基本组成与工作过程3.3从CISC到RISC3.4Intel80x86系列微处理器

3.4.1

Intel8086/8088微处理器

8086是第一款16位微处理器,问世之初,市场上缺乏与之配套的外围芯片,用8086来构建微型计算机成本很高。为此,Intel公司推出与8086兼容的准16位微处理器8088。8088的通用寄存器组、ALU、指令系统都是按照16位设计的,与8086完全相同,只不过8088的数据引脚是8位的。这样就可以兼容当时已有的一整套的外围芯片。2023/7/263.4Intel80x86系列微处理器3.4.1

Intel8086/8088微处理器

8086/8088微处理器的浮点运算能力和I/O能力相对较弱,为了满足用户对高性能计算的要求,Intel公司还推出了两款协处理器——数值运算协处理器8087和I/O协处理器8089。为此,只配置一个8086/8088微处理器的工作模式被定义为最小模式。在这种模式中,所有的总线控制信号都直接由8086或8088发出。相对而言,包含协处理器的微处理器工作模式被定义为最大模式。

2023/7/268086/8088在组成结构上分为:总线接口部件(BusInterfaceUnit,BIU)执行部件(ExecutingUnit,EU)总线接口部件负责取指令,执行部件负责执行指令,从而构成了一个“两段的流水线”。取指令1执行指令1时间TEUBIU取指令2执行指令2取指令3执行指令32023/7/26SIDIBPSPDLDHCLCHBLBHALAH654321通用寄存器组AXBXCXDX外部总线内部暂存器IPESSSDSCS运算寄存器ALU标志输入输出控制电路∑执行部分控制电路执行部件(EU)总线接口部件(BIU)内部总线地址加法器16位16位20位16位2023/7/268086/8088的分段存储结构存储器为什么要分段呢?16位微处理器,常规上管理216=64KB的存储空间这样的存储空间满足不了应用的要求。用什么方法来扩大呢?将正常管理的64KB存储空间定义为一个段让微处理器能够管理多个这样的段通过分段存储结构,8086/8088能够管理1MB的存储空间。2023/7/268086/8088的分段存储结构存储器分段后如何来管理呢?每个段的起始地址称为:段基址或段地址每个段内的地址称为:段内偏移地址一个物理存储单元就可以通过“段地址:偏移地址”来唯一确定了如何管理“段地址”和“偏移地址”呢?设置多个段基址寄存器设置多个偏移地址寄存器都有哪些“段基址寄存器”和“偏移地址寄存器”呢?2023/7/26依照用途的不同,可分为如下段8086/8088的分段存储结构代码段(CodeSegment,CS)数据段(Data

Segment,DS)堆栈段(StackSegment,SS)附加数据段(ExtendedData

Segment,ES)存储程序(指令)代码。其段基址存放于CS寄存器,段内偏移地址存放于IP寄存器存储程序定义的变量。段基址存放于DS寄存器,段内偏移地址存放于SI、DI或BX寄存器管理系统堆栈。段基址存放于SS寄存器,段内偏移地址存放于SP或BP寄存器存储经过处理的中间变量。段基址存放于ES寄存器,段内偏移地址存放于SI、DI或BX寄存器2023/7/268086/8088的分段存储结构由段基址和相对于该段的偏移地址共同描述的地址——逻辑地址00000H----FFFFFH例如:52000H例如:5000H:2000H段基址偏移地址段基址寄存器管理程序设计中使用的,方便程序设计20根地址线所表示的地址——物理地址2023/7/260000段地址如何根据16位的段地址和16位的段内偏移地址来计算20位的物理地址呢?

19…43…0段地址左移四位偏移地址151413……210∑20位的物理地址8086/8088的分段存储结构2023/7/26物理地址的计算方法段地址左移四位,再加上偏移地址,就得到20位的物理地址。5000H:2000H逻辑地址52000H物理地址计算寻址内存…………..00000HFFFFFH2023/7/263.4Intel80x86系列微处理器3.4.1

Intel8086/8088微处理器

8086/8088的标志分为两类:状态标志和控制标志。状态标志表示前面操作执行后,算术逻辑单元所处的状态,这些状态常作为后继指令执行的条件。状态标志有6个,分别是符号标志SF、零标志ZF、奇偶标志PF、进位标志CF、辅助进位标志AF和溢出标志OF。控制标志是人为设置的,每一个控制标志负责控制某一种特殊的功能。控制标志有三个,分别是方向标志DF、中断标志IF和陷阱标志TF。2023/7/263.4Intel80x86系列微处理器状态标志(1)符号标志SF。与计算结果的最高位相同,表示计算结果的正/负。0表示正,1表示负。(2)零标志ZF。若计算结果为零,则ZF=1,否则=0。(3)奇偶标志PF。若计算结果的低8位中1的个数为偶数,则PF=1,否则=0。(4)进位标志CF。若执行的加法运算在最高位产生进位,或者执行的减法运算引起最高位产生借位,则CF=1,否则=0。此外,带进位的循环移位也可能会改变CF。可以用指令STC将CF置1,用指令CLC将CF清0,用指令CMC将CF取反。2023/7/263.4Intel80x86系列微处理器状态标志(5)辅助进位标志AF。若执行加法运算时第3位向第4位进位(即低半字节向高半字节),或者执行减法运算时第3位从第4位借位,则AF=1,否则=0。(6)溢出标志OF。若计算过程产生溢出,则OF=1,否则=0。溢出是指字节运算的结果超出了–128~+127的范围,或者字运算的结果超出了–32768~+32767的范围。在进行加法运算时,每当次高位向最高位有进位而最高位没有向前进位,或者最高位向前进位而次高位没有向最高位进位,则ALU置OF为1。2023/7/263.4Intel80x86系列微处理器控制标志(1)方向标志DF。这是控制串操作指令的标志。若DF=0,则串操作过程中地址将不断增值,否则不断减值。可用指令STD将DF置1,用指令CLD将DF清0。(2)中断标志IF。这是控制可屏蔽中断的标志。如果IF=0,则8086/8088对可屏蔽中断请求不能做出响应,否则可以响应可屏蔽中断请求。可用指令STI将IF置1,用指令CLI将IF清0。“将IF置1”称为“开中断”,“将IF清0”称为“关中断”2023/7/263.4Intel80x86系列微处理器控制标志(3)陷阱标志TF。这是控制8086/8088是否进入单步执行状态的标志。若TF=1,则8086/8088进入单步执行状态或跟踪方式执行指令状态,即每条指令执行完后,微处理器暂停(进入陷阱),显示处理器内部各寄存器的值。进入单步执行状态便于程序的调试。如果TF=0,则连续执行指令。

标志寄存器FR有16位,9个标志位的定义如下,未定义的7位保留

2023/7/26DISIBPSPDLDHCLCHBLBHALAHFRIPESSSDSCS数据寄存器指针寄存器和变址寄存器段寄存器指令指针标志寄存器AXBXCXDX8086/8088的寄存器组作为累加器用,在加法运算中参与运算,结果存于累加器中;所有的I/O指令都隐含地使用AX与外部设备传送信息。作为通用寄存器使用在采用基址寻址方式时,用作基址寄存器作为通用寄存器使用;常用来保存计数值,如在移位指令、循环指令和串处理指令中用作隐含的计数器。作为通用寄存器使用;在一些指令中,通常用它来存放数据,所以又称为数据寄存器;在做双字长运算时,将DX和AX组合在一起存放双字长数,用DX存放高位字。当前代码段的段地址,指令就是从这段取出当前代码段的偏移地址。又称为程序计数器,控制程序中指令执行的顺序基址指针寄存器,指示一组数据的起始地址源变址寄存器目的变址寄存器用于确定数据段中某一存储单元的地址指向数据段,程序变量存于此段指向附加段,这个段用来存放经过处理的中间数据堆栈指针寄存器,指示堆栈栈顶的偏移地址指向堆栈段,堆栈操作使用这段存储空间2023/7/26

SP是一个专门为堆栈设置的寄存器。

堆栈(Stack)后进先出(LastInFirstOut,LIFO)例如:子弹匣注意与队列(Queue)的区别先进先出(FirstInFirstOut,FIFO)例如:排队乘车

2023/7/26对堆栈的操作只有两种:压入PUSH弹出POPSP90FFCH90FFDH90FFEH90FFFH91000HSP对堆栈的操作总是针对栈顶单元进行的栈顶单元的偏移地址总是由堆栈指示器

(StackPointer,SP)给出,堆栈段的段地址由SS指示。2023/7/2655AA

AHAL1000HSP9000HSSSP55AA90FFCH90FFDH90FFEH90FFFH91000H55AA

AHALSP9000HSS

************SP90FFCH90FFDH90FFEH

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论