计算机组成与系统结构复习点概述.pptx_第1页
计算机组成与系统结构复习点概述.pptx_第2页
计算机组成与系统结构复习点概述.pptx_第3页
计算机组成与系统结构复习点概述.pptx_第4页
计算机组成与系统结构复习点概述.pptx_第5页
已阅读5页,还剩224页未读 继续免费阅读

下载本文档

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

文档简介

目录,第一章第二章第三章第四章第五章第六章第七章第八章,第一章小内容,以运算器为中心的冯诺依曼机,冯诺依曼计算机硬件框图,4,数据线,控制线与反馈线,冯诺依曼计算机的特点,1.计算机由运算器、存储器、控制器和输入设备、输出设备五大部件组成;2.程序以二进制代码的形式表示;3.程序存放于存储器中,按地址访存;4.所有的指令都由操作码和地址码组成;5.指令在存储器内按顺序存放;6.以运算器为计算机结构的中心。,5,以存储器为中心的现代计算机,以存储器为中心的计算机硬件框图,6,数据线,控制线,反馈线,计算机硬件组成,7,运算器,8,运算器由算术逻辑单元(ALU)、累加器、状态寄存器、通用寄存器组等组成。算术逻辑运算单元(ALU)的基本功能为加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、求补等操作。计算机运行时,运算器的操作和操作种类由控制器决定。运算器处理的数据来自存储器;处理后的结果数据通常送回存储器,或暂时寄存在运算器中。与ControlUnit共同组成了CPU的核心部分。,控制器,9,控制器(ControlUnit),是整个计算机系统的控制中心,它指挥计算机各部分协调地工作,保证计算机按照预先规定的目标和步骤有条不紊地进行操作及处理。控制器从存储器中逐条取出指令,分析每条指令规定的是什么操作以及所需数据的存放位置等,然后根据分析的结果向计算机其它部件发出控制信号,统一指挥整个计算机完成指令所规定的操作。计算机自动工作的过程,实际上是自动执行程序的过程,而程序中的每条指令都是由控制器来分析执行的,它是计算机实现“程序控制”的主要设备。,存储器,10,存储器(Memory)是计算机系统中的记忆设备,用来存放程序和数据。计算机中全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。它根据控制器指定的位置存入和取出信息。有了存储器,计算机才有记忆功能,才能保证正常工作。按用途存储器可分为主存储器(内存)和辅助存储器(外存),也有分为外部存储器和内部存储器的分类方法。外存通常是磁性介质或光盘等,能长期保存信息。内存指主板上的存储部件,用来存放当前正在执行的数据和程序,但仅用于暂时存放程序和数据,关闭电源或断电,数据会丢失。,输入设备,11,向计算机输入数据和信息的设备。是计算机与用户或其他设备通信的桥梁。输入设备是用户和计算机系统之间进行信息交换的主要装置之一。键盘,鼠标,摄像头,扫描仪,光笔,手写输入板,游戏杆,语音输入装置等都属于输入设备。输入设备(InputDevice)是人或外部与计算机进行交互的一种装置,用于把原始数据和处理这些数的程序输入到计算机中。计算机能够接收各种各样的数据,既可以是数值型的数据,也可以是各种非数值型的数据,如图形、图像、声音等都可以通过不同类型的输入设备输入到计算机中,进行存储、处理和输出。,输出设备,12,输出设备(OutputDevice)是计算机的终端设备,用于接收计算机数据的输出显示、打印、声音、控制外围设备操作等。也是把各种计算结果数据或信息以数字、字符、图像、声音等形式表示出来。,计算机硬件与软件关系,13,例如,乘法运算可以由硬件乘法器实现,也可以在加法器和移位器的支持下,通过执行乘法子程序实现。在用户看来,乘法器和乘法子程序在实现乘法运算的功能上是没有区别的。,实际上,在计算机中,有许多功能既可以由硬件实现,也可以在硬件支持下依靠软件实现,对用户而言在功能上是等价的,这种情况称为硬件、软件在功能上的逻辑等价。,计算机系统抽象层的转换,程序执行结果不仅取决于算法、程序编写而且取决于语言处理系统操作系统ISA微体系结构,不同计算机课程处于不同层次必须将各层次关联起来解决问题,功能转换:上层是下层的抽象,下层是上层的实现底层为上层提供支撑环境!,最高层抽象就是点点鼠标、拖拖图标、敲敲键盘,但这背后有多少层转化啊!,计算机系统的不同用户,最终用户工作在由应用程序提供的最上面的抽象层系统管理员工作在由操作系统提供的抽象层应用程序员工作在由语言处理系统(主要有编译器和汇编器)的抽象层语言处理系统建立在操作系统之上系统程序员(实现系统软件)工作在ISA层次,必须对ISA非常了解编译器和汇编器的目标程序由机器级代码组成操作系统通过指令直接对硬件进行编程控制ISA处于软件和硬件的交界面(接口),ISA是对硬件的抽象所有软件功能都建立在ISA之上,ISA是最重要的层次!那么,什么是ISA呢?,指令集体系结构(ISA),ISA指InstructionSetArchitecture,即指令集体系结构ISA是一种规约(Specification),它规定了如何使用硬件可执行的指令的集合,包括指令格式、操作种类以及每种操作对应的操作数的相应规定;指令可以接受的操作数的类型;操作数所能存放的寄存器组的结构,包括每个寄存器的名称、编号、长度和用途;操作数所能存放的存储空间的大小和编址方式;操作数在存储空间存放时按照大端还是小端方式存放;指令获取操作数的方式,即寻址方式;指令执行过程的控制方式,包括程序计数器、条件码定义等。ISA在计算机系统中是必不可少的一个抽象层,Why?没有它,软件无法使用计算机硬件!没有它,一台计算机不能称为“通用计算机”,ISA和计算机组成(微结构)之间的关系,不同ISA规定的指令集不同,如,IA-32、MIPS、ARM等计算机组成必须能够实现ISA规定的功能,如提供GPR、标志、运算电路等同一种ISA可以有不同的计算机组成,如乘法指令可用ALU或乘法器实现,ISA是计算机组成的抽象,计算机系统一般分为7个层次,18,计算机是如何工作的?,程序在执行前数据和指令事先存放在存储器中,每条指令和每个数据都有地址,指令按序存放,指令由OP、ADDR字段组成,程序起始地址置PC(原材料和菜谱都放在厨房外的架子上,每个架子有编号。妈妈从第5个架上指定菜谱开始做)开始执行程序第一步:根据PC取指令(从5号架上取菜谱)第二步:指令译码(看菜谱)第三步:取操作数(从架上或盘中取原材料)第四步:指令执行(洗、切、炒等具体操作)第五步:回写结果(装盘或直接送桌)第六步:修改PC的值(算出下一菜谱所在架子号6=5+1)继续执行下一条指令(继续做下一道菜),程序由指令组成(菜单由菜谱组成),指令和数据,程序启动前,指令和数据都存放在存储器中,形式上没有差别,都是0/1序列采用”存储程序“工作方式:程序由指令组成,程序被启动后,计算机能自动取出一条一条指令执行,在执行过程中无需人的干预。指令执行过程中,指令和数据被从存储器取到CPU,存放在CPU内的寄存器中:指令在IR中,数据在GPR中。,指令中需给出的信息:操作性质(操作码)源操作数1或/和源操作数2(立即数、寄存器编号、存储地址)目的操作数地址(寄存器编号、存储地址)存储地址的描述与操作数的数据结构有关!,IR?GPR?,运算速度:CPU执行时间,21,运算速度:CPI,22,23,反映了与CPU性能相关的3个参数,CPU时钟周期数=CPIIC,运算速度,24,改进性能的方法,减少时钟周期数;,增加时钟频率;,25,CPU执行时间,26,27,解:程序的总指令条数为:IC=40000+30000+20000+10000=105指令的平均时钟周期数为:CPI=(140000+230000+220000+210000)/105=1.6测试程序的执行时间为:CPU执行时间=时钟周期长度=时钟频率=(140000+230000+220000+210000)/4108=410-4s,28,29,解:程序的总指令条数为:IC=40000+30000+20000+10000=105指令的平均时钟周期数为:CPI=(140000+230000+220000+210000)/105=1.6测试程序的执行时间为:CPU执行时间=时钟周期长度=时钟频率=(140000+230000+220000+210000)/4108=410-4s,综合性能评价的方法,可用以下两种平均值来评价:Arithmeticmean(算术平均):求和后除nGeometricmean(几何平均):求积后开根号n根据算术平均执行时间能得到总平均执行时间根据几何平均执行时间不能得到程序总的执行时间执行时间的规一化(测试机器相对于参考机器的性能):参考机上执行时间测试机上执行时间,综上所述,算术平均和几何平均各有长处,可灵活使用!,谬误与陷阱,陷阱,在改进计算机的某个方面时期望总性能的提高与改进大小成正比。,Amdahl定律:系统中对某一部件采用更快执行方式所能获得的系统性能改进程度,取决于这种执行方式被使用的频率,或所占总执行时间的比例。推论:加速最常见的事件。,谬误与陷阱,谬误,利用率低的计算机功耗低,10%的利用率会消耗约2/3的峰值功率,陷阱:用性能公式的一个子集去度量性能。简单地只使用时钟频率、每秒钟执行的指令数或CPI之一去评价性能。,No.1end,第二章小内容,机器数是指数在计算机中的表示形式,一般是采用某种编码形式表示带符号的二进制数。真值是指机器数所对应的实际数值。一般机器数有如下特点:(1)数的符号采用二进制代码化,0代表“+”,1代表“-”。通常将符号的代码放在数据的最高位(2)小数点本身是隐含的,不占用存储空间(3)每个机器数据所占的二进制位受机器硬件规模的限制,与机器字长有关,超过机器字长的数值要舍去,6.机器数和真值,定义:整数X移=2n+X2nX-2n小数X移=1+X1X-1即无论X是正还是负,一律加上2n,称2n为基数。移码与补码的关系是:真值是正数时,移码是补码的最高位加1;真值是负数时,移码是补码的最高位减1。也就是把补码的符号位变为其反码即可。即若X补=XSXn-1Xn-2X1X0,则X移=XSXn-1Xn-2X1X0【例】X=1001X补=01001可求得X移=11001X=-1001X补=10111可求得X移=00111,10.机器数的移(增)码表示法,定义:整数X移=2n+X2nX-2n小数X移=1+X1X-1即无论X是正还是负,一律加上2n,称2n为基数。移码与补码的关系是:真值是正数时,移码是补码的最高位加1;真值是负数时,移码是补码的最高位减1。也就是把补码的符号位变为其反码即可。即若X补=XSXn-1Xn-2X1X0,则X移=XSXn-1Xn-2X1X0【例】X=1001X补=01001可求得X移=11001X=-1001X补=10111可求得X移=00111,10.机器数的移(增)码表示法,定义:整数X移=2n+X2nX-2n小数X移=1+X1X-1即无论X是正还是负,一律加上2n,称2n为基数。移码与补码的关系是:真值是正数时,移码是补码的最高位加1;真值是负数时,移码是补码的最高位减1。也就是把补码的符号位变为其反码即可。即若X补=XSXn-1Xn-2X1X0,则X移=XSXn-1Xn-2X1X0【例】X=1001X补=01001可求得X移=11001X=-1001X补=10111可求得X移=00111,10.机器数的移(增)码表示法,数据的存储和排列顺序,大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。,大端模式(Big-endian),指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放,例子:0000430:e6846c4e0100180053ef0100010000000000440:b4846c4e004eed000000000001000000在大端模式下,前32位应该这样读:e6846c4e(假设int占4个字节),小端模式(Little-endian),指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致,例子:0000430:e6846c4e0100180053ef0100010000000000440:b4846c4e004eed000000000001000000在小端模式下,前32位应该这样读:4e6c84e6(假设int占4个字节),对于0 x11223344储存如下,1原理海明校验码的实现原理是:在数据位中加入几个校验位,将数据代码的码距均匀地拉大,并把数据的每个二进制位分配在几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不但可以发现错误,还能指出是哪一位出错,为进一步自动纠错提供了依据。2编码规则若海明码的最高位号为m,最低位号为1,即mm-121,则海明码的编码规则是:(1)校验位与数据位之和为m,每个校验位Pi在海明码中被分在位号2i-1的位置上,其余各位为数据位,并按从低向高逐位依次排列的关系分配各数据位。(2)海明码的每一位位码Hi(包括数据位和校验位)由多个校验位校验,其关系是被校验的每一位位号要等于校验它的各校验位的位号之和。,2.7.3海明校验码,3增添校验位假设欲检测的有效信息为n位,需增加的校验位为k位,则校验码的长度为n+k位。校验位的状态组合,应当具有指出n+k位中任一位有错或无错的能力,即需要区别出n+k+1种状态。应满足以下关系式:2kn+k+1这个关系式称为海明不等式,若信息位长度n确定后,由此可得到校验位k的最短长度。确定校验位后,就可以与信息位组成海明校验位。假设数据位是7位二进制编码,据上所述,校验位的位数k为4,故海明码的总位数为11。它们的排列关系可表示为:海明码位号:H11H10H9H8H7H6H5H4H3H2H1海明码:D7D6D5P4D4D3D2P3D1P2P1可知:每个校验位由其本身校验;每个数据位由若干校验位校验。,4校验位校验任务的分配根据海明码的编码规则,每一位海明码都有多个校验位校验,且被校验的每位的位号等于参与校验它的几个校验位的位号之和。占据各权位上的校验位按权组成的8421码,正好等于海明码的位号,即海明码的位号Hi正好等于要校验它的校验位所占权位权值之和。例如:H11P423P221P120这说明了H11位将由P4、P2、P1进行校验。校验位P1可以校验:H1、H3、H5、H7、H9、H11、H13、H15校验位P2可以校验:H2、H3、H6、H7、H10、H11、H14、H15校验位P3可以校验:H4、H5、H6、H7、H12、H13、H14、H15校验位P4可以校验:H8、H9、H10、H11、H12、H13、H14、H15根据校验时采用奇校验或是偶校验,可以写出相应的校验方程。,偶校验方程,Secondend,第三章小内容,MIPS指令考察的结果,涉及到的操作数:无符号整数、带符号整数逻辑数浮点数涉及到的运算定点数运算带符号整数运算:取负/符号扩展/加/减/乘/除/算术移位无符号整数运算:0扩展/加/减/乘/除逻辑运算逻辑操作:与/或/非/移位操作:逻辑左移/逻辑右移浮点数运算:加、减、乘、除,串行进位加法器,Sum延迟为6ty;进位Carryout延迟为ty(假定一个与门/或门延迟为1ty,异或门的延迟则为ty),串行进位加法器,串行加法器的缺点:进位按串行方式传递,速度慢!,问题:n位串行加法器从C0到Cn的延迟时间为多少?最后一位和数的延迟时间为多少?,2n+1级门延迟!,2n级门延迟!,并行进位加法器,为什么用先行进位方式?串行(行波)进位加法器采用串行逐级传递进位,电路的延迟与位数成正比关系。因此,现代计算机采用一种先行进位(Carrylookahead)方式。如何产生先行进位?定义两个辅助函数:Gi=XiYi进位生成Pi=Xi+Yi进位传递(或Pi=XiYi)通常把实现上述逻辑的电路称为进位生成/传递部件全加逻辑方程:Si=PiCiCi+1=Gi+PiCi(i=0,1,n)设n=4,则:C1=G0+P0C0C2=G1+P1C1=G1+P1G0+P1P0C0C3=G2+P2C2=G2+P2G1+P2P1G0+P2P1P0C0C4=G3+P3C3=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0C0由上式可知:各进位之间无等待,相互独立并同时产生。通常把实现上述逻辑的电路称为4位CLA部件由此,根据Si=PiCi,可并行求出各位和。通常把实现Si=PiCi的电路称为求和部件CLA加法器由“进位生成/传递部件”、“CLA部件”和“求和部件”构成。,多级先行进位加法器,关键路径长度为多少?最终进位的延迟为多少?,3+2+3=8ty,3+2=5ty,补码加/减运算及其部件,补码加减运算公式X+Y补=X补+Y补(MOD2n)XY补=X补+Y补(MOD2n)补码加减运算要点和运算部件加、减法运算统一采用加法来处理符号位(最高有效位MSB)和数值位一起参与运算直接用ALU实现两个数的加运算(模运算系统)问题:模是多少?运算结果的高位丢弃,保留低n位,相当于对和数取模2n实现减法的主要工作在于:求Y补,问题:补码加减运算的用途是什么?,用于实现带符号整数的加减运算!,补码加/减运算及其部件,问题:如何求Y补?,当控制端Sub为1时,做减法,实现AB当控制端Sub为0时,做加法,实现A+B,补码加/减运算与“溢出”判断,溢出现象:(1)最高位和次高位的进位不同;(2)和的符号位和加数的符号位不同,设数值位为4位(1)X=+13,Y=+4,则X补=01101,Y补=00100X+Y补=01101+00100=10001,从符号位来看是一个负数,显然错误。(2)X=+0.1001,Y=+0.1001,则X补=0.1001,Y补=0.1001,X+Y补=0.1001+0.1001=1.0010,从符号位来看是一个负数,显然错误。上述现象称为溢出,即两个定点数经过加减法运算后,结果超出了机器所能表示的范围,此时的结果无效。因此,在定点加减运算过程中,必须对结果是否溢出进行判断。,补码加/减运算与“溢出”判断,两正数相加,结果为负,称为正溢;两负数相加,结果为正,称为负溢。常用的判别溢出方法有以下3种。1)符号比较法2)双进位法3)双符号位法,原码加/减运算,用于浮点数尾数运算符号位和数值部分分开处理仅对数值部分进行加减运算,符号位起判断和控制作用规则如下:比较两数符号,对加法实行“同号求和,异号求差”,对减法实行“异号求和,同号求差”。求和:数值位相加,若最高位产生进位,则结果溢出。和的符号取被加数(被减数)的符号。求差:被加数(被减数)加上加数(减数)的补码。分二种情况讨论:最高数值位产生进位,表明加法结果为正,所得数值位正确。最高数值位没有产生进位,表明加法结果为负,得到的是数值位的补码形式,需对结果求补,还原为绝对值形式的数值位。差的符号位:a)情况下,符号位取被加数(被减数)的符号b)情况下,符号位为被加数(被减数)的符号取反,移码加/减运算,用于浮点数阶码运算符号位和数值部分可以一起处理运算公式(假定在一个n位ALU中进行加法运算)E1移+E2移=2n-1+E1+2n-1+E2=2n+E1+E2=E1+E2补(mod2n)E1移E2移=E1移+E2移补=2n-1+E1+2nE2移=2n-1+E1+2n2n-1E2=2n+E1E2=E1E2补(mod2n)结论:移码的和、差等于和、差的补码!运算规则加法:直接将E1移和E2移进行模2n相加,然后对结果的符号取反。减法:先将减数E2移求补(各位取反,末位加1),然后再与被减数E1移进行模2n相加,最后对结果的符号取反。溢出判断:进行模2n相加时,如果两个加数的符号相同,并且与和数的符号也相同,则发生溢出。,无符号数的乘法运算,Paperandpencilexample:Multiplicand1000Multiplierx10011000000000001000Product(积)1001000,(乘数),(被乘数),假定:X=0.x1xn,Y=0.y1yn,则:z1z2n=(0.x1xn)(0.y1yn)(小数点位置约定,不区分小数还是整数),Xy42-4,Xy32-3,Xy22-2,Xy12-1,4XY=(Xyi2-i)i=1,手工乘法的特点:每步计算:Xyi,若yi=0,则得0;若yi=1,则得X把求得的各项结果Xyi逐次左移,可表示为Xyi2-i对中求得的结果求和,即(Xyi2-i),这就是两个无符号数的乘积,无符号数的乘法运算,计算机内部稍作以下改进:每次得Xyi后,与前面所得结果累加,得到Pi,称之为部分积。因为没有等到全部计算后一次求和,所以减少了保存每次相乘结果Xyi的开销。每次得Xyi后,不将它左移与前次部分积Pi相加,而将部分积Pi右移后与Xyi相加。因为加法运算始终对部分积中高n位进行。故用n位加法器可实现二个n位数相乘。乘数中为“1”位执行加法和右移,对为“0”位只执行右移,而不执行加法运算。,整个运算过程中用到两种操作:加法+左移,因而,可用ALU和移位器来实现乘法运算,原码乘法算法,用于浮点数尾数乘运算符号与数值分开处理:积符用两个符号异或得到,数值用无符号乘法运算,例:设x原=0.1110,y原=1.1101,计算XY原,解:数值部分用无符号数乘法算法计算:11101101=10110110符号位:01=1,所以:XY原=1.10110110,上述算法称为原码一位乘法,其实现思想为:每次只取乘数中的一位进行判断,需n次循环,速度相对较慢。原码两位乘法的思想:对乘数的每两位取值进行判断,每步求出对应两位的部分积。,3.3.4定点运算部件,综合考虑各类定点运算算法后,发现:所有运算都可通过“加”和“移位”操作实现以一个或多个ALU(或加法器)为核心,加上移位器和存放中间临时结果的若干寄存器,在相应控制逻辑的控制下,可以实现各种运算。运算部件通常指ALU、移位器、寄存器组,加上用于数据选择的多路选择器和实现数据传送的总线等构成的一个运算数据通路。可用专门运算器芯片实现(如:4位运算器芯片AM2901)可用若干芯片级联实现(如4个AM2901构成16位运算器)现代计算机把运算数据通路和控制器都做在CPU中,为实现高级流水线,CPU中有多个运算部件,通常称为“功能部件”或“执行部件”。,注:“运算器(OperateUnit)”、“运算部件(OperateUnit)”、“功能部件(FunctionUnit)”、“执行部件(ExecutionUnit)”和“数据通路(DataPath)”的含义基本上一样,只是强调的侧面不同。,小结,逻辑运算、移位运算、扩展运算等电路简单,主要考虑算术运算定点运算涉及的对象无符号数;带符号整数(补码);定点原码小数;定点移码整数定点数运算:ALU实现基本算术和逻辑运算,ALU+移位器实现其他运算加减运算:补码加/减:符号位和数值位一起运算,减法用加法实现。同号相加时可能溢出原码加/减:符号位和数值位分开运算,用于浮点数尾数加/减运算移码加减:移码的和、差等于和、差的补码,用于浮点数阶码加/减运算乘法运算:无符号数乘法:“加”+“右移”原码(一位/两位)乘法:符号和数值分开运算,数值部分用无符号数乘法实现,用于浮点数尾数乘法运算。补码(一位/两位)乘法:符号和数值一起运算,采用Booth算法。快速乘法器:流水化乘法器、阵列乘法器除法运算:无符号数除法:用“加/减”+“左移”,有恢复余数和不恢复余数两种。原码除法:符号和数值分开,数值部分用无符号数除法实现,用于浮点数尾数除法运算。补码除法:符号位和数值位一起。有恢复余数和不恢复余数两种。快速除法器:很难实现流水化除法器,可实现阵列除法器定点运算部件:ALU、GRS、MUX、Shifter、Q寄存器等,在CU控制下执行十进制数加、减运算及运算部件,浮点数运算及结果,设两个规格化浮点数分别为A=Ma.2EaB=Mb.2Eb,则:A+B=(Ma+Mb.2-(Ea-Eb).2Ea(假设Ea=Eb)A*B=(Ma*Mb).2Ea+EbA/B=(Ma/Mb).2Ea-Eb上述运算结果可能出现以下几种情况:阶码上溢:一个正指数超过了最大允许值=+/-/溢出阶码下溢:一个负指数超过了最小允许值=+0/-0尾数上溢:最高有效位有进位=右规非规格化尾数:数值部分高位为0=左规右规或对阶时,右段有效位丢失=尾数舍入IEEE建议实现时为每种异常情况提供一个自陷允许位。若某异常对应的位为1,则发生相应异常时,就调用一个特定的异常处理程序执行。,SP最大允许的指数为多少?,127!,SP最小允许的指数为多少?,-126!,在运算过程中,添加保护位,尾数溢出,不一定浮点数溢出,即不一定会发生“溢出异常”,IEEE754标准规定的五种异常情况,无效操作(无意义)操作中有一个数是非有限数,如:加/减、0 x、/等结果无效,如:源操作数是NaN、0/0、xREM0、REMy等除以0(即:无穷大)数太大(阶码上溢):对于SP,指阶码E11111110(指数大于127)数太小(阶码下溢):对于SP,指阶码EXe,则结果的阶码为Ye)(2)对阶:将Xm右移e位,尾数变为Xm2Xe-Ye(保留右移的尾数部分:附加位)(3)尾数加减:Xm2Xe-YeYm(4)规格化:当尾数高位为0,则需左规:尾数左移一次,阶码减1,直到MSB为1每次阶码减1后要判断阶码是否下溢(比最小可表示的阶码还要小)当尾数最高位有进位,需右规:尾数右移一次,阶码加1,直到MSB为1每次阶码加1后要判断阶码是否上溢(比最大可表示的阶码还要大)如果尾数比规定位数长,则需考虑舍入(有多种舍入方式)若尾数是0,则需要将指数也置0。为什么?,尾数为0说明结果应该为0,即:指数和尾数为全0。,浮点数乘/除法基本要点,浮点数乘/除法步骤(假定:Xm、Ym分别是X和Y的尾数,Xe和Ye分别是X和Y的阶码)求阶:Xe+Ye+127尾数相乘除:Xm*/Ym(两个形为1.xxx的数相乘/除)(3)两数符号相同,结果为正;两数符号相异,结果为负;如果需要规格化(尾数形如:1.xxx),则按(4)进行。(4)当尾数高位为0,需左规:尾数左移一次,阶码减1(+-1补),直到MSB为1。每次阶码减1后要判断阶码是否下溢(比最小可表示的阶码还要小)当尾数最高位有进位,需右规:尾数右移一次,阶码加1,直到MSB为1。每次阶码加1后要判断阶码是否上溢(比最大可表示的阶码还要大)如果尾数比规定的长,则需考虑舍入。若尾数是0,则需要将指数也置0。阶码溢出判断,浮点数尾数采用原码乘、除运算。,问题1:乘法运算结果最多左规几次?最多右规几次?,不需左规!最多右规1次!,问题2:除法呢?,溢出判断,可能会导致阶码溢出的情况:左规(阶码-1)、右规(阶码+1)时左规(-1)时:先判断阶码是否为全0,若是,则直接置阶码下溢;否则,阶码减1后判断阶码是否为全0,若是,则阶码下溢。右规(+1)时,先判断阶码是否为全1,若是,则直接置阶码上溢;否则,阶码加1后判断阶码是否为全1,若是,则阶码上溢。,乘法运算求阶码的和时若Ex、Ey的最高位都是1,而Eb的最高位是0或Eb为全1,则阶码上溢。若Ex、Ey的最高位都是0,而Eb的最高位是1或Eb为全0,则阶码下溢。除法运算求阶码的差时若Ex的最高位是1,Ey的最高位是0,Eb的最高位是0或Eb为全1,则阶码上溢。若Ex的最高位是0,Ey的最高位是1,Eb的最高位是1或Eb为全0,则阶码下溢。,问题:如何减1?,小结,浮点运算指令(以MIPS为参考)浮点数的表示(IEEE754标准)单精度SP(float)和双精度DP(double)规格化数(SP):阶码1254,尾数最高位隐含为10(阶为全0,尾为全0)(阶为全1,尾为全0)NaN(阶为全0,尾为非0)非规数(阶为全1,尾为非0)浮点数加减运算对阶、尾数加减、规格化(上溢/下溢处理)、舍入浮点数乘除运算求阶、尾数乘除、规格化(上溢/下溢处理)、舍入浮点数的精度问题中间结果加保护位、舍入位(和粘位)最终进行舍入(有四种舍入方式)最近(中间值强迫为偶数)、+方向、-方向、0方向默认为“最近”舍入方式,本章总结,定点数运算:由ALU+移位器实现各种定点运算移位运算逻辑移位:对无符号数进行,左(右)边补0,低(高)位移出算术移位:对带符号整数进行,移位前后符号位不变,编码不同,方式不同。循环移位:最左(右)边位移到最低(高)位,其他位左(右)移一位。扩展运算零扩展:对无符号整数进行高位补0符号扩展:对补码整数在高位直接补符加减运算补码加/减运算:用于整数加/减运算。符号位和数值位一起运算,减法用加法实现。同号相加时,若结果的符号不同于加数的符号,则会发生溢出。原码加/减运算:用于浮点数尾数加/减运算。符号位和数值位分开运算,同号相加,异号相减;加法直接加;减法用加负数补码实现。乘法运算:用加法和右移实现。补码乘法:用于整数乘法运算。符号位和数值位一起运算。采用Booth算法。原码乘法:用于浮点数尾数乘法运算。符号位和数值位分开运算。数值部分用无符号数乘法实现。除法运算:用加/减法和左移实现。补码除法:用于整数除法运算。符号位和数值位一起运算。原码除法:用于浮点数尾数除法运算。符号位和数值位分开运算。数值部分用无符号数除法实现。,本章总结,浮点数运算:由多个ALU+移位器实现加减运算对阶、尾数相加减、规格化处理、舍入、判断溢出乘除运算尾数用定点原码乘/除运算实现,阶码用定点数加/减运算实现。溢出判断当结果发生阶码上溢时,结果发生溢出,发生阶码下溢时,结果为0。精确表示运算结果中间结果增设保护位、舍入位、粘位最终结果舍入方式:就近舍入/正向舍入/负向舍入/截去四种方式。ALU的实现算术逻辑单元ALU:实现基本的加减运算和逻辑运算。加法运算是所有定点和浮点运算(加/减/乘/除)的基础,加法速度至关重要进位方式是影响加法速度的重要因素并行进位方式能加快加法速度通过“进位生成”和“进位传递”函数来使各进位独立、并行产生,Threeend!,第四章小内容,指令格式设计原则,指令格式设计两个主要目标,指令格式设计主要有两个目标:(1)节省程序的存储空间;(2)指令格式要尽量规整,以减少硬件译码的复杂度。,基本原则,4.2.1基本设计问题,4.2.2操作数类型,4.2.3寻址方式,地址,立即数寻址方式,操作数直接在指令中给出,这种寻址方式就称为立即数寻址方式。,操作数作为指令的一部分存放在代码段里,当从主存取指令到CPU时,操作数连同一起被取出;当CPU执行该条指令时,就可以立刻得到操作数而无须再次访问主存储器。,取指令时,操作码和操作数同时被取出,不必再次访问主存储器,提高了指令的执行速度;,立即数寻址,立即数,特点,寄存器寻址方式,寄存器寻址方式,寄存器,指令长度,优点,指令在执行过程中所需要的操作数来源于寄存器,运算结果也写回到寄存器。,AX、BX、CX、DX、SI、DI、SP、BP等通用寄存器。,地址码短,表示寄存器号的地址码部分可以短于用来表示存储单元的地址码部分。,缩短指令长度、节省存储空间、提高指令的执行速度。,无需访问主存,需访问主存,立即数寻址寄存器寻址,操作数均存放在主存中,需要通过不同方式计算出操作数的有效地址,直接寻址方式,直接寻址方式是指直接在指令中给出操作数的地址,即形式地址等于有效地址。,缺点:受地址码位数限制,直接寻址空间较小。,优点:直接寻址方式的有效地址不需要任何计算,因此寻址速度较快;,间接寻址方式,根据指令地址码是寄存器地址还是存储器地址,间接寻址又可分为寄存器间接寻址和存储器间接寻址两种方式。,根据指令的地址码访问存储单元或寄存器,取出的内容是操作数的有效地址或指令的有效地址,这种方式称为间接寻址或间址。,基址寻址方式,专用的基址寄存器,指定一个通用寄存器,操作数的地址由基址寄存器的内容和指令的地址码A相加得到,地址码A通常被称为位移量(disp),也可用其他方法获得位移量。,基址寻址主要用于解决程序在存储器中的定位(逻辑地址物理地址)和扩大寻址空间(基址+位移量)等问题。,变址寻址方式,把指令地址码部分给出的地址A与指定的变址寄存器X的内容之和作为操作数的地址来获得所需要的操作数称为变址寻址。基址寻址方式和变址寻址方式可以组合使用。,相对寻址方式,把程序计数器PC的内容(当前执行指令的地址)与指令的地址码部分给出的位移量(disp)之和作为操作数的地址或转移地址,主要用于转移指令,执行本条指令后,将转移到(PC)+disp,(PC)为程序计数器的内容。,转移地址不是固定的,它随着PC值的变化而变化,并且总是与PC相差一个固定值disp;位移量可正、可负,通常用补码表示;,相对寻址,使用场合,特点,堆栈寻址方式,堆栈操作使用一组特殊的数据传送指令,即压入指令(PUSH)和弹出指令(POP)。若采用“向上生成”的堆栈,则两种指令的格式如下。,(1)压入指令PUSH格式:PUSHOPR操作:(SP)-2SP;OPR(SP),(2)弹出指令POP格式:POPOPR操作:(SP)OPR;(SP)+2SP。,4.2.4操作类型,通用计算机系统的基本指令,数据传送类指令,运算类指令,程序控制类指令,输入输出指令,处理机控制/调试指令,数据传送类指令,根据数据存储设备的种类、数据传送单位以及采用的寻址方式可以构造多条传送类指令。,运算类指令,运算类指令在整个指令系统中占有比较大的比重。,程序控制指令,包括三大类:转移指令、程序调用/返回指令、循环控制指令。,处理机控制和调试指令:调试指令主要用于硬件和软件的调试。,输入输出指令:采用单一的直接寻址方式。主要的操作有:启动设备、测试设备、对设备进行控制、数据的输入/输出操作等。,扩展编码有两种表示方法:,最长操作码不超过4,可以采用2/7扩展编码,即2种码长的编码个数分别为2条和7条,则可以选择编码长度为2的指令2条,编码长度为4的指令7条;,最长操作码不超过5,可以采用3/6扩展编码,即2种码长的编码个数分别为3条和6条,则可以选择编码长度为2的指令3条,编码长度为5的指令6条。,地址码在指令中所占的长度最长,其编码长度主要与地址码的个数、操作数所存放的存储设备、存储设备的寻址空间大小、编址方式、寻址方式等有关。,完整性,规整性,高效率,兼容性,设计基本要求,4.2.7指令系统设计风格,复杂指令系统计算机CISC(ComplexInstructionSetComputer)增强指令功能,设置功能复杂的指令面向目标代码、高级语言和操作系统用一条指令代替一串指令,CISC,CISC进一步增强原有指令的功能以及设置更为复杂的新指令取代原先由软件子程序完成的功能,实现软件功能的硬化。按照这种途径和方向来发展,使机器指令系统越来越庞大和复杂。CISC指令系统的一大特点:指令数量多、功能多样。代表性的CISC有IBM370、VAX-11/780、VAX8600、Inteli486、MC68040等。,CSIC:增强指令功能,增强指令功能主要是从以下3个方面着手:面向目标程序增强指令功能面向高级语言的优化实现来改进指令系统面向操作系统的优化实现改进指令系统,面向目标程序增强指令功能,对大量的目标程序及其执行情况进行统计分析,找出那些使用频度高、执行时间长的指令或指令串。对于使用频度高的指令,用硬件加快其执行;对于使用频度高的指令串,用一条新的指令来替代。既能减少目标程序的执行时间,也能有效地缩短程序的长度。可以从以下几个方面来改进:增强运算型指令的功能增强数据传送指令的功能增强程序控制指令的功能,面向高级语言的优化实现来改进指令系统,(缩小高级语言与机器语言的语义差距)高级语言与一般的机器语言的语义差距非常大,为高级语言程序的编译带来了一些问题。(1)编译器本身比较复杂;(2)编译生成的目标代码比较难以达到很好的优化。,增强对高级语言和编译器的支持,对高级语言中使用频度高、执行时间长的语句,增强有关指令的功能,加快这些指令的执行速度,或者增加专门的指令,可以达到减少目标程序的执行时间和减少目标程序长度的目的。增强系统结构的规整性,减少系统结构中的各种例外情况。(面向高级语言的计算机),高级语言计算机,间接执行高级语言机器高级语言作为机器的汇编语言。直接执行高级语言的机器直接把高级语言作为机器语言。(一种比较激进的方法)采用“比较简单的系统结构软件”的做法能够在较低成本和复杂度的前提下,提供更高的性能和灵活性。,面向操作系统的优化实现改进指令系统,操作系统和计算机系统结构是紧密联系的,操作系统的实现在很大程度上取决于系统结构的支持。指令系统对操作系统的支持主要有:处理机工作状态和访问方式的切换;进程的管理和切换;存储管理和信息保护;进程的同步与互斥,信号灯的管理等。支持操作系统的有些指令属于特权指令,一般用户程序是不能使用的。,CISC的结构和思路存在的问题,指令系统庞大,一般在200条以上,许多指令的功能又异常复杂,需要使用许多种不同的寻址方式、指令格式和指令长度,这就使完成指令的译码、分析和执行的控制器硬件非常复杂庞大。不仅给VLSI设计带来麻烦,不利于设计自动化技术的采用,延长了设计周期,增加了设计成本,也容易增大出现错误的机会,降低了系统的可靠性。由于许多指令的操作繁杂,使得执行速度很低,甚至比用几条简单基本的指令组合实现还要慢。由于指令系统庞大,使得高级语言编译程序选择目标指令的范围很大,从而难以优化编译生成真正高效的机器语言程序,也使编译程序太长、太复杂。由于指令系统非常庞大,各种指令的使用频度都不会太高,且相互差别很大,其中相当一部分指令的利用率很低(基本符合“二八定律”),特别是那些专用于面向某种高级语言优化实现的指令,不仅增加了机器设计人员的负担也降低了机器的性价比。,精简指令系统计算机RISC(ReducedInstructionSetComputer)只保留功能简单的指令功能较复杂的指令用子程序来实现,RISC,RISC是上个世纪80年代提出的一种新的设计思想,选取一些使用频率比较高的简单指令以及很有用又不复杂的指令来构成指令系统,指令数目较少,指令长度固定,指令格式少。典型的RISC如SUN公司的SPARC、SuperSPARC、UltraSPARC,SGI公司的R4000、R5000、R10000,IBM公司的Power、PowerPC,Intel公司的80860、80960,DEC公司的Alpha,Motorola公司的88100等。,RISC的产生,20%与80%定律VLSI技术的发展带来的问题软硬件的功能分配问题,20%与80%定律,CISC机器中,各种指令的使用频度相差很悬殊,大量的统计数字表明,大约有20%的指令的使用频度较高,占据了80%的处理机时间。即80%的指令只在20%的处理机运行时间才被用到,纽约约克镇IBM研究中心的JohnCocke证明,计算机中约20%的指令承担了80%的工作,他于1974年提出了RISC的概念。,RISC的定义,RISC是计算机系统结构的设计思想,它不是一种产品。它是近代计算机系统结构发展中的一个里程碑。直到现在,RISC还没有一个确切的定义,RISC体系结构的特点,面向寄存器结构十分注重提高流水线的执行效率要提高RSIC处理机的速度,必须采用流水线,而且要尽量减少断流,提高流水线的效率重视优化编译技术优化编译技术在提高系统性能中发挥重要的作用,该变了过去认为提高计算机速度紧紧依靠硬件的传统观点。,IEEE对于RISC的定义,RSIC处理器所设计的指令系统应使流水线处理能高效率执行,并使优化编译器能生成优化代码。支持流水线简单而统一格式的指令编码大部分指令可以单周期执行完成只有Load和Store指令可以访问存储器简单的寻址方式采用延迟转移技术采用Load延迟技术支持优化编译器生成优化代码三地址指令格式较多的寄存器对称的指令格式,RISC思想的精华减少CPI,P=I*CPI*TP:执行程序所需的总时间I:程序执行的总指令数目CPI:每条指令执行的平均周期数T:一个周期的时间长度,CISC与RISC的I、CPI和T的比较,采用RISC结构的好处,简化指令系统设计,适合超大规模集成电路设计实现。提高机器的执行速度和效率。降低设计成本,提高了系统的可靠性。可以提供直接支持高级语言的能力,简化编译程序的设计。,RISC结构的不足和问题,由于指令少,使原在CISC上由单一指令完成的某些复杂功能现在需要用多条RISC指令才能完成,这实际上加重了汇编语言程序员的负担,增加了机器语言程序的长度,从而占用了较大的存贮空间,加大了指令的信息流量。对浮点运算和虚拟存贮器的支持虽有很大加强,但仍不够理想。相对来说,RISC机器上的编译程序要比CISC机器上的难写。,CISCVSRISC,指令集RISCVSCISC,RISC括DECAlpha、ARC、ARM、AVR、MIPS、PA-RISC、PowerArchitecture(包括PowerPC、PowerXCell)和SPARCCISCCDC6600、System/360、VAX、PDP-11、Motorola68000家族、x86理解汇编指令简单指令格式指令编码指令语义,寻址方式,4.4.1MIPS汇编语言和机器语言,寄存器组织32个32/64位通用寄存器(GPRs)R0,R1,R31也称为整数寄存器R0的值永远是032个32/64位浮点数寄存器(FPRs)F0,F1,F31用来存放32个单精度浮点数(32位),也可以用来存放32个双精度浮点数(64位)。存储单精度浮点数(32位)时,只用到FPR的一半,其另一半没用。一些特殊寄存器它们可以与通用寄存器交换数据。例如浮点状态寄存器:用来保存有关浮点操作结果的信息。,通用寄存器,32个32位通用寄存器$0$31,单精度浮点寄存器,32个32位单精度浮点寄存器:$f0$f31可配对成16个64位双精度浮点寄存器,乘商寄存器,乘法:Hi、Lo联合构成64位乘积除法:Hi存放余数,Lo存放商,程序计数器,PC存放下一条指令的地址,MIPS的数据表示,MIPS的数据表示整数字节(8位)半字(16位)字(32位

温馨提示

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

评论

0/150

提交评论