




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高级计算机系统结构桂盛霖博士/副教授课程内容:第1章计算机概要与技术第2章指令:计算机的语言第3章单周期MIPS处理器的设计第4章流水线MIPS处理器的设计第5章存储系统及性能评估教材ComputerOrganizationandDesignTheHardware/SoftwareInterfaceDavidA.PattersonJohnL.Hennessy计算机组成与设计硬件/软件接口机械工业出版社原书第4版第1章计算机概要与技术1.1引言1.2计算机分类1.3软硬件的关系1.4性能1.5功耗1.6性能测试程序1.7Amdahl定律1.1引言1.用二进制代码表示程序和数据;2.计算机采用存储程序的工作方式;3.计算机硬件由存储器、运算器、控制器、输入设备和输出设备等五大部件组成。主要思想包括:冯·假设依曼(Von·Nouma)美籍匈牙利数学家1903–19571.1引言冯诺依曼体系结构1.包括了CentralProcessingUnit单元:算术逻辑单元处理器存放器控制单元2.包括了存储器〔数据和指令〕3.输入输出机制两个核心:数据和对数据的操作1.1引言哈弗体系结构1.也是存储程序系统2.有独立的数据存储区和数据总线3.有独立的指令存储区和指令总线典型处理器:DSP1.2计算机的分类及特性桌面计算机〔Desktop/LaptopComputer〕通用性应用构成CPU、内存、硬盘、鼠标、键盘、显示器等主要指标性能:能运行多快根本功能〔扩展功能〕价格1.2计算机应用的分类及特性效劳器〔ServerComputer〕OneRack-MountPCUnit大规模应用效劳文件存储、计算、业务处理等主要指标性能可靠性、有效性能耗、价格1.2计算机应用的分类及特性嵌入式计算机〔EmbeddedComputer〕作为一个大系统的一局部主要指标性能〔实时性〕功耗价格1.4性能响应时间-Responsetime从提出请求到被执行的时间吞吐率-Throughput单位时间内所做的工作提高响应时间和吞吐率的方法?用更快的处理器用更多的处理器点对点的到达时间Concorde最好旅客吞吐率747最好计算机性能的定义针对单任务针对数据中心1.4性能吞吐率和响应时间下面两种改进计算机系统的方式,能否增加其吞吐率或减少其响应时间?将计算机中的处理器更换为更高速的型号增加多个处理器来分别处理独立的任务,如搜索万维网答:一般说来,降低响应时间都可以增加吞吐率。方式1同时改进了响应时间和吞吐率。尽管方式2不会使任务完成更快,只会增加吞吐率。但是当需要处理更多任务时,系统可能需要后续请求排队。在这种情况下,增加了吞吐率,也就改进了响应时间。1.4性能CPU时间-CPUtime执行某一任务在CPU的花费的时间时钟周期-ClockcycleClockperiod
CPU时间=CPU时钟周期数×时钟周期改进性能的方法减少时钟周期数;增加时钟频率;1.4性能Example计算机A:2GHz,CPU时间10秒设计计算机B:目标:CPU时间缩短为6秒方法:提高时钟频率,但时钟周期数会变为计算机A的1.2倍计算机B的时钟频率应为多少?Example
指令性能
CPI〔Clockcycleperinstruction〕表示执行每条指令所需的平均时钟周期数,是一个程序全部指令所用时钟周期数的平均值。
CPIExample计算机A:时钟周期=250ps,CPI=2.0计算机B:时钟周期=500ps,CPI=1.22台计算机的ISA〔指令集架构〕相同,但实现方式不同哪个计算机更快?快多少?
CPIExample
代码段的比较电子科技大学计算机科学与工程学院
每类指令的CPIABCCPI123代码序列每类指令的数量ABCIC指令数(代码序列1)212IC指令数(代码序列2)411例:总的CPI的计算编译器设计者试图在两个代码之间进行选择。硬件设计者给出了如下数据:对于某行高级语言语句的实现,两个代码序列所需指令数量如下:代码段的比较电子科技大学计算机科学与工程学院
代码序列1IC=2+1+2=5时钟周期数=2×1+1×2+2×3=10CPI=10÷5=2.0指令类型ABCCPI123IC指令数(代码序列1)212IC指令数(代码序列2)411哪个代码序列执行的指令数更多,哪个执行速度更快,每个代码CPI是多少?代码段的比较电子科技大学计算机科学与工程学院
代码序列2IC=4+1+1=6时钟周期数=4×1+1×2+1×3=9CPI=9÷6=1.51.4性能电子科技大学计算机科学与工程学院
比较2台计算机性能时应考虑三个因素:指令数:使用仿真器软件工具可测量出。CPI:与计算机各种设计细节密切相关,以及应用程序中不同类型指令所占的比例。时钟频率〔硬件手册通常直接给出〕1.4性能电子科技大学计算机科学与工程学院
记住:1.只用一种因素〔如指令数〕去评价性能是危险的。当比较两台计算机时,必须考虑全部三个因素。2.唯一能被完全可靠测量的计算机性能指标是时间。3.对指令集减少指令数的改进可能降低时钟周期或提高CPI,抵消了改进的效果。4.指令数最少的代码其执行速度未必是最快的。理解程序性能电子科技大学计算机科学与工程学院
程序指令数、CPI算法编程语言指令数、CPI编译程序指令数、CPIISA指令数CPI时钟频率1.6性能测试程序MIPS-MillionsofInstructionsperSecond用相同的指令集比较两台机器(A,B),MIPS一般是公平的MIPS可能是一个“无意义的性能指标〞机器A有一条计算平方根的特殊指令,它执行需要100个时钟周期机器B没有这种指令---它计算平方根用软件方式即用加、乘、移位简单指令〔一般执行需要1个时钟周期〕编程实现老工业性能指标:MIPS1.6性能测试程序不同类型的基准测试程序〔benchmarks〕核心测试程序:从实际的程序中抽取少量较短的关键程序框架代码构成,这些代码的执行直接影响程序总的执行时间。如LivermoreLoops和Linpack。小测试程序:代码在10~100行,具有特定目的测试程序。如SieveofErastosthenes,Puzzle和Quieksort。综合测试程序:对一大套应用程序中的操作和操作数的执行频率进行统计,得到平均执行频率,再按这个频率编制的模拟测试程序。如Whetstone和Dhrystone。基准测试程序集:选择一组有代表性的不同类型应用程序,集中起来构成基准测试程序集,以有效评测计算机处理各种应用的性能。这种测试程序集合也称为测试程序组件〔benchmarksuites〕。如SPEC,TPC。SPEC-TheSystemPerformanceEvaluationCooperative一个开放性的非赢利组织1988年由工作站厂商HP,DEC,MIPS,SUN共同发起,以满足市场迫切需要的标准化性能测试。已成为最成功的性能测试标准化组织,有40个公司成员。SPEC'sPhilosophy目标:保证市场有一套公平和实用的指标来区分不同的候选系统。根本方法:提供基于现有应用程序的一套标准化源代码作为基准测试程序集。1.6性能测试程序1.6性能测试程序电子科技大学计算机科学与工程学院
SPECCPU基准测试程序SPEC-SystemPerformanceEvaluationCooperativeSPECCPU200612个整数基准测试程序集17个浮点数基准测试程序集1.6性能测试程序CPU-intensivebenchmarksSPEC89SPEC92SPEC95SPEC2000SPECCPU2006(12CINT2006,17CFP2006)
graphics-intensivebenchmarksSPEC2000SPECviewperfisusedforbenchmarkingsystemssupportingtheOpenGLgraphicslibrarySPECapcconsistsofapplicationsthatmakeextensiveuseofgraphics.31IntegerprogramsFloating-pointprogramsC:9C++:3Fortran:6C++:4C:3C/Fortran:41.6性能测试程序ServerBenchmarks由于Server有不同的效劳功能,因此有多类benchmarks:SPECrate—processingrateofamultiprocessor面向Server的处理器吞吐量的benchmarks,SPECCPU2000使用了SPECCPUbenchmarks,通过运行多个CPU基准测试程序副本来获得多处理机的处理速率(SPECrate)。SPECSFS--fileserverbenchmark:测试网络文件系统的性能,包括磁盘、IO和处理器的性能。SPECWeb--Webserverbenchmark:模拟多个用户请求Server的静态和动态页面。1.6性能测试程序计算机性能通常用峰值性能〔Peakperformance〕和持续性能〔Sustainedperformance〕来评价。峰值性能是指在理想情况下计算机系统可获得的最高理论性能,它不能反映出系统的实际性能。实际性能又称持续性能,其值只有峰值性能的5%~35%,这是因为实际程序运行时会受到硬件结构、操作系统、算法设计和编程等因素的影响。1.7Amdahl定律计算机设计最重要和普遍原那么功耗、资源分配、性能、可靠性简化常用事件,速度能够更快例如:CPU中两个数相加,结果可能产生溢出,溢出情况较少,不溢出才是常见情况。因此,可以通过简化不溢出相加的操作来提高机器的性能。例如:处理器中的取指和译码单元要比乘法单元使用得更加频繁,因此,应注重这两个单元的性能设计。量化这个原那么的根本定律:Amdahl’sLaw1.7Amdahl定律采用更快的执行方式后所获得的系统性能提高,与这种执行方式的使用频率或占总执行时间的比例有关。Example1.7Amdahl定律Amdahl定律可以阐述为:系统中某一部件由于采用某种更快的执行方式后所获得系统性能的提高,与这种执行方式的使用频率或占总执行时间的比例有关。Amdahl定律定义了一台计算机系统采用某种改进措施所取得的加速比。Amdahl定律定义了一台计算机系统采用某种改进措施所取得的加速比:1.7Amdahl定律Amdahl定律中,加速比与两个因素有关:在原有的计算机上,能被改进的局部在总执行时间中所占的比例,即这个值称为改进比例,记为Fe,它总小于等于1。例如,如果一个任务在原来机器上的执行时间为60s,其中20s的执行时间可以使用改进措施,那么Fe就是20/60=1/3。1.7Amdahl定律b.改进局部采用改进措施后,相比没有采用改进措施前性能提高的倍数,即
这个值称为改进加速比,记为Se,它总大于1。例如,在原来的条件下程序的某一局部执行时间为5s,而改进后这一局部只需要2s,那么Se是5/2。我们可以得出如下结论:1.7Amdahl定律〔1〕改进后整个任务的执行时间Tn为:其中T0为改进前的整个任务的执行时间。〔2〕改进后整个系统的加速比Sn为:
上面式子中〔1-Fe〕表示不可改进局部,我们做以下分析:1.当Fe为0,即没有可改进局部时,Sn为1;1.7Amdahl定律2.当Fe为1,即全可改进局部时,Sn=Se,所以性能的提高幅度等于改进后性能提高的倍数。假设假设改进前是单核,改进后是4核,且Fe=1,那么Sn=4.加速比Sn为:问题是,上面是理想情况,考虑Fe=3/4.即源程序的3/4的局部都可以并行,只有1/4的程序必须串行。那么在这种情况Sn最多为多少?可以看出无论采用几核处理器,加速比不会超过4.1.7Amdahl定律3.当时,那么,因此,可获取性能改善极限值受Fe值的约束。加速比Sn为:1.7Amdahl定律下面举例子来说明Amdahl定律的应用。【例1-1】假定新的处理器采用了改进措施,新处理器处理Web应用程序的运行速度是原来处理器的10倍,同时假定新处理器有40%的时间用于计算,另外60%的时间用于I/O操作。那么改进性能后总的加速比是多少?
解:由题意可知:Fe=40%=0.4,Se=10
1.7Amdahl定律【例1-2】试分析采用哪种设计方案实现求浮点数平方根FPSRQ(是FP运算的子集)对系统性能提高更大。假定FPSRQ操作占整个程序执行时间的20%。一种设计方案是增加专门的FPSRQ硬件,可以将FPSRQ操作的速度加快到10倍;另一种设计方案是提高所有FP运算指令的执行速度,使得FP指令的执行速度加快为原来的1.6倍,设FP运算指令在总执行时间中占50%。试比较这两种设计方案。1.7Amdahl定律
解:对这两种设计方案的加速比分别进行计算。
增加专门FPSRQ硬件方案:Fe=20%=0.2,Se=10
提高所有FP运算指令速度方案:Fe=50%=0.5,Se=1.6
根据结果判断,提高所有FP运算指令速度的方案要好一些,这是由于该测试程序中浮点操作所占比重较大。谬误与陷阱陷阱在改进计算机的某个方面时期望总性能的提高与改进大小成正比。Amdahl定律:系统中对某一部件采用更快执行方式所能获得的系统性能改进程度,取决于这种执行方式被使用的频率,或所占总执行时间的比例。推论:加速最常见的事件。谬误与陷阱谬误利用率低的计算机功耗低10%的利用率会消耗约2/3的峰值功率陷阱:用性能公式的一个子集去度量性能。简单地只使用时钟频率、每秒钟执行的指令数或CPI之一去评价性能。小测验测试内容计算机A计算机B指令数100亿80亿时钟频率4GHz4GHzCPI1.01.11.哪台计算机的MIPS更高?2.哪台计算机更快?某程序在2台计算机上的性能测量结果为:MIPS:Millioninstructionspersecond百万条指令每秒小测验解答电子科技大学计算机科学与工程学院
计算机A
计算机B
结论:计算机A的MIPS更高小测验解答电子科技大学计算机科学与工程学院
计算机A
计算机B结论:计算机B更快
1.假设高速缓存Cache工作速度为主存的5倍,且Cache被访问命中的概率为90%,那么采用Cache后,能使整个存储系统获得多高的加速比?2.P37,习题1.10.1-1.10.3,习题1.12作业高级计算机系统结构电子科技大学计算机科学与工程学院
第2章指令:计算机的语言5354第2章指令:计算机的语言2.1引言2.2计算机硬件的操作2.3计算机硬件的操作数2.4指令的表示2.5计算机硬件对过程的支持2.6MIPS寻址模式总结2.7并行与指令:同步2.8翻译并执行程序2.9ARM指令集2.10X86指令集2.1引言电子科技大学计算机科学与工程学院
指令集〔InstructionSet〕一台计算机所能执行全部指令的集合。精简指令集计算机RISCRISC–ReducedInstructionSetComputer指令长度固定单周期执行指令流水线处理硬件接线式控制指令集学习容易举一反三:1.硬件技术相似性2.根本操作普通性552.1引言电子科技大学计算机科学与工程学院
复杂指令集计算机CISCCISC–ComplexInstructionSetComputer指令复杂,长度可变多种内存寻址方式微程序结构本章选取MIPS公司指令、ARM指令〔和MIPS非常类似〕和IntelX86指令的典型特征进行介绍。562.3计算机硬件的操作数电子科技大学计算机科学与工程学院
在MIPS体系结构中:算术运算类指令的操作数只能来自存放器。存放器大小为32位。典型的存放器数量是32个。设计原那么2:越少越快大量的存放器可能会使时钟周期变长。57大量的数据存放在存储器中,需要数据传送指令在存放器和存储器之间传递数据…109876543210存储器存取电子科技大学计算机科学与工程学院
…0bH0aH09H08h07H06H05H04H03H02H01HMemory地址MIPS的一个字是4个字节Intel的一个字是2个字节一个字是的地址用其最低地址表示。在MIPS中,字的起始地址必须是4的倍数。这
叫对齐限制。58类似一维数组…109876543210存储器存取电子科技大学计算机科学与工程学院
…0bH0aH09H08h07H06H05H04H03H02H01HMemory地址将数据从存储器拷贝到存放器的指令,叫取数指令59类似一维数组将数据从存放器拷贝到存储器的指令,叫存数指令lw
指令:loadwordsw指令:storeword如何解释?01020304H?04030201H?存储器存取电子科技大学计算机科学与工程学院
大端对齐〔Bigendian〕较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址。…109876543210…0bH0aH09H08h07H06H05H04H03H02H01HMemory地址字数据:01020304H05060708HMIPS采用大端对齐60存储器存取电子科技大学计算机科学与工程学院
小端对齐〔Littleendian〕较高的有效字节存放在较高的存储器地址,较低的有效字节存放在较低的存储器地址。…109876543210…0bH0aH09H08h07H06H05H04H03H02H01HMemory地址字数据:04030201H08070605HIntel采用小端对齐612.4
指令的表示电子科技大学计算机科学与工程学院
add/subrd,rs,rt#rd←rsoprt算术类62R型指令格式oprsrtrdshamtfunc6位5位5位5位5位6位312625212016151110650参与操作的3个操作数均是存放器操作数;R型指令的op〔操作码〕全为0,具体功能由func〔功能码〕确定;shamt:位移量,仅对移位指令有效;MIPS指令源操作数存放器目的操作数存放器硬件设计的根本原那么电子科技大学计算机科学与工程学院
设计原那么4:优秀的设计需要适宜的折中方案。当2种方案各有优缺点而又无法兼顾时,应进行必要的折中。oprsrtrdshamtfunc6位5位5位5位5位6位312625212016151110650问题:如果源操作数是一个常数,且大小超过25,如何解决?希望所有指令长度相同,又有相同的指令格式,造成了冲突。63MIPS汇编指令电子科技大学计算机科学与工程学院
andirt,rs,imm#rt←rsopimm(零扩展)算术类64I型指令格式有1个源操作数是立即数;oprsrtimmediate6位5位5位16位312625212016150rs:第1个源操作数,是存放器操作数;rt:目的存放器;Immediate:第2个源操作数,立即数;MIPS设计者选择:指令长度相同,但不同类型指令格式不同。MIPS汇编指令电子科技大学计算机科学与工程学院
数据传输类lwrt,offset(rs)#rt←mem[rs+offset])取字
swrt,offset(rs)#mem[rs+offset])←rt存字
lhrt,offset(rs)#rt←mem[rs+offset])取半字
shrt,offset(rs)#mem[rs+offset])←rt存半字
65I型指令格式oprsrtimmediate6位5位5位16位312625212016150将MIPS汇编语言翻译成机器语言电子科技大学计算机科学与工程学院
lw$t0,1200($t1)lw指令的格式:
oprsaddress16位5位6位1000110100100000100101100001200rt01000rtrs66MIPS汇编指令电子科技大学计算机科学与工程学院
数据传输类lbrt,offset(rs)#rt←mem[rs+offset])取字节
sbrt,offset(rs)#mem[rs+offset])←rt存字节
llrt,offset(rs)#rt←mem[rs+offset])原子交换的前半局部Luirt,imm#rt←imm<<16把立即数放到高16位
scrt,offset(rs)#mem[rs+offset])←rt,rt←0/1原子交换的后半局部67MIPS汇编指令电子科技大学计算机科学与工程学院
and/or/xorrd,rs,rt#rd←rsoprtsllrd,rt,sa#rd←rt<<sa根据常数左移相应位
andi/ori/xorirt,rs,imm#rt←rsopimm(零扩展)逻辑运算类srlrd,rt,sa#rd←rt>>sa根据常数右移相应位
逻辑操作C操作符Java操作符MIPS操作符左移<<<<sll右移>>>>>srl按位与&&and,andi按位或||or,ori按位取反~~nor68左移4位电子科技大学计算机科学与工程学院
移位操作〔Shift〕:逻辑左移和逻辑右移将1个字中的所有位都左移或右移:移出的位丢弃;移位后空出的位补0;00000000000000000000000000000101
000000000000000000000000010100000000移出丢弃末位补0Example:MIPS汇编指令6970MIPS汇编指令sllrd,rt,sa#rd←rt<<sa根据常数左移相应位
srlrd,rt,sa#rd←rt>>sa根据常数左移相应位
R型指令oprsrtrdshamtfunc6位5位5位5位5位6位312625212016151110650sll$t2,$s0,4#$t2←$s0<<4001610406位5位5位5位5位6位312625212016151110650对应的编码:$t24$s071MIPS中32位立即数和地址的寻址例题:如何加载00000000001111010000100100000000到存放器$s0?首先我们用lui指令加载高16位,十进制表示是61:lui$s0,61,执行上面指令后,存放器s0的值为:00000000001111010000000000000000下一步是插入低16位,十进制表示是2304:ori$s0,$s0,2304MIPS汇编指令电子科技大学计算机科学与工程学院
beqrs,rt,imm
#if(rs==rt)PC←imm*4+4+PCbners,rt,imm#if(rs!=rt)PC←
imm*4+4+PCsltrd,rs,rt#if(rs<rt)rd=1,elserd=0条件分支类slti$t0,$s2,10#if$s2<10then$t0=1else$t0=0slt$t0,$s3,$s4#if$s3<$s4then$t0=1else$t0=0条件转移没有“小于那么分支〞指令,因为这种指令过于复杂,会延长时钟周期时间。72MIPS指令格式电子科技大学计算机科学与工程学院
op:确定指令的功能;immediate:计算相对转移地址;73I型指令格式oprsrtimmediate6位5位5位16位312625212016150条件分支类MIPS对所有的条件分支使用PC相对寻址。例:
跳转地址计算公式为:Exit地址=bne指令地址+4+M×451617M6位5位5位16位312625212016150MIPS汇编指令电子科技大学计算机科学与工程学院
MIPS编译器使用slt,slti,beq,bne和固定值0来创立所有的比较条件:74条件语句相等beq$t0,$s3,label不等bne$t0,$s3,label小于slt$t0,$s3,$s4(if$s3<$s4then$t0=1)beq$t0,$s3,label($s3=1)小于等于先判断是否相等,再判断是否小于。大于先判断是否小于,再判断是否相等。大于等于判断是否小于有符号比较和无符号比较的比照假设存放器中$s0中的二进制数为:1111111111111111…1111存放器中$s1中的二进制数为:0000000000000000…0001谁大谁小?-取决于$s0中的数是正数还是负数?slt$t0,$s0,$s1;#$t0=1,$s0=-1sltu$t0,$s0,$s1;#$t0=0,$s0=42949672951075sltu指令的用处?利用sltu指令可以减低检验下标是否越界的开销:如果$s1≥$t2或者$s1是负数那么跳转到OutofBound。有符号比较和无符号比较的比照76sltu指令的用处?利用sltu指令可以减低检验下标是否越界的开销:如果$s1≥$t2或者$s1是负数那么跳转到OutofBound。仅使用一条sltu指令可做两种检查:sltu$t0,$s1,$t2;
#$t0=1
if$s1≥length
or$s1<0beq$t0,$zero,OutofBound;
#ifbad,gotoerrorMIPS汇编指令电子科技大学计算机科学与工程学院
jimme#PC←PC的高4位与imme*4进行拼接
jalimme#ra←PC+4,PC←PC的高4位与imme*4进行拼接
jrrs#PC←rs无条件跳转类(形成绝对地址)77MIPS指令格式电子科技大学计算机科学与工程学院
J型指令op:确定指令的功能;address:转移地址;opaddress6位26位3126250782例:
100006bits26bits跳转地址为:PC的高4位:10000×44位28位32位Loop:sll$t1,$s3,2
add$t1,$t1,$s6
lw$t0,0($t1)
bne$t0,$s5,Exit
addi$s3,$s3,1
JLoopExit:79MIPS指令格式假设Loop的地址为:0x80000,那么循环的机器码为:0x8000000199200x80004092290320x80008359800x8000B582120x800108191910x800142200000x80018…bneJMIPS汇编指令–R型指令电子科技大学计算机科学与工程学院
指令[31:26]op[25:21]rs[20:16]rt[15:11]rd[10:6]shamt[5:0]funct功能add000000rsrtrd00000100000寄存器加sub000000rsrtrd00000100010寄存器减and000000rsrtrd00000100100寄存器与or000000rsrtrd00000100101寄存器或xor000000rsrtrd00000100110寄存器异或sll00000000000rtrdsa000000左移srl00000000000rtrdsa000010逻辑右移sra00000000000rtrdsa000011算术右移jr000000rs000000000000000001000寄存器跳转80MIPS汇编指令–I型指令电子科技大学计算机科学与工程学院
指令[31:26][25:21][20:16][15:0]功能addi001000rsrtimmediate立即数加andi001100rsrtimmediate立即数与ori001101rsrtimmediate立即数或xori001110rsrtimmediate立即数异或lw100011rsrtimmediate取字数据sw101011rsrtimmediate存字数据beq000100rsrtimmediate相等转移bne000101rsrtimmediate不等转移lui00111100000rtimmediate设置高位81MIPS汇编指令–J型指令电子科技大学计算机科学与工程学院
指令[31:26][25:0]功能j000010address跳转jal001100address调用82MIPS的通用存放器电子科技大学计算机科学与工程学院
寄存器名寄存器号用途$zero0常数0$at1汇编器专用$v0~$v12~3函数调用的返回值寄存器$a0~$a34~7函数调用的参数寄存器$t0~$t78~15临时变量,函数调用时不需要保存和恢复$s0~$s716~23函数调用时需要保存和恢复的寄存器变量$t8~$t924~25临时变量,函数调用时不需要保存和恢复83MIPS的通用存放器电子科技大学计算机科学与工程学院
寄存器名寄存器号用途$k0~$k126~27操作系统专用$gp28全局指针变量(GlobalPointer)寄存器$sp29堆栈指针变量(StackPointer)寄存器$fp30帧指针变量(FramePointer)寄存器$ra31返回地址(ReturnAddress)寄存器注:除0号和31号存放器外,其余存放器并无本质区别。842.5计算机硬件对过程的支持电子科技大学计算机科学与工程学院
过程/函数(procedure/function)一段子程序,函数通常具有返回值。过程/函数是程序员进行结构化编程的工具,有助于提高程序的可重用性。调用过程/函数时必须解决的问题:参数放在哪里?存放器Or存储器?任务完成后结果放在哪里?存放器Or存储器?控制如何转移到过程?如何返回?852.5计算机硬件对过程的支持电子科技大学计算机科学与工程学院
由于存放器是保持数据最快的单元,应尽可能多地使用存放器。MIPS为过程调用分配32个存放器时遵循以下约定:$a0-$a3:用于传递参数的4个参数存放器;$v0-$v1:用于返回值的2个值存放器;$ra:用于返回起始点的返回地址存放器;$t0-$t9:临时存放器,不必保存;$s0-$s7:一旦被使用,由被调用者保存和恢复862.5计算机硬件对过程的支持电子科技大学计算机科学与工程学院
回忆jalProcedureAddress
指令格式因此调用程序将参数值放在$a0-$a3,然后使用jalx跳转到过程x,被调用者将执行结果放在$v0和$v1,然后使用jr$ra指令将控制返回给调用者。87指向调用点的地址将返回地址保存在$ra中,然后进行跳转回忆jr$ra指令格式:存放器跳转指令无条件跳转到存放器$ra指定的地址使用更多存放器电子科技大学计算机科学与工程学院
任务完成后,调用者使用的任何存放器都必须恢复到过程调用前所存储的值。因此需将存放器的值换出到存储器中进行保存。最理想的方式-堆栈88堆栈(Stack)堆栈是内存中指定的一块区域。Stack0n$sp栈顶栈底对堆栈操作通常是先进后出。堆栈增长方向2.6MIPS的寻址模式总结电子科技大学计算机科学与工程学院
寻址模式/方式寻找操作数或操作数地址的方式立即数寻址〔Immediateaddressing〕操作数是指令中的常数oprsrtimmediate89MIPS的寻址方式包括:电子科技大学计算机科学与工程学院
存放器寻址〔Registeraddressing〕操作数是存放器。oprsrtrdfunc存放器902.6MIPS的寻址模式总结电子科技大学计算机科学与工程学院
基址寻址〔Baseaddressing〕oprsrtaddressRegister+MemoryXXX16位912.6MIPS的寻址模式总结操作数在内存中,其地址是指令中基址存放器和常数的和电子科技大学计算机科学与工程学院
PC相对寻址〔Baseaddressing〕oprsrtaddressPC+Memory字<<216位922.6MIPS的寻址模式总结地址是PC和指令中常数的和4电子科技大学计算机科学与工程学院
伪直接寻址〔Baseaddressing〕opaddress<<226位28位4位PCMemory字932.6MIPS的寻址模式总结跳转地址是指令中26位字段和PC高位相连而成2.7并行与指令:同步电子科技大学计算机科学与工程学院任务需要同步,否那么可能产生“数据竞争〞,导致读数据错误而引起程序运行结果的改变。94当任务之间相互独立时,任务的并行执行很容易。往往任务之间需要协作通常某些任务写的结果是其他任务需要读取的值读任务需要知道写任务什么时候完成了写操作,才能平安读数据2.7并行与指令:同步电子科技大学计算机科学与工程学院链接取数〔Loadlink〕
将offset(rs)的内容存入rt,并开始原子操作。
如果成功执行:将rt中的内容存入offset(rs),并将rt的值置1;如果失败,rt中的内容不存入,rt的值置0。条件存数〔Loadlink〕95计算机中,同步机制要依赖硬件提供的同步指令本节重点讨论加锁和解锁。顺序使用锁单元“成功和失败〞指的是由链接取数指定的锁单元在条件存数执行前已经被改变,那么条件存数执行失败。2.7并行与指令:同步电子科技大学计算机科学与工程学院
例:将$s4中的值和$s1指向的锁单元的值发生原子交换。
原子交换96972.7并行与指令:同步上述同步机制适用于多处理器系统,也适用于单处理器上的多进程。可能存在sc指令始终无法成功执行的情况:重复的页错误;ll和sc指令相隔较远;2.8翻译并执行程序
C程序汇编语言程序目标文件:机器语言模块目标文件:库程序〔机器语言〕可执行文件:机器语言程序编译器汇编器链接器加载器MemoryC语言的翻译层次。98.c.s.o.a.so伪指令blt小于那么分支sltbne目标文件包括:1.目标文件头:描述大小;2.正文段:代码;3.静态数据段:程序生命周期内的数据;4.重定位信息:标记了加载进内存时依赖绝对地址的指令和数据;5.符号表:描述外部引用;6.调试信息1.将代码和数据象征性放入内存;2.决定数据和指令标签地址;3.修补内外部引用将可执行文件加载进磁盘执行汇编器:汇编语言程序->目标文件目标文件:包括机器语言指令、数据和指令正确放入内存所需要的信息汇编器将分支和数据传输指令中用到的标号都放入符号表〔SymbolTable〕中UNIX中的目标文件通常包含以下局部:目标文件头,描述目标文件其他局部的大小和位置正文段静态数据段重定位信息符号表调试信息992.8翻译并执行程序链接器:把所有独立汇编的文件拼接在一起链接器的工作分三个步骤:将代码和数据象征性放入内存;决定数据和指令标签的地址;修补内部和外部引用。链接器使用每个目标模块中的重定位信息和符号表来解析所有标签。所以链接器非常像一个编辑器,寻址所有旧地址并用绝对引用的新地址取代他们。链接器产生可执行文件。1002.8翻译并执行程序2.9ARM指令集嵌入式设备领域和移动互联网领域最流行的指令集架构是ARMARM和MIPS同为RISC指令集,同年发布并遵循相同的简洁设计哲学101ARMMIPS发布时间19851985指令大小3232寻址空间32位32位数据对齐对齐对齐数据寻址模式93整数寄存器15个32位通用寄存器31个32位通用寄存器I/O存储器映射存储器映射2.9ARM指令集102指令名ARMMIPS寄存器-寄存器加法addaddu,addiu加法(溢出捕获)adds,swivsadd减法subsubu减法(溢出捕获)subs,swivssub乘法mulmult,multu除法-div,divu与andand或orror异或eorxor取寄存器高位-lui逻辑左移lslsll逻辑右移lsrsrl算术右移asrsra比较cmp,tst,teqslt,sltu2.9ARM指令集103指令名ARMMIPS数据传输取有符号字节ldrsblb取无符号字节ldrblbu取有符号半字ldrshlh取无符号半字ldrhlhu取字ldrlw存字节strbsb存半字strhsh存字strsw读写特殊寄存器mrs,msrmove原子交换swp,swpbll,scARM的存放器-存放器指令和数据传输指令和MIPS是等价的2.9ARM指令集104寻址模式比照寻址模式ARMv.4MIPS寄存器操作数XX立即数操作数XX寄存器+偏移XX寄存器+寄存器X-寄存器+寄存器倍乘X-寄存器+偏移和更新寄存器X-寄存器+寄存器和更新寄存器X-自增,自减X-相对PC的数据X-1052.10X86指令集X86是由多个独立小组开发的,被持续改进了超过30年,不断在原指令集上增加新的特性。1978年,发布8086。8086是一个16位体系结构,存放器都是16位长,并且都是专用存放器。8086并不是通用存放器结构。1980年,8087浮点协处理器发布,在8086根底上增加了60条浮点指令。1982年,80286在8086的根底上把地址空间扩展到24位,增加了保护模式。1985年,80386的地址空间扩展到32位,还增加了新的寻址模式,这样80386几乎是通用存放器的处理器。还增加了对页的支持。1062.10X86指令集1989-1995年,1989年发布80486,1992年发布Pentium处理器,1995年发布PentiumPro处理器,这些处理器都是以获得更高性能为目的,仅有4条指令增加到用户可见的指令集中。1997年,用多媒体MMX技术来扩展Pentium和PentiumPro处理器。这个新指令集包含57条指令,使用浮点栈来加速多媒体和通信应用程序。MMX通过SIMD的方式来一次处理多个短的数据元素。1999年,添加了70条指令,将SSE〔streamingSIMDExtension〕作为PentiumIII的一局部。主要添加了8个独立存放器,把长度增加到128位,并且增加了一个单精度浮点数据类型,还增加了cache预取指令,以及可以绕开缓冲器直接写内存的流存储指令。1072.10X86指令集2001年,增加了另外144个指令,命名为SSE2。增加的新数据类型是双精度算术,允许并行操作64位浮点型数据对,大大增加了包括SSE2的Pentium4的浮点性能。2003年,AMD改进了x86架构,把地址空间从32位增加到64位,并把每个存放器都扩宽到64位,存放器数目增加到16,把128位的SSE存放器数目增加到16个。ISA的主要变化是新增了“长模式〞,用64位的地址和数据来重新定义所有x86指令的执行。2004年,Intel屈服并吸纳了AMD64,重新标记为EM64T,主要区别是Intel增加了128位的原子比较和交互指令,同时Intel发布了新一代媒体扩展SSE3,添加了13条指令来支持图像操作、视频编码、浮点转换。1082.10X86指令集2006年,作为SSE4的一局部扩展,Intel发布了54条新指令,针对绝对差求和、数组的点积计算等,还增加了对虚拟机的支持。2007年,作为SSE5的一局部,AMD发布了170条指令,包括为46条根本指令集中的指令增加了类似MIPS中的3操作数指令。。2023年,Intel发布了高级向量扩展,将SSE存放器从128位扩展到256位,因此重新定义了250条指令并新增了128条指令。这段历史说明了兼容性对x86的影响,体系结构的改变不允许对已有的软件产生任何的危害。1092.10X86指令集80386的存放器和数据寻址模式80386把16位存放器扩展为32位,并用前缀E来标识32位版本。80386只有8个通用存放器。1102.10X86指令集源/目的操作数类型第二个源操作数寄存器寄存器寄存器立即数寄存器存储器存储器寄存器存储器立即数算术、逻辑和数据传输指令的指令格式1.x86的算术和逻辑指令中的一个操作数必须既是源操作数又是目的操作数;2.一个操作数可以在存储器中。与MIPS指令集的不同之处:1112.10X86指令集尽管存储器操作数可以使用任何寻址模式,但每种模式使用哪些存放器是有限制的。展示了x86寻址模式和每种模式下哪个GPR是不允许使用的。模式描述寄存器限制等价的MIPS寄存器间接寻址地址在寄存器中不能为ESP或EBPlw$s0,0($s1)8位或32位偏移寻址模式地址是基址寄存器与偏移量之和不能为ESPlw$s0,100($s1)基址加比例下标寻址地址是:基址+(2比例*下标)比例是0,1,2,3下标:不能为ESPmul$t0,$s2add$t0,$t0,$s1lw$s0,0($t0)8位或32位偏移量的基址+比例下标寻址地址是:基址+(2比例*下标)+偏移量比例是0,1,2,3下标:不能为ESPmul$t0,$s2,4add$t0,$t0,$s1lw$s0,100($t0)1122.10X86指令集80386在x86结构中参加了32位的地址和数据〔双字〕。几乎所有的操作都能在8位和更长的数据上进行。80386有一个默认数据长度,由代码段存放器中的一位指定。假设要改变默认数据长度,需在指令前附加8位前缀告诉机器这条指令使用其他数据长度。1132.10X86指令集X86整数操作分为4个主要的类:1〕数据传送指令,包括mov、push和pop;2〕算术和逻辑指令,包括测试、整数和小数运算;3〕控制流,包括条件分支、无条件跳转、调用和返回;4〕字符串指令,包括字符串传送和字符串比较。典型的X86指令条件码字符串指令比同等软件例程要慢1142.10X86指令集指令含义控制指令条件和无条件分支jnz,jz条件成立跳转到EIP+8位偏移量jmp无条件跳转-8位或16位偏移量call过程调用–16位偏移量,返回地址压入栈中ret从栈中弹出返回地址并跳转loop循环分支–递减ECX;数据传输在寄存器或寄存器和存储器之间传递数据move在寄存器或寄存器和存储器之间传递数据push,pop将源操作数压栈;将栈顶数据取到寄存器les从存储器取ES和一个GPRs1152.10X86指令集指令含义算术、逻辑使用数据寄存器和存储器的算术和逻辑操作add,subcmp比较源和目的操作数;寄存器-存储器格式shl,shr,rcr左移;逻辑右移;循环右移并与条件码填充cbw将EAX最右8位字节转换成EAX最右16位字test将源和目的操作数进行逻辑与inc,dec递增/减目的操作数or,xor逻辑或/异或字符串在字符串操作数之间移动;由重复前缀给出长度movs通过递增ESI和EDI从源字符串复制到目的字符串loads从字符串中取字节,字或双字到寄存器EAX1162.10X86指令集X86指令编码没有操作数的时候,指令可以是1字节,最长到15字节w表示操作的是一个字节还是一个双字d指明传输方向1172.10X86浮点体系结构Intel对浮点指令提供了一种堆栈结构,载入指令将数压栈,操作使用栈顶的两个单元作为源操作数。除了用栈顶两个元素作为源操作数外,一个源操作数也可以在内存中,或者在栈顶下7个片上存放器之一。优点:源操作数在存放器堆栈中比在内存中更宽,并且所有的操作都是这样宽的内部精度来执行。不像MIPS最大位宽64位,在堆栈中X86源操作数到达80位宽。数字在载入时自动转换为这种80位格式,在写回内存时转换回相应的大小。注:Load指令总是将数据移到堆栈顶端,同时将栈顶指针加1;store指令只能将栈顶数据移到内存。1182.10X86浮点体系结构X86浮点操作主要分为4类:1〕数据移动指令,包括load,load常数和store;2〕计算机算术指令,包括加、减、乘、除、开方根和绝对值;3〕比较指令,包括将结果发送给整数处理器使其能跳转的指令;4〕超越函数指令,包括正弦、余弦、对数和指数。1192.10X86浮点体系结构数据传送算术比较超越函数指令操作数备注FADD两个操作数都在堆栈中,结果放在栈顶FADDST(i)一个操作数在栈顶下第i个寄存器中,结果放在栈顶FADDST(i),ST一个操作数在栈顶,结果放在栈顶下第i个寄存器中FADDMem32一个操作数是内存中的32位数据,结果放在栈顶FADDmem64一个操作数是内存中的64位数据,结果放在栈顶X86浮点指令有不同源操作数的浮点加120IntelSIMD流扩展2〔SSE2〕浮点体系结构2001年,Intel增加了144条指令,包括双精度浮点存放器及操作。它使用了8个64位的存放器用于浮点操作,AMD那么扩展到16个128位存放器,后被Intel采纳。Intel允许多个浮点数一起打包在一个128位的存放器中,4个单精度或2个双精度。有能同时执行4个单精度或者2个双精度操作的浮点算术运算能支持这种打包的浮点数据格式。这种架构比堆栈结构的性能快了两倍多。2.11谬误与陷阱电子科技大学计算机科学与工程学院误解:更强大的指令意味着更高的性能指令的功能越强,编程越简单;指令的功能越强,通常耗时越长,其执行时间并不一定比多条简单指令的执行时间短;误解:使用汇编语言编程来获得最高的性能编译器产生的代码与手工编写的代码在性能上的差距正在快速缩小;121汇编语言的难移植性;习题习题2.15122习题习题2.28123第三章单周期MIPS处理器的设计本章内容3.1引言3.2逻辑设计惯例3.3建立数据通路3.4中断机制电子科技大学计算机科学与工程学院
3.1.1一个根本MIPS的实现要实现的MIPS的指令集存储器访问指令取字:
存字:
算术逻辑指令:
分支指令:
3.1.2实现方式概述寄存器堆ALU数据存储器指令存储器MUXMUX加法器加法器MUXPC4一个MIPS子集的根本实现地址地址数据数据指令存放器#MIPS指令格式oprsrtrdshamtfunc6位5位5位5位5位6位312625212016151110650oprsrtimmediate6位5位5位16位312625212016150opaddress6位26位3126250R型I型J型本章内容3.1引言3.2逻辑设计惯例3.3建立数据通路3.4中断机制本章内容3.1引言3.2逻辑设计惯例3.3建立数据通路3.4中断机制数据路径—R型指令
OprsrtrdshamtfuncRaClockRbRwData3232-bitRegistersALUZero译码OperationWn数据路径—Load指令Oprsrtoffset/immediate
RaClockRbRwData3232-bitRegistersALUZeroMemoryADDRWDRDWeRe译码数据路径—Store指令Oprsrtoffset/immediate
RaClockRbRwData3232-bitRegistersALUZeroMemoryADDRWDRDWeRe译码数据路径—分支指令
分支指令:beq、bne
功能:
数据路径—分支指令Oprsrtoffset/immediateRaClockRbRwData3232-bitRegistersALUZero<<2ADDPC+4ADDPC+4PC4数据路径—合并目标:把各种功能的数据路径合并取指令R型指令Load/Store指令分支指令根本方法:使用多路选择器。MUXA32B3232CSelectR型指令与Load/Store指令合并选择ALU的输入存放器堆的B输出(R型指令)符号扩展输出(Load/Store型指令)R型指令与Load/Store指令差异〔3〕-合并处理3232-bitRegistersALUMUXALUSrcMemoryR型指令与Load/Store指令合并选择存放器堆Data的输入ALU的输出(R型指令)存储器的输出(Load/Store型指令)R型指令与Load/Store指令差异〔4〕-合并处理ALUMemoryMUXM2RegR型指令与Load/Store指令合并选择存放器堆Rw的输入指令的rd字段(R型指令)指令的rt字段(Load指令)RaRbRwData3232-bitRegistersOprsrtrdshamtfuncOprsrtoffset/immediateR型指令与Load/Store指令合并Oprsrtoffset/immediateOprsrtrdshamtfuncR型指令Load/Store指令RaRbRw3232-bitRegistersMUXRegDstR型指令与Load/Store指令在ALU控制码上的区别Oprsrtrdshamtfunc译码OperationR型Oprsrtoffset/immediate译码OperationLoad/Store指令000000100011101011R型指令与Load/Store指令在ALU控制码上的区别Oprsrtrdshamtfunc译码OperationIfOp=000000thenOperation=分析funcElseifOp=100011then
Operation=LoadElse
Operation
=StoreEndifOprsrtoffset/immediateR型指令与Load/Store指令合并MemoryOprsrtoffset/immediateRaClockRbRwData3232-bitRegistersALUZeroADDRWDRDWeReOprsrtrdshamtfuncMUXMUXALUSrcM2regOperationR型指令Load/Store指令MUXRegDstMemoryOprsrtRaClockRbRwData3232-bitRegistersALUZeroADDRWDRDWeRerd000000funcMUXMUXALUSrcM2regOperationMUXRegDstR型指令与Load/Store指令合并(执行R型指令)ALUSrc=0M2reg=1RegDst=1offset/immediate00R型指令与Load/Store指令合并(执行Load(lw)型指令)MemoryOprsrtRaClockRbRwData3232-bitRegistersALUZeroADDRWDRDWeRerd000000funcMUXMUXALUSrcM2regOperationMUXRegDstALUSrc=1M2reg=0RegDst=0offset/immediate01R型指令与Load/Store指令合并(执行Store(sw)型指令)MemoryOprsrtRaClockRbRwData3232-bitRegistersALUZeroADDRWDRDWeRerd000000funcMUXMUXALUSrcM2regOperationMUXRegDstALUSrc=1M2reg=0RegDst=0offset/immediate10MemoryInstructionMemory单周期执行
-数据路径RaRbRwMUXDataALUMUXWDeADDRRDMUX<<2ADDMUXWDADDADDRPC4InstructionOperationSignExtenderZeroALUSrcPCSrcM2reg55516RegDstWeReRegWR执行指令:MemoryInstructionMemoryRaRbRwMUXDataALUMUXWDeADDRRDMUX<<2ADDMUXWDADDADDRPC4InstructionOperationSignExtenderZeroALUSrcPCSrcM2reg55516
RegDstRegWR执行指令:MemoryInstructionMemoryRaRbRwMUXDataALUMUXWDeADDRRDMUX<<2ADDMUXWDADDADDRPC4InstructionOperationSignExtenderZeroALUSrcPCSrcM2reg55516
RegDst
RegWR执行指令:MemoryInstructionMemoryRaRb
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖北省武汉市问津教育联合体2024-2025学年高一上学期12月月考地理试题(解析版)
- 机械制造技术基础 机械制造工程基础学习课件
- 锁骨穿刺常规护理
- 产业数字化科技创新园产业生态系统建设方案
- 山东省烟台市2023-2024学年高二上学期1月期末英语试题(含答案)
- 2024年初级经济师题库附答案(基础题)
- 2025至2030年中国带表笔插架数据监测研究报告
- 2025年河南推拿职业学院单招职业适应性测试题库完整版
- 2025年度现代服务业厂房转租管理协议
- 肝硬化腹水中医护理方案
- GB/T 42915-2023铜精矿及主要含铜物料鉴别规范
- (6)-2.2老虎会唱歌-高密泥叫虎
- 商铺门面分租合同范本
- 新能源汽车电池与管理系统检测与维修PPT完整全套教学课件
- 级2班小组合作学习加减分细则
- 综合交通运输概论
- 网络营销策划与文案写作PPT完整全套教学课件
- 比亚迪汉DM-i说明书
- 晚熟的人(莫言诺奖后首部作品)
- GA/T 2002-2022多道心理测试通用技术规程
- 《玉磨弥蒙铁路建设项目标准化管理考核实施办法》的通知滇南安质〔XXXX〕号
评论
0/150
提交评论