体系结构第2章_第1页
体系结构第2章_第2页
体系结构第2章_第3页
体系结构第2章_第4页
体系结构第2章_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

计算机系统结构

主讲人:陈俭喜计算机学院武汉光电国家实验室信息存储部chenjx@QQ群:279749742ComputerArchitecture第1章计算机系统结构的基础知识

(1)计算机系统的多级层次模型,计算机系统结构的广义定义与狭义定义,与组织、实现的关系;(2)计算机系统结构的分类;(3)计算机系统设计的定量原理

Amdahl定律 CPU性能公式

平均时钟周期数CPI

每秒百万指令数MIPS(4)执行时间、吞吐率和基准测试程序;(5)冯.诺依曼结构的特点;(6)并行性的等级与技术途径。作业:1.7,1.10,1.11,下周一上课的时候交作业

计算机系统设计的定量原理(1)Makethecommoncasefaster|AmdahlCPU性能公式CPU时间=

(CPIi

ICi)/时钟频率CPI=

(CPIi

ICi)/IC=

(CPIi

ICi/IC)CPU时间=CPIIC

时钟周期时间

;MIPS106=指令条数执行时间CPU时钟周期数=指令条数106/ffCPI=106程序的执行时间Te=MIPS指令条数106计算机系统设计的定量原理(2)MIPS(MillionInstructionsPerSecond)AboutMIPS2.1 指令系统结构的分类2.2 寻址方式2.3 指令系统的设计与优化2.4指令系统的发展和改进2.5 操作数的类型和大小2.6 MIPS指令系统结构作业:补充习题2.14,实验1,要求见群共享

第2章指令系统的设计2.1指令系统结构的分类先考虑如下问题:1.指令是什么?2.和高级语言(C语言)的差别?3.一条指令应包含哪些内容?OperationOprand2.3指令系统的设计与优化操作类型实例算术和逻辑运算算术运算和逻辑操作:加,减,乘,除,与,或等数据传输load,store控制分支,跳转,过程调用和返回,自陷等系统操作系统调用,虚拟存储器管理等浮点浮点操作:加,减,乘,除,比较等十进制十进制加,十进制乘,十进制到字符的转换等字符串字符串移动,字符串比较,字符串搜索等图形像素操作,压缩/解压操作等寻址方式指令实例含义寄存器寻址ADDR1,R2Regs[R1]←Regs[R1]+Regs[R2]立即值寻址ADDR3,#6Regs[R3]←Regs[R3]+6偏移寻址ADDR3,120(R2)Regs[R3]←Regs[R3]+Mem[120+Regs[R2]]寄存器间接寻址ADDR4,(R2)Regs[R4]←Regs[R4]+Mem[Regs[R2]]索引寻址ADDR4,(R2+R3)Regs[R4]←Regs[R4]+Mem[Regs[R2]+Regs[R3]]直接寻址或绝对寻址ADDR4,(1010)Regs[R4]←Regs[R4]+Mem[1010]存储器间接寻址ADDR2,@(R4)Regs[R2]←Regs[R2]+Mem[Mem[Regs[R4]]]自增寻址ADDR1,(R2)+Regs[R1]←Regs[R1]+Mem[Regs[R2]]Regs[R2]←Regs[R2]+d自减寻址ADDR1,-(R2)Regs[R2]←Regs[R2]-dRegs[R1]←Regs[R1]+Mem[Regs[R2]]缩放寻址ADDR1,80(R2)[R3]Regs[R1]←Regs[R1]+Mem[80+Regs[R2]+Regs[R3]*d]2.2寻址方式一个需要注意的问题:物理地址空间的信息如何存放?如何在存储器中存放不同宽度的信息?2.2寻址方式信息宽度不超过主存宽度的信息必须存放在一个存储字内,不能跨边界。必须做到:信息在主存中存放的起始地址必须是该信息宽度(字节数)的整数倍信息存储的整数边界概念满足以下条件字节信息的起始地址为:×…××××半字信息的起始地址为:×…×××0单字信息的起始地址为:×…××00双字信息的起始地址为:×…×000

存在存储空间的浪费,但保证访问速度。2.2寻址方式2.3指令系统的设计与优化在设计指令系统时,有两种截然不同的设计策略。(产生了两类不同的计算机系统)CISC(复杂指令系统计算机)增强指令功能,把越来越多的功能交由硬件来实现,并且指令的数量也是越来越多。RISC(精简指令系统计算机)尽可能地把指令系统简化,不仅指令的条数少,而且指令的功能也比较简单。

2.3.3指令操作码的优化───3种方法(P37)指令操作码的编码方法有3种:定长编码,Huffman编码,扩展编码。1.定长编码(P40)

就是所有指令的操作码使用相同位数,其最小码长等于式中是平均码长,是第i种指令的码长,n是指令总数。例2.0已知n=15,求定长编码的最小平均码长。解:这种编码方式没有对操作命令中的冗余信息进行压缩,程序占用的空间比后2种编码都大。但是每条指令中的操作码位数固定,CPU的指令译码电路可以设计得简单而快速,所以在追求速度的RISC计算机上被普遍采用。2.Huffman编码(P38)Huffman压缩概念(最佳编码定理):当用n个长度不等的代码分别代表n种发生概率不等的事件时,按照短代码给高概率事件、把长代码给低概率事件的原则分配,可使平均码长达到最低。3.扩展编码方法(等长扩展法,P39)扩展编码方法是等长编码与Huffman编码的折中,在CISC机器中常常使用(如Intel80x86系列处理机)。用码长表示:例如4-8-12法。这并不能说明具体编码方法,例如下面两种编码方法都是4-8-12法。用码点数表示:例如15/15/15法,8/64/512法15/15/15法,每一种码长都有4位可编码位(前头可以有相同的扩展标识前缀),可产生16个码点(即编码组合),但是至多只能使用其中15个来表示事件,留下1个或多个码点组合作为更长代码的扩展标识前缀。已经用来表示事件的码点组合不能再作为其它更长代码的前导部分,否则接收者会混淆。这就是“非前缀原则”。8/64/512法,每一种码长按4位分段,每一段中至少要留下1位或多位作为扩展标识。各段剩下的可编码位一起编码,所产生的码点用来对应被编码事件。每一段中的标识位指出后面还有没有后续段。以3-6-9位为例36bit目标:平均码长最小化33bit平均码长=P1l1+P2l2+……+P84l8430bit27bit24bit21bit18bit15bit12bit9bit6bit3bit7/7/7法码长分布7条7条7条7条7条7条7条7条7条7条7条7条9bit6bit3bit4/16/64法码长分布4条16条64条指令频度分布悬殊

P1

……P84指令频度分布均匀

P1

……P84两种等长扩展码适用性比较4.编码方法性能指标信息量:根据信息论的基本知识,在n种可能发生的事件集合中,报告第i种事件发生的消息中包含的信息量为其中Pi是第i种事件发生的先验概率,a是编码基值(2进制bit,a=2)。信息量的单位是表示位数(最少所需位数)。这个定义式表明事件的发生概率越低,关于它的消息中的信息量越大。熵(entropy)──平均信息量:一个消息源对n种事件发布的消息的信息量平均值,记为平均码长:各事件编码长度的数学期望。信息冗余量:它表明消息编码中“无用成分”所占的百分比。从减少存储与传输量的角度看,编码方法的平均码长越短越好。但是平均码长不可能无限制缩短,它的下限就是熵(即R=0时)。如果短于熵就一定会丢失有用信息(即混淆不同指令),这是不允许的。例2.1(补充,教材P38的例2.1自己阅读)已知频度序列为0.1,0.1,0.15,0.15,0.2,0.3,求Huffman编码、等长扩展3/3/3码、定长编码、三者的平均码长、信息冗余量以及熵。解:

熵H=–(2×0.1×log20.1+2×0.15×log20.15+0.2×log20.2+0.3×log20.3)

≈2.47

根据Huffman编码方法作Huffman树如图2.2所示,三种编码方法的结果列于表2.1中。表2.1Huffman编码、等长扩展3/3/3码及定长编码2.4指令系统的发展和改进CISC指令系统结构存在的问题

(1979年开始,Patterson等人的研究)各种指令的使用频度相差悬殊,许多指令很少用。据统计:只有20%的指令使用频度比较高,占运行时间的80%。而其余80%的指令只在20%的运行时间内才会用到。使用频度高的指令也是最简单的指令。2.4.2沿RISC方向发展和改进指令系统执行频度排序80x86指令指令执行频度(占执行指令总数的百分比)1load22%2条件分支20%3比较16%4store12%5加8%6与6%7减5%8寄存器-寄存器间数据移动4%9调用子程序1%10返回1%合计95%Intel80x86最常用的10条指令2.4指令系统的发展和改进指令系统庞大,指令条数很多,许多指令的功能又很复杂,使得控制器硬件非常复杂。

导致的问题:占用了大量的芯片面积(如占用CPU芯片总面积的一半以上)增加了研制时间和成本,容易造成设计错误。许多指令由于操作繁杂,其CPI值比较大,执行速度慢。由于指令功能复杂,规整性不好,不利于采用流水技术来提高性能。2.4指令系统的发展和改进设计RISC机器遵循的原则指令条数少、指令功能简单。只选取使用频度很高的指令,在此基础上补充一些最有用的指令;采用简单而又统一的指令格式,并减少寻址方式;指令字长都为32位或64位;指令的执行在单个机器周期内完成;

(采用流水线机制)只有load和store指令才能访问存储器,其它指令的操作都是在寄存器之间进行;

(即采用load-store结构)大多数指令都采用硬连逻辑来实现;2.4指令系统的发展和改进强调优化编译器的作用,为高级语言程序生成优化的代码;充分利用流水技术来提高性能。早期的RISC微处理器1981年,Berkeley分校的Patterson等人的32位微处理器RISCI:31条指令,指令字长都是32位,78个通用寄存器,时钟频率为8MHz;控制部分所占的芯片面积只有约6%。商品化微处理器MC68000和Z8000分别为50%和53%;性能比MC68000和Z8000快3~4倍。2.4指令系统的发展和改进1983年的RISCⅡ:指令条数为39,通用寄存器个数为138,时钟频率为12MHz。后来发展成了Sun公司的SPARC系列微处理器。1981年,Stanford大学Hennessy等人的MIPS后来发展成了MIPSRxxx系列微处理器。IBM的801共同特点:采用load-store结构指令字长为32位采用高效的流水技术32个64位通用寄存器(GPRs)R0,R1,…,R31也称为整数寄存器R0的值永远是032个64位浮点数寄存器(FPRs)F0,F1,…,F312.6MIPS指令系统结构介绍MIPS64的一个子集,简称为MIPS。2.6.1MIPS的寄存器2.6MIPS指令系统结构用来存放32个单精度浮点数(32位),也可以用来存放32个双精度浮点数(64位)。存储单精度浮点数(32位)时,只用到FPR的一半,其另一半没用。一些特殊寄存器它们可以与通用寄存器交换数据。例如浮点状态寄存器:用来保存有关浮点操作结果的信息。2.6MIPS指令系统结构MIPS的数据表示整数字节(8位)半字(16位)字(32位)双字(64位)浮点数单精度浮点数(32位)双精度浮点数(64位)字节、半字或者字在装入64位寄存器时,用零扩展或者用符号位扩展来填充该寄存器的剩余部分。装入以后,对它们将按照64位整数的方式进行运算。2.6.2MIPS的数据表示2.6MIPS指令系统结构立即数寻址与偏移量寻址;

寄存器间接寻址是通过把0作为偏移量来实现的;

16位绝对寻址是通过把R0(其值永远为0)作为基址寄存器来完成的;MIPS的存储器是按字节寻址的,地址为64位;所有存储器访问都必须是边界对齐的。MIPS的存储器地址采用高端字节表示顺序(bigendian,又称“大尾端排序”),即用bit63表示最低位,而bit0表示最高位;存储多字节数据时,高字节存放在低地址,…。与之相反的是,Intel80x86处理机采用低端字节表示顺序(smallendian,又称“小尾端排序”)2.6.3MIPS的数据寻址方式2.6MIPS指令系统结构寻址方式编码到操作码中所有的指令都是32位的操作码占6位3种指令格式

3种格式中,同名字段的位置固定不变。2.6.4MIPS的指令格式MIPS指令格式有三种指令格式R-Type两个操作数和结果都在寄存器的运算指令。如:subrd,rs,rtI-Type运算指令:一个寄存器、一个立即数。如:orirt,rs,imm16LOAD和STORE指令。如:lwrt,rs,imm16条件分支指令。如:beqrs,rt,imm16J-Type无条件跳转指令。如:jtargetoprsrtrdshamtfunc0611162126316bits6bits5bits5bits5bits5bitsR-Type指令oprsrtimmediate0162126316bits16bits5bits5bitsI-Type指令optargetaddress026316bits26bitsJ-Type指令所有指令都是32位宽,须按字地址对齐MIPS指令字段含义OP:操作码rs:第一个源操作数寄存器rt:第二个源操作数寄存器rd:结果寄存器shamt:移位指令 的位移量func:R-Type指令的OP字段是特定的“000000”,具体操作由func字段给定。例如:func=“100000”时,表示“加法”运算。immediate:立即数或load/store指令和分支指令的偏移地址targetaddress:无条件转移地址的低26位。将PC高4位拼上26位直接地址,最后添2个“0”就是32位目标地址。为何最后两位要添“0”?oprsrtrdshamtfunc0611162126316bits6bits5bits5bits5bits5bitsR-Type指令oprsrtimmediate0162126316bits16bits5bits5bitsI-Type指令optargetaddress026316bits26bitsJ-Type指令操作码的不同编码定义不同的含义,操作码相同时,再由功能码定义不同的含义!指令按字地址对齐,所以每条指令的地址都是4的倍数(最后两位为0)。立即寻址寄存器寻址:R-type基址寻址:I-typePC相对寻址伪直接寻址(pseudodirectaddressing)注意:字长32位26位形式地址左移2位(字对准),与PC的高4位拼接ByteHalfwordWordRegistersMemoryMemoryWordMemoryWordRegisterRegister1.

Immediate

addressing2.

Register

addressing3.

Base

addressing4.

PC-relative

addressing5.

Pseudodirect

addressingoprsrtoprsrtoprsrtopoprsrtAddressAddressAddressrd.

.

.functImmediatePCPC++

MIPS寻址模式MIPSAddressingModes(寻址方式)immedoprsrtregisterBase或index+MemoryimmedoprsrtImmediateimmedoprsrtPC+4PC-relative+MemoryI-format:oprsrtrdregisterRegisterfuncR-format:smt655565J-format:opaddr.MemoryPseudodirectB/HW/WByte/HalfWord/Word2.6MIPS指令系统结构MIPS指令可以分为四大类load和storeALU操作分支与跳转浮点操作符号的意义x←ny:从y传送n位到xx,y←z:把z传送到x和y2.6.5MIPS的操作2.6MIPS指令系统结构下标:表示字段中具体的位;对于指令和数据,按从最高位到最低位(即从左到右)的顺序依次进行编号,最高位为第0位,次高位为第1位,依此类推。下标可以是一个数字,也可以是一个范围。例如:Regs[R4]0:寄存器R4的符号位

Regs[R4]56-63:R4的最低字节Mem:表示主存;按字节寻址,可以传输任意个字节。上标:用于表示对字段进行复制的次数。例如:0

32:一个32位长的全0字段2.6MIPS指令系统结构符号##:用于两个字段的拼接,并且可以出现在数据传送的任何一边。举例:R8、R10:64位的寄存器,则Regs[R8]32-63←32

(Mem[Regs[R6]]0)24

##Mem[Regs[R6]]表示的意义是:以R6的内容作为地址访问内存,得到的字节按符号位扩展为32位后存入R8的低32位,R8的高32位(即Regs[R8]0-31)不变。

load和store指令指令举例指令名称含义LDR2,20(R3)装入双字Regs[R2]←64Mem[20+Regs[R3]]LWR2,40(R3)装入字Regs[R2]←64(Mem[40+Regs[R3]]0)32##Mem[40+Regs[R3]]LBR2,30(R3)装入字节Regs[R2]←64(Mem[30+Regs[R3]]0)56##Mem[30+Regs[R3]]LBUR2,40(R3)装入无符号字节Regs[R2]←64056##Mem[40+Regs[R3]]LHR2,30(R3)装入半字Regs[R2]←64(Mem[30+Regs[R3]]0)48##Mem[30+Regs[R3]]##Mem[31+Regs[R3]]L.SF2,60(R4)装入半字Regs[F2]←64Mem[60+Regs[R4]]##032L.DF2,40(R3)装入双精度浮点数Regs[F2]←64Mem[40+Regs[R3]]SDR4,300(R5)保存双字Mem[300+Regs[R5]]←64Regs[R4]SWR4,300(R5)保存字Mem[300+Regs[R5]]←32Regs[R4]S.SF2,40(R2)保存单精度浮点数Mem[40+Regs[R2]]←32Regs[F2]0··31

SHR5,502(R4)保存半字

Mem[502+Regs[R4]]←16Regs[R5]48··.63

ALU指令寄存器-寄存器型(RR型)指令或立即数型算术和逻辑操作:加、减、与、或、异或和移位等指令举例指令名称含义DADDU R1,R2,R3无符号加Regs[R1]←Regs[R2]+Regs[R3]DADDIU R4,R5,#6加无符号立即数Regs[R4]←Regs[R5]+6LUI R1,#4把立即数装入到一个字的高16位Regs[R1]←032##4##016DSLL R1,R2,#5逻辑左移Regs[R1]←Regs[R2]<<5DSLTR1,R2,R3置小于If(Regs[R2]<Regs[R3])Regs[R1]←1elseRegs[R1]←02.6MIPS指令系统结构R0的值永远是0,它可以用来合成一些常用的操作。例如:DADDIUR1,R0,#100

给寄存器R1装入常数100DADDR1,R0,R2

把寄存器R2中的数据传送到寄存器R12.6MIPS指令系统结构由一组跳转和一组分支指令来实现控制流的改变典型的MIPS控制指令2.6.6MIPS的控制指令指令举例指令名称含义Jname跳转PC36··63←name<<2JALname跳转并链接Regs[R31]←PC+4;PC36··63←name<<2;((PC+4)-227)≤name<((PC+4)+227)JALRR3寄存器跳转并链接Regs[R31]←PC+4;PC←Regs[R3]JRR5寄存器跳转PC←Regs[R5]BEQZR4,name等于零时分支if(Regs[R4]==0)PC←name;((PC+4)-217)≤name<((PC+4)+217)BNER3,R4,name不相等时分支if(Regs[R3]!=Regs[R4])PC←name((PC+4)-217)≤name<((PC+4)+217)MOVZR1,R2,R3等于零时移动if(Regs[R3]==0)Regs[R1]←Regs[R2]2.6MIPS指令系统结构跳转指令根据跳转指令确定目标地址的方式不同以及跳转时是否链接,可以把跳转指令分成4种。确定目标地址的方式把指令中的26位偏移量左移2位(因为指令字长都是4个字节)后,替换程序计数器的低28位;间接跳转:由指令中指定的一个寄存器来给出转移目标地址。跳转的两种类型简单跳转:把目标地址送入程序计数器。跳转并链接:把目标地址送入程序计数器,把返回地址(即顺序下一条指令的地址)放入寄存器R31。2.6MIPS指令系统结构分支指令(条件转移)分支条件由指令确定例如:测试某个寄存器的值是否为零提供一组比较指令,用于比较两个寄存器的值。例如:“置小于”指令有的分支指令可以直接判断寄存器内容是否为负,或者比较两个寄存器是否相等。分支的目标地址由16位带符号偏移量左移两位后和PC相加的结果来决定一条浮点条件分支指令:通过测试浮点状态寄存器来决定是否进行分支。2.6MIPS指令系统结构由操作码指出操作数是单精度(SP)或双精度(DP)后缀S:表示操作数是单精度浮点数后缀D:表示是双精度浮点数浮点操作包括加、减、乘、除,分别有单精度和双精度指令。浮点数比较指令根据比较结果设置浮点状态寄存器中的某一位,以便于后面的分支指令BC1T(若真则分支)或BC1F(若假则分支)测试该位,以决定是否进行分支。2.6.7MIPS的浮点操作LoongsonisaMIPS-compatiblefamilyofmicroprocessorsdesignedbytheChineseAcademyofSciences.TheinternalmicroarchitectureofLoongsonmicroprocessorswasdesignedindependentlybytheChinese,andearlyimplementationsofthefamilylackedfourinstructionspatentedbyMIPSTechnologies.InJune2009,ICTlicencedtheMIPS32andMIPS64architecturesdirectlyfromMIPSTechnologies.--fromwikipediaMeaninglessIndicator

温馨提示

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

评论

0/150

提交评论