1、1一. 高级计算机体系结构基础 计算机的基本概念计算机的基本概念 什么是计算机什么是计算机 计算机的基本组成计算机的基本组成 衡量计算机的因素衡量计算机的因素 影响计算机设计的主要因素及其发展趋势影响计算机设计的主要因素及其发展趋势 摩尔定律和工艺的发展摩尔定律和工艺的发展 计算机市场发展趋势计算机市场发展趋势 多核结构的发展趋势多核结构的发展趋势 计算机重要指标计算机重要指标 性能、成本、功耗性能、成本、功耗 我国计算机发展历史我国计算机发展历史2现在的计算机中为什么用二进制? 计算机是由电子元器件构成的,二进制最易实现。计算机是由电子元器件构成的,二进制最易实现。 冯诺亿曼结构:数据和程序
2、都在存储器中冯诺亿曼结构:数据和程序都在存储器中,CPU从内存中取指令和数据进行运算并从内存中取指令和数据进行运算并把结果也放到内存中把结果也放到内存中外存储器内存储器输出役备输入设备运算器控制器外存储器输入设备输出设备控制器运算器内存3用最少的指令描述一件事情用最少的指令描述一件事情-算法,编译算法,编译提高提高芯芯跳的速度跳的速度-主频主频每拍做更多的事情每拍做更多的事情-体系结构体系结构计算机怎样才能跑得快4第一代到第四代 第一代:电子管计算机(第一代:电子管计算机(1946-1958) 每秒几千到几万次运算每秒几千到几万次运算 冯诺依曼结构冯诺依曼结构 第二代:晶体管计算机(第二代:晶
3、体管计算机(1958-1964) 每秒几十万次每秒几十万次 高级程序语言出现:高级程序语言出现:FORTRAN、COBOL等等 IBM7094、CDC1604等等 第三代:中小规模集成电路计算机(第三代:中小规模集成电路计算机(1964-1975) 每秒几百万次每秒几百万次 操作系统逐步成熟、小型机出现操作系统逐步成熟、小型机出现 IBM360、PDP11、VAX11 第四代:大规模集成电路计算机(第四代:大规模集成电路计算机(1975-) 每秒亿次以上每秒亿次以上 微处理器出现:微处理器出现:Intel, AMD.5摩尔定律到达尺寸极限后怎么办? 会不会有新材料及新器件技术取代会不会有新材料
4、及新器件技术取代CMOS? 硅的平台不可能被取代,但硅平台上生长的器件会不断硅的平台不可能被取代,但硅平台上生长的器件会不断改进改进 摩尔定律的进一步延续的技术:纳米线技术、碳纳米管摩尔定律的进一步延续的技术:纳米线技术、碳纳米管技术技术 一个普及性的技术必须可以工业大规模可制备一个普及性的技术必须可以工业大规模可制备 其他任何技术都不具备这个特点其他任何技术都不具备这个特点 成为成熟的产业,从高向广发展成为成熟的产业,从高向广发展 飞机满天飞了,汽车还遍地跑飞机满天飞了,汽车还遍地跑6摩尔定律与系统结构 第一阶段:晶体管不够用第一阶段:晶体管不够用 计算机由很多独立芯片构成计算机由很多独立芯
5、片构成 计算机结构受限于晶体管数目不够计算机结构受限于晶体管数目不够 第二阶段:存储器速度太慢第二阶段:存储器速度太慢 集成度提高,微处理器蓬勃发展集成度提高,微处理器蓬勃发展 存储容量指数增加,但访存速度增加缓慢存储容量指数增加,但访存速度增加缓慢 Cache占多达占多达80%的芯片面积的芯片面积 第三阶段:晶体管越来越多而第三阶段:晶体管越来越多而“难难”用用 设计验证能力提高与晶体管增加形成剪刀差设计验证能力提高与晶体管增加形成剪刀差 功耗问题突出、连线成为主要矛盾功耗问题突出、连线成为主要矛盾 不得已向多核发展不得已向多核发展 第四阶段:够用就行?第四阶段:够用就行?7CPU发展趋势:
6、 高性能, 低成本 高性能多核高性能多核CPU正从向千亿次量级向万亿次量级迈进正从向千亿次量级向万亿次量级迈进 片上运算能力的增加使带宽问题日益突出片上运算能力的增加使带宽问题日益突出 结合一定领域需求的结合一定领域需求的XPU开始盛行,处理器核加向量开始盛行,处理器核加向量处理器(处理器(VPU)和图形处理器()和图形处理器(GPU)等属于这类结)等属于这类结构。构。 继功耗问题之后,带宽问题导致第二次结构变革继功耗问题之后,带宽问题导致第二次结构变革 功耗问题导致多核结构,带宽问题导致专用核结构功耗问题导致多核结构,带宽问题导致专用核结构 为了提高性能而牺牲微处理器的通用性和可编程性为了提
7、高性能而牺牲微处理器的通用性和可编程性8Question?1 多核技术出现原因?2 2个1G的多核 Vs 2G的单核处理器3 编程模型:SIMD vs MIMD?4 虚拟化技术的意义?9主频障碍 过去主频的提高一半靠摩尔定律,一半靠结构优化过去主频的提高一半靠摩尔定律,一半靠结构优化 如如P3是是10级流水线,级流水线,P4是是20级流水线级流水线 流水线很难再细分流水线很难再细分 随着晶体管尺寸的缩小,连线延迟成为主要延迟随着晶体管尺寸的缩小,连线延迟成为主要延迟 局部线延迟不变(变短了,但也变细了)局部线延迟不变(变短了,但也变细了) 全局的连线延迟还会不断变长(芯片面积不变)全局的连线延
8、迟还会不断变长(芯片面积不变) 高主频的复杂设计正在终结高主频的复杂设计正在终结 强调:局部化、流水化、异步、自定时强调:局部化、流水化、异步、自定时10复杂度障碍 晶体管数目的指数增加与设计队伍的增加形成剪刀差晶体管数目的指数增加与设计队伍的增加形成剪刀差 设计能力、验证能力设计能力、验证能力 晶体管越来越难用晶体管越来越难用 串扰问题、片上漂移、可制造性设计串扰问题、片上漂移、可制造性设计 处理器结构经历了简单、复杂、简单、复杂的螺旋上升过程处理器结构经历了简单、复杂、简单、复杂的螺旋上升过程 最早期的处理器结构由于工艺技术的限制,不可能做得很复杂,一般都最早期的处理器结构由于工艺技术的限
9、制,不可能做得很复杂,一般都是串行执行是串行执行 随着流水线、动态调度、随着流水线、动态调度、CACHE、向量机技术等技术的发展,处理器结、向量机技术等技术的发展,处理器结构变得复杂,如构变得复杂,如IBM 360系列的机器以及系列的机器以及Cray的向量机的向量机 RISC技术的提出使处理器结构得到一次较大的简化技术的提出使处理器结构得到一次较大的简化 随着多发射乱序执行技术的实现,随着多发射乱序执行技术的实现,RISC结构越来越复杂,结构越来越复杂,Intel和和HP研研制的制的EPIC结构没有从根本上对处理器结构进行简化结构没有从根本上对处理器结构进行简化11未来可能会流行的CPU结构
10、多核多核 + 向量处理向量处理 典型:典型:Larrabee (16way ALU/512 bit) 向量的位宽:向量的位宽:64 / 128 / 256 / 512 / 1024 众核:同构的基于分片的多核(众核:同构的基于分片的多核(tile based) 典型:典型:Tile64 处理器核的个数:处理器核的个数:64 / 128 512 / 1024 带有协处理器的异构多核带有协处理器的异构多核 典型:典型:CELL 通用处理器专用的协处理器(通用处理器专用的协处理器(GPU、流处理、流处理器)器)12摩尔定律发展过程中碰到的“墙” 1980s:存储墙:存储墙 CPU变快,内存只变大不变
11、快变快,内存只变大不变快 80%的晶体管用于片内高速缓存等的晶体管用于片内高速缓存等 2000s:功耗墙:功耗墙 一一Intel放弃放弃4GHz的的Pentium IV为标志,终止复杂的高主频设计为标志,终止复杂的高主频设计 多核设计成为主流多核设计成为主流 未来还有可能碰到的未来还有可能碰到的“墙墙” 带宽墙:带宽墙:“茶壶里倒饺子茶壶里倒饺子”(性能和带宽(性能和带宽1-2FLOPS:1BPS的关系)的关系) 成本墙:太贵了做不起(目前只剩成本墙:太贵了做不起(目前只剩Intel、IBM、TSMC三家)或用三家)或用不起(不起(10nm以后单片成本反而增加)以后单片成本反而增加) 应用墙:
12、应用墙:16核以上的核以上的CPU卖给谁?量大面广的应用需要多少核?卖给谁?量大面广的应用需要多少核? 如果克服不了上述如果克服不了上述“墙墙”,通用,通用CPU的摩尔定律到的摩尔定律到2015年即告终止年即告终止13带宽障碍 摩尔定律的新定义摩尔定律的新定义 片内处理器核的个数指数增长片内处理器核的个数指数增长 封装引脚增加缓慢封装引脚增加缓慢 每个核使用的引脚数指数下降每个核使用的引脚数指数下降 茶壶里倒饺子茶壶里倒饺子 高速信号传输缓解带宽瓶颈高速信号传输缓解带宽瓶颈 目前引脚上的信号频率已经达到目前引脚上的信号频率已经达到GHz 很快会出现板上频率高于片内频率的现象很快会出现板上频率高
13、于片内频率的现象14提高计算机的性能:减少指令数和提高IPC 结构提高计算机性能的常用方法和原则结构提高计算机性能的常用方法和原则 加快经常性事件的速度加快经常性事件的速度 局部性原理局部性原理 利用并行性利用并行性归一化时间计算方法当负载中各程序的执行百分比不同时,计算加权执行时间是一种方法,当负载中各程序的执行百分比不同时,计算加权执行时间是一种方法,另一种方法是另一种方法是“归一化归一化”。就是说,将执行时间对一台参考机器进行归。就是说,将执行时间对一台参考机器进行归一化,然后取其归一化执行时间的平均值。一化,然后取其归一化执行时间的平均值。SPEC测试程序套件采用了测试程序套件采用了该
14、方法。该方法。平均归一化时间既可表示为算术平均值,也可表示为几何平均值。平均归一化时间既可表示为算术平均值,也可表示为几何平均值。15影响CPU性能的因素Inst. CountCPIClock RateProgramXCompilerX(X)ISAXXOrganizationXX TechnologyX CycleSecondsnInstructioCyclesogramnsInstructioogramSecondsCPUTimePrPr 性能的最本质定义性能的最本质定义 完成一个任务(如后天的天气预报)所需的时间完成一个任务(如后天的天气预报)所需的时间 以指令为基本单位以指令为基本单位1
15、6Count n InstructioCPI Time CycleI CPI Time Cycle timeCPU1jnjjCountn InstructioI F whereF CPI CPI1jjnjjjCPI及IPC 在指令系统确定后,系统结构设计者的主要目在指令系统确定后,系统结构设计者的主要目标就是降低标就是降低CPI或提高或提高IPC 平均平均CPI“Average Cycles per Instruction” CPI = (CPU Time * Clock Rate) / Instruction Count = Cycles / Instruction Count Instru
16、ction Frequency17开发并行性 指令级并行指令级并行 是过去的是过去的20年里体系结构设计者提升性能的主要途径年里体系结构设计者提升性能的主要途径 时间并行性:指令流水线时间并行性:指令流水线 空间并行性:空间并行性:SuperScalar(Out-of-Order)和)和EPIC(编译器优化)(编译器优化) 进一步挖掘指令级并行的空间不大进一步挖掘指令级并行的空间不大 数据级并行:数据级并行:SIMD 向量机向量机 SSE多媒体指令多媒体指令 作为指令级并行的有效补充,在高性能计算及流媒体等领域发挥重作为指令级并行的有效补充,在高性能计算及流媒体等领域发挥重要作用,在专用处理器
17、中应用较多要作用,在专用处理器中应用较多 线程级并行线程级并行 线程级并行大量存在于线程级并行大量存在于Internet应用应用 多核处理器多核处理器 多线程处理器多线程处理器 是目前的热点是目前的热点18低功耗优化方法 优化对象优化对象 动态功耗优化动态功耗优化 静态功耗优化静态功耗优化 优化层次优化层次 系统级系统级 算法级算法级 逻辑级逻辑级 电路级电路级 版图及工艺级版图及工艺级1.在三台不同指令系统的计算机上运行同一程序在三台不同指令系统的计算机上运行同一程序P时,时,A机需要执行机需要执行1.0*108条指令,条指令,B机需要执行机需要执行2.0*108条指条指令,令,C机需要执行
18、机需要执行4.0*108条指令,但实际执行时间都是条指令,但实际执行时间都是10秒,请分别计算这三台机器在实行程序秒,请分别计算这三台机器在实行程序P时的实际时的实际运行速度,以运行速度,以MIPS为单位。这三台计算机在运行程序为单位。这三台计算机在运行程序P时,哪台性能最高?为什么?时,哪台性能最高?为什么?2. 如果要给标量处理器增加向量运算部件,并且假定向量模式的运算速度是标量模式的如果要给标量处理器增加向量运算部件,并且假定向量模式的运算速度是标量模式的8倍,这里把向量模式所倍,这里把向量模式所占的百分比时间称作向量化百分比。占的百分比时间称作向量化百分比。a) 画出一张图来表示加速比
19、和向量化百分比的关系,画出一张图来表示加速比和向量化百分比的关系,X轴为向量化百分比,轴为向量化百分比,Y轴为加速比。轴为加速比。b) 向量化百分比为多少时,加速比能达到向量化百分比为多少时,加速比能达到2?当加速比达到?当加速比达到2时,向量模式占了运算运行时间的百分之多少?向时,向量模式占了运算运行时间的百分之多少?向量化百分比为多少时,加速比能达到最大加速比的一半?量化百分比为多少时,加速比能达到最大加速比的一半?c) 假设程序的向量化百分比为假设程序的向量化百分比为70%。如果需要继续提升处理器的性能,一种方法是增加硬件成本将向量部件的。如果需要继续提升处理器的性能,一种方法是增加硬件
20、成本将向量部件的速度提高一倍,另外一种方法是通过改进编译器来提高向量模式的应用范围,那么需要提升多少向量化百分速度提高一倍,另外一种方法是通过改进编译器来提高向量模式的应用范围,那么需要提升多少向量化百分比才能得到与向量部件运算速度提高一倍得到相同的性能?你推荐哪一种设计方案?比才能得到与向量部件运算速度提高一倍得到相同的性能?你推荐哪一种设计方案?3. 假设有一个代表典型应用的基准测试程序。一款不包含浮点部件的处理器(可以通过整数指令的模拟来执行浮假设有一个代表典型应用的基准测试程序。一款不包含浮点部件的处理器(可以通过整数指令的模拟来执行浮点指令)运行该基准程序的运行速度是点指令)运行该基
21、准程序的运行速度是120MIPS,在该处理器上增加浮点协处理器后运行该基准程序的运行,在该处理器上增加浮点协处理器后运行该基准程序的运行速度是速度是80MIPS。下面给出了一些参数:。下面给出了一些参数:I基准测试中整数指令的数目,基准测试中整数指令的数目,F基准测试中浮点指令的数目,基准测试中浮点指令的数目,Y模拟一条浮点指令需要的整数指令的数目,模拟一条浮点指令需要的整数指令的数目,W无浮点协处理器时基准程序的运行时间,无浮点协处理器时基准程序的运行时间,B有浮点协有浮点协处理器时基准程序的运行时间。处理器时基准程序的运行时间。a) 用上面的参数符号表示出两种配置处理器的用上面的参数符号表
22、示出两种配置处理器的MIPS值。值。b) 在没有协处理器的配置下,假定在没有协处理器的配置下,假定F=8*106,Y=50,W=4秒,求秒,求I的值。的值。c) 在上题的条件下,求在上题的条件下,求B的值。的值。d) 在包含协处理器的配置下,系统的在包含协处理器的配置下,系统的MFLOPS是多少?是多少?e) 你的同事想要购买这种协处理器来提高性能,而该配置下你的同事想要购买这种协处理器来提高性能,而该配置下MIPS降低了,请问他的决策正确吗?解释你的观降低了,请问他的决策正确吗?解释你的观点点5. 对某处理器进行功耗测试,得到如下数据:时钟不翻转,电压对某处理器进行功耗测试,得到如下数据:时
23、钟不翻转,电压1.2V时,电流为时,电流为500mA;时钟频率为;时钟频率为1GHz,电,电压压1.2V时,电流为时,电流为2500mA。请计算此处理器的静态功耗以及。请计算此处理器的静态功耗以及500MHz下的总功耗。下的总功耗。1. 解:解:A 为为10MIPS,B 为为20MIPS,C 为为40MIPS。三台机器实际性能相同。三台机器实际性能相同。2. 解:加速比解:加速比y 与向量化比例与向量化比例x 之间的关系是:之间的关系是:y=1/(1-x)+x/8)=1/(1-7x/8)(A)(2) 在式在式(A)中令中令y=2,可解得,可解得x=4/757.14%。此时向量模式运行时间占总时
24、间比例是此时向量模式运行时间占总时间比例是(4/7)/8)/(3/7+(4/7)/8)=1/7=14.29%(3) 硬件方法,整体加速比为硬件方法,整体加速比为1/(1-0.7*(1-1/16)=2.91软件方法,设相同加速比下向量化比例为软件方法,设相同加速比下向量化比例为x,即,即1/(1-7x/8)=2.91, x=0.75所以推荐软件方法。所以推荐软件方法。3. 解:解:(1) MIPSEMUL=(I+FY)/(W106) ;MIPSFPU=(I+F)/(B106)(2) 120=(I+810650)/(4106) = I=80106(3) 80=(80106+8106)/(B106)
25、 = B=1.1(4) MFLOPS=F/(B-(W*I)/(I+F*Y) 106)18.46(5) 决策正确,因为执行时间缩短了,这才是关键标准。决策正确,因为执行时间缩短了,这才是关键标准。5. 解:解:1.1V 下静态功耗下静态功耗1.1*1.1/(1.05/0.5)=0.576W1.1V 下下1GHZ 时动态功耗为时动态功耗为1.1*2.5-0.576=2.174W1.1V 下下0.5GHZ 功耗功耗为功耗功耗为2.174*0.5/1=1.087W1.1V 下下0.5GHZ 总功耗为总功耗为1.087+0.576=1.663W2021二二. 二进制与逻辑电路二进制与逻辑电路 计算机中数
26、的表示计算机中数的表示 CMOS门电路及工艺门电路及工艺 CMOS组合逻辑与时序逻辑组合逻辑与时序逻辑 CMOS电路延迟电路延迟 从从Verilog到到GDSII 其它其它“0”和和“1”表示方法表示方法22计算机中数的表示 二进制二进制 最容易逻辑实现最容易逻辑实现 自然界中的二值系统较多自然界中的二值系统较多 “1”和和“0”的表示的表示 用电压的高低表示,半导体工艺,用电压的高低表示,半导体工艺,CMOS 用磁通量的有无表示,超导体工艺用磁通量的有无表示,超导体工艺 用能级的高低表示,量子计算机用能级的高低表示,量子计算机 用基因序列表示,用基因序列表示,A, G, C, T, DNA计
27、算机,计算机,非二进制?非二进制?23定点数的表示(1) 原码:原码: A=an-1 an-2. a1 a0表示表示 最高位最高位an-1为符号位,为符号位,0表示正,表示正,1表示负。表示负。 其它位其它位an-2. a1 a0表示数值。表示数值。 原码的问题:加减法效率低,两个原码的问题:加减法效率低,两个“0” 补码补码 本质是取模运算,如本质是取模运算,如-2%12=10 最高位最高位an-1为符号位,为符号位,0表示正,表示正,1表示负。表示负。 A=an-1 an-2. a1 a0表示表示(-2n-1 an-1 + an-2. a1 a0) an-1=0时,补码和原码一样,时,补码
28、和原码一样, A表示正表示正an-2. a1 a0 。 an-1=1时,时, A表示表示(-2n-1 + an-2. a1 a0) 。 原码与补码的转换原码与补码的转换 最高位为最高位为0时,一样时,一样 最高位为最高位为1时,最高位不变,其余位时,最高位不变,其余位“按位取反加一按位取反加一”。24定点数的表示(2)+18-188 位原码位原码00010010100100108 位补码位补码000100101110111016 位原码位原码0000000000010010100000000001001016 位补码位补码00000000000100101111111111101110 补码运
29、算补码运算 取负数,每一位取负数,每一位(包括符号位包括符号位)求补,即按位取反加一。求补,即按位取反加一。 A-B=A+B的负数的负数=A+(B求补求补) 加法溢出判断:加法溢出判断:A和和B的最高位一样,且结果的最高位与的最高位一样,且结果的最高位与A和和B的最高的最高位不一样。位不一样。 1001+0101(-7+5)=1110, 1100+0100(-4+4)=0000, 0011+0100(3+4)=0111, 1100+1111(-4-1)=1011, 0101+0100(5+4)=1001, 1001+1010(-7-6)=001125浮点数的表示(1) 定点数的不足定点数的不足
30、 表示范围有限,太大或太小的数都不能表示表示范围有限,太大或太小的数都不能表示 除法不精确除法不精确 浮点数的表示:浮点数的表示:IEEE 754标准标准 三部分组成:符号位,阶码三部分组成:符号位,阶码(exponent),尾数,尾数(fraction) 最高位是符号位最高位是符号位 阶码的移码表示,底为阶码的移码表示,底为2,2(阶码阶码-偏移值偏移值) 规格化表示,尾数的最高位总为规格化表示,尾数的最高位总为1,因此可以不存,因此可以不存 单精度和双精度单精度和双精度 扩展的单双精度扩展的单双精度S Exp. (8)Fraction(23)SExp. (11)Fraction(52)26
31、浮点数的表示(2) IEEE 754 浮点格式参数浮点格式参数参参数数单单精精度度扩扩展展单单精精度度双双精精度度扩扩展展双双精精度度字字长长32=4364=79阶阶码码位位数数8=1111=15阶阶码码偏偏移移量量127未未定定1023未未定定最最大大阶阶码码127=10231023=16383最最小小阶阶码码-126=-1022-1022=3152=63阶阶码码个个数数254未未定定2046未未定定尾尾数数个个数数223未未定定252未未定定值值的的个个数数1.98*231未未定定1.99*263未未定定1. 定点数的表示定点数的表示 分别给出分别给出64位定点原码和补码表示的数的范围;位
32、定点原码和补码表示的数的范围; 在在32位定点补码表示中,位定点补码表示中,0 x80000000表示什么数?表示什么数?2. 按照以下要求将浮点数表示出来按照以下要求将浮点数表示出来把单精度数转化为十进制数:把单精度数转化为十进制数:0 x7ff0000, 0 xbe400000, 0 xff800000把双精度数转化为十进制数:把双精度数转化为十进制数:0 x4035000000000000, 0 x8008000000000000把十进制数转化为单精度数:把十进制数转化为单精度数:-100.0, 0.25把十进制数转化为双精度数:把十进制数转化为双精度数:1024.0, 0.25271.
33、 解:(1) -(263-1), 263-1和-263, 263-1(2) -2312. 解:(1)0 x7ff0000=0,0000 1111,111 1111 0000 0000 0000 0000=(1.1111111)2*2(15-127) =3.8368135610839464260099560574934e-34 0 xbe400000=1,0111 1100,100 0000 0000 0000 0000=-(1.1)2*2(124-127)=-0.1875 0 xff800000=1,1111 1111,000 0000 0000 0000 0000=-(2)0 x403500
34、0000000000=0,10000000011,010100000000000000000000000000000000 0000 000000000000=(1.0101)2*2(1027-1023)=21 0 x8008000000000000 = 1,00000000000,1000000000000000000000000000000000000000000000000000 =-(0.1)2*2-1022=-2-1023(3)-100.0=-(1.100100)2*26=0b1 10000101 10010000000000000000000=0 xc2c80000 0.25=(1
35、.0)*2-2=0b0 01111101 00000000000000000000000=0 x3e800000;(4)1024.0=(1.0)*210=0 x4090000000000000 0.25=(1.0)*2-2=0 x3fd00000000000002829三. 指令系统结构ISA 指令系统结构的设计原则指令系统结构的设计原则 影响指令系统结构的因素影响指令系统结构的因素 指令系统的分类指令系统的分类 指令系统的组成指令系统的组成 RISC指令系统结构指令系统结构 RISC系统结构的简史系统结构的简史 不同不同RISC结构的比较结构的比较30指令系统的设计原则 指令系统在计算机中的
36、位置指令系统在计算机中的位置 硬件和软件的界面硬件和软件的界面 设计要求设计要求 兼容性:在很长时间内保持不变,如兼容性:在很长时间内保持不变,如X86 通用性:编译器或程序员觉得好用,有较多功能,通用性:编译器或程序员觉得好用,有较多功能,适合于各种应用适合于各种应用 高效性:便于高效性:便于CPU设计的优化,不同的实现方法得设计的优化,不同的实现方法得到不同的性能到不同的性能 安全性:支持通用操作系统,考虑不同的安全要求安全性:支持通用操作系统,考虑不同的安全要求31指令系统的分类 从功能上分类从功能上分类 算术与逻辑运算、转移、访存、系统指令算术与逻辑运算、转移、访存、系统指令 从指令使
37、用数据的方式从指令使用数据的方式 堆栈型、累加器型、寄存器型堆栈型、累加器型、寄存器型. 从指令编码从指令编码 定长、变长定长、变长32指令系统的类型 堆栈型(堆栈型(Stack):零地址指令):零地址指令 操作数在栈顶,运算操作不用指定操作数操作数在栈顶,运算操作不用指定操作数 累加器型(累加器型(Accumulator):单地址指令):单地址指令 一个操作数总在累加器中,结果也写回累加器一个操作数总在累加器中,结果也写回累加器 寄存器型(寄存器型(Register):多地址指令):多地址指令 Register-Register型型 Register-Memory型型 Memory-Memo
38、ry型型33指令系统的组成 指令的主、谓、宾指令的主、谓、宾 CPU、操作、操作数、操作、操作数 操作数操作数 数据类型:定点数据类型:定点/浮点,浮点,32位位/64位位 访存对象:字节访存对象:字节/半字半字/字字/双字,大双字,大/小尾端小尾端 寻址方式:寄存器、立即数、直接、间接寻址方式:寄存器、立即数、直接、间接. 操作操作 算术与逻辑运算、转移、访存、系统指令算术与逻辑运算、转移、访存、系统指令 指令访问控制:转移指令指令访问控制:转移指令 指令编码指令编码 定长、变长定长、变长34寻址方式 如何在指令中表示访存地址如何在指令中表示访存地址寻寻址址方方式式格格式式含含义义Regis
39、terADD R1, R2regsR1=regR1+regR2ImmediateADD R1, #2regsR1=regR1+2DisplacementADD R1, 100(R2)regsR1=regR1+mem100+regR2Reg. IndirectADD R1, (R2)regsR1=regR1+memregR2IndexedADD R1, (R2+R3)regsR1=regR1+memregR2+regR3AbsoluteADD R1, (100)regsR1=regR1+mem100Mem. IndirectADD R1, (R2)regsR1=regR1+memmemregR2
40、AutoincrementADD R1, (R2)+regsR1=regR1+memregR2,regR2=regR2+dAutodecrementADD R1, -(R2)regR2=regR2-d,regsR1=regR1+memregR2ScaledADD R1, 100(R2)R3regsR1=regR1+mem100+regR2+regR3*d35寻址方式小结 至少支持以下寻址方式至少支持以下寻址方式 Register Immediate Displacement Register indirect 指令中常数位数指令中常数位数 地址偏移量位数地址偏移量位数12-16位位 立即数位数
41、立即数位数8-16位位36转移指令 转移指令类型转移指令类型 条件转移条件转移/无条件转移无条件转移 过程调用过程调用/过程返回过程返回 转移地址类型转移地址类型 相对:相对:PC+偏移量偏移量 绝对:指令中给出转移地址绝对:指令中给出转移地址 间接:根据寄存器内容转移(编译器不知道目标地址),间接:根据寄存器内容转移(编译器不知道目标地址),如如Switch语句、函数指针、动态链接、过程返回等语句、函数指针、动态链接、过程返回等37指令编码 需要考虑的因素需要考虑的因素 操作码部分比较简单操作码部分比较简单 操作数的个数、类型对指令长度影响很大操作数的个数、类型对指令长度影响很大 变长指令程
42、序代码短、定长指令实现简单变长指令程序代码短、定长指令实现简单 编码方法编码方法 定长:定长:RISC 变长:变长:VAX的指令的指令1-53字节,其中字节,其中ADD指令指令3-19字节,字节,Intel的的X86指令指令1-17字节字节 混合:混合:IBM 360/370,MIPS16,Thumb,TI TMS320C54x38MIPS指令类型 访存指令(包括定点和浮点)访存指令(包括定点和浮点) 运算指令运算指令 (包括定点和浮点)(包括定点和浮点) 比较和转移指令(包括定点和浮点)比较和转移指令(包括定点和浮点) 系统管理指令系统管理指令 TLB、CACHE、例外处理、例外处理 TRA
43、P、Breakpoint39常见RISC指令系统比较 通过比较常见通过比较常见RISC处理器的指令系统加深对处理器的指令系统加深对RISC的了解的了解 MIPS、PA-RISC、PowerPC、SPARC 通过以下方面进行比较通过以下方面进行比较 指令格式指令格式 寻址方式寻址方式 指令功能指令功能40指令格式比较指令格式比较OP(6)RS1(5)RS2(5)Const(16)MIPSOP(6)RD(5)RS1(5)Const(16)PowerPCOP(6)RS1(5)RS2(5)Const(11)OPX(6)PA-RISCRS1(5)1RD(5)OP(2)OPX(6)Const(13)SPA
44、RCOP(6)RS1(5)RS2(5)RD(5)SA(5)OPX(6)MIPSOP(6)RD(5)RS1(5)RS2(5)OPX(11)PowerPCOP(6)RS1(5)RS2(5)RD(5)OPX(11)PA-RISCRS1(5)RS2(5)0RD(5)OP(2)OPX(6)OPX(8)SPARCOP(6)RS1(5) OPX/RS2Const(14)MIPSOP(6)OPX(5)RS1(5)Const(16)PowerPCOP(6)RS1(5)RS2(5)Const(11)OPX(3)PA-RISCOP(2)OPX(11)Const(19)SPARCOPXO COP(6)Const(24
45、)MIPSOP(6)Const(26)PowerPCOP(6)RS1(5)RS2(5)Const(14)PA-RISCOP(2)Const(30)SPARCOPXO CReg-RegReg-ImmBranchJump/Call41指令功能比较 所有所有RISC处理器都有一些公共指令处理器都有一些公共指令 load/store指令指令 算术运算及逻辑指令算术运算及逻辑指令 控制流指令控制流指令 系统管理指令系统管理指令 不同处理器在发展过程中形成的特色举例不同处理器在发展过程中形成的特色举例 MIPS的非对齐访问的非对齐访问 SPARC的寄存器窗口的寄存器窗口 PowerPC的的Link和和Co
46、unt寄存器寄存器 HP的的Nullification 1. 给定下面的代码片段:A=B-C;D=A-C;B=D+A;a) 分别写出上述代码片段在四种指令系统类型(堆栈型、累加器型、寄存器-存储器型、寄存器-寄存器型)下的汇编语言代码。b) 假设操作码占用8位编码,内存地址和操作数都是16位,寄存器型结构有16个通用寄存器。对每种结构回答以下问题:1)需要读取多少指令字节?2)与内存交换的数据有多少字节?3)依据代码量衡量哪种结构最好?4)依据与内存交换的数据(指令和数据)量衡量哪种结构最好?2. 16 进制数 0 x4C4F4F4E47534F4E 要存在 64 位双字中。 a) 假设存储是
47、 假设存储是 8字节对齐的,请依据小尾端格式将此 16进制数写入内存中,并将每个 字节解释为一个 ASCII 字 符写在对应的字 节下边。b)按照大尾端的格式重做上题。3.假定在指令系统设计中需要考虑两种条件转移指令的设计方法,这两种方法如下。1)CPU A:先通过一条比较指令设置条件码A,再用一条分支指令检测条件码。2)CPU B:比较操作包含在分支指令中在两种CPU中,条件转移指令都需要两个时钟周期,所有其他指令都需要一个时钟周期。在CPU A 中,全部指令的25%是条件转移指令,因为每次条件转移都需要一次比较,所以比较指令约占所有指令的25%,因为CPU A 不需要在转移中包含分支,所以
48、它的时钟频率是CPU B的1.2倍。请问哪一种CPU性能更高?如果CPU A的时钟频率只是CPU B 的1.1倍,结果又是多少?4. 如果对通常的MIPS指令集增加寄存器-内存形式的指令,如下所示,可以减少一些load数量。Lw $1, 0($n) add $2, $2, $1可以合并成一条指令:add $2, 0($n)1) 给出一段符合上述例子的代码(load得到的值立即作为运算指令的源操作数), 但是编译器依然无法用寄存器-内存形式的指令消除这条load指令。2)假设这样的修改带来了5%的主频下降,同时没有CPI影响。如果load占所有指令的26%,最少要消灭load指令的百分之多少,才
49、能使得新指令集不导致性能下降?3)在传统的静态5级流水线上,寄存器-内存形式的指令有何实现困难?5. 根据MIPS指令的编码格式回答下列问题。1)条件转移指令的跳转范围是多少?2)直接跳转指令的跳转范围是多少?6.用MIPS的LWL/LWR/SWL/SWR指令编写一段程序,把内存单元10051008的值取到寄存器R1,再存到内存单元20052008中。7. 用MIPS的LL/SC指令编写一段从内存单元100(R2)取数,把取出来的数加100并存回到100(R2)的原子操作代码,并说明如果在此过程中处理器发生中断或该单元被其他处理器修改时处理器如何保证上述操作的原子性。44堆栈型堆栈型累加器型累
50、加器型寄存器寄存器-存储器存储器型型寄存器寄存器-寄存寄存器型器型汇编代码Push B; Push CSub; Pop APush A; Push CSub;Pop DPush D; Push AAdd; Pop BLoad C;NegAdd B; Store ALoad C;NegAdd A;Store DAdd A;Store BLoad R1,BSub R1,CStore R1,ASub R1,CStore R1,DAdd R1,AStore R1,BLoad R1,BLoad R2,CSub R3,R1,R2Store R3,ASub R4,R3,R2Store R4,DAdd R5,