您好,欢迎访问三七文档
RISC微处理器技术RISC技术概述一、起源CISC—ComplexInstructionSetComputerRISC—ReducedInstructionSetComputer指令集:控制器设计的基础计算机工作过程:各种信息在受控状态下的流动过程。受控的体现:时间的控制操作应在什么时间进行并完成时机的控制操作什么时刻进行(定时)方向的控制信息流动的起点与终点表现形式门电路的开和关信号、打入脉冲等。执行的指令和机器的状态控制依据指令功能分解结合时序完成上述控制—组合逻辑设计指令功能分解成微操作-结合时序信号-逻辑表达式综合并化简-逻辑电路实现例:(1)执行指令:ADDR1,R2硬件模型完成:R1+R2R1+R0CLK+R0EN+Lat1ALU锁存器2锁存器1R0Rn+Lat2将指令执行分为三个阶段:取指(FET)执行(EXE)译码(DE)+R1EN+Lat1+R2EN+Lat2根据取指(FET)—译码(DE)—执行(EXE)①在执行阶段所需微操作序列:+R1CLK;R1内容输出到内部总线;锁存器1的打入脉冲;R2内容输出到内部总线;锁存器2的打入脉冲;相加结果打入R1②结合时序FETDEEXET1T2T3T4.....+R1EN=+ADD·EXE·T1+Lat1=+ADD·EXE·T1+R2EN=+ADD·EXE·T2+Lat2=+ADD·EXE·T2+R1CLK=+ADD·EXE·T4(节拍T3等待加法器完成加法操作)(T1表示在上升沿,T1表示在下降沿)综合简化后逻辑实现:微命令序列运行状态指令译码…...微命令发生器(各种门电路构成)时序优点:硬件实现,速度快缺点:设计过程及电路复杂;修改困难;更新换代困难;—微程序设计指令功能分解成微操作-微操作编码-存入微程序ROM-微命令译码结合时序-完成功能微地址译码器微指令微地址优点:缺点:微命令实现,速度较慢设计过程及电路相对简单;修改和更新换代更容易。采用微程序设计的另一原因:处理器与存储器速度的矛盾传统处理器设计的难题:速度、复杂性、设计周期等矛盾—对指令系统进行的研究,统计表明:软件中大部分指令为简单指令(约80%),复杂指令只占少数(约20%);(如指令:ADC[变址寻址],立即数;复杂指令)软件中的简单指令约占总运行时间的20%,复杂指令约占总运行时间的80%;造成控制电路复杂的主要原因是由于复杂指令的存在;—结论及试验从指令集中去掉复杂指令,复杂指令功能由软件实现.可简化电路设计,去掉微程序,采用硬连控制方法,提高处理器速度。说明:复杂指令功能由软件实现与提高速度相矛盾?-复杂指令使用频率较低;-去掉微程序,采用硬件控制,提高了速度-简单指令有利于流水线执行-简化电路节省了芯片面积,利于增加Cache容量结论:整体性能有较大提高RISC处理器的出现二、RISC处理器特征描述1.简单固定的指令格式指令长度固定指令长度无需译码,简化了译码电路并节省了长度译码时间;指令长度设定为总线宽度,保证取指令码一个总线周期完成,避免了多周期取指造成的流水线阻塞;指令字段位置固定使得指令译码与取源操作数并行;指令意义简单:功能单一,简化硬件逻辑2.减少寻址方式和指令数量作为简化硬件逻辑的措施之一。尽量只使在单周期执行完成;3.流水线(或超级流水线)RISC的设计思想更利于指令按流水线方式的运行。4.大容量高速缓存节省的芯片面积有利于集成大容量高速缓存;缓存更多的指令和数据,减少访存次数。5.大量寄存器减少访存,提高执行速度;上下文切换尽可能在寄存器中完成以简化的指令集为基础,提高指令速度。6.硬连控制(去掉微程序)7.采用存取式体系结构(Load/Store结构)仅专门的访存指令才允许访存。避免执行周期访存造成的流水线阻塞。比如指令:ADDCX,20[BP][SI]在RISC结构是不允许的。8.优化编译技术对编译器的要求较高。在编译时,要按照指令执行速度的快慢以及CPU的流水线深度等合理调整机器代码的顺序,使CPU最大限度地让流水线并行执行。如:①调整指令执行顺序源程序:ADDR0,R1,R2ADDR2,R3,R4MOVR7,R8优化后的指令顺序:ADDR0,R1,R2MOVR7,R8ADDR2,R3,R4②指令顺序调整结合变量重命名源程序:ADDR1,R2,R3ADDR3,R4,R5MULR6,R7,R3MULR3,R8,R9优化后的指令顺序:ADDR1,R2,R3MULR6,R7,R0ADDR3,R4,R5MULR0,R8,R9由于四条指令均与R3有关,仅通过调整顺序难以优化。因此重新命名一个变量R0。Intel860处理器(i860)一、i860的组成(1)4K指令Cache(2)8K数据Cache(3)总线控制部件(4)存储管理部件(5)浮点控制部件(6)浮点加法及乘法部件(7)三维图形处理部件(8)RISC核心地址总线:32位数据总线:32位指令Cache可同时发送两条指令,一条发送到RISC核心,另一条发送到浮点部件.(一)RISC核心1.功能指令读入、数据存取、以及除浮点运算外的其它指令操作2.指令格式32位定长指令;指令中操作码、源操作数、目标操作数字段位置固定3.寄存器(使指令译码与取源操作数可以并行)。32个32位寄存器r31~r0存放操作数、运算结果、间址和变址等地址量RISC核心采用4级指令流水线。取指译码执行写结果4.指令流水线5.存取式体系结构*流水线情况分析访存指令:Load/Store前述的可能造成流水线阻塞的原因:无条件转移指令;条件转移指令,预测错误。指令太长,一个周期未能取出全部指令码;指令功能复杂,一个执行周期不能完成;在RISC结构中无条件转移指令;条件转移指令,预测错误。转移指令无条件转移指令:ADDMOV1MOV2JMPNT2NT1:SUB.....NT2:AND流水线情况:FDEWFDEWFDEWFDEWAND阻塞三个周期解决措施:(1)硬件自动冻结流水线周期(2)延迟转移技术ADDMOV1MOV2JMPNT2NT1:SUB.....NT2:ANDJMPNT2ADDMOV1MOV2NT1:SUB.....NT2:AND调整后的顺序这一方法也称为指令重调度。(3)插入空操作指令(指令重调度)ADDMOV1MOV2JMPNT2NOPNOPNOPNT1:SUB.....NT2:ANDi860采用通过系统软件的指令重调度。可由硬件实现也可由软件实现转移指令可能引起流水线阻塞,这种情况称为控制相关(也称为指令相关)。对条件转移指令:数据相关ADDAX,BXINCAXMOVCX,DX...ADDAX,BXMOVCX,DXINCAX...解决方法:硬件自动冻结周期或指令重调度采用分支预测或指令重调度i860采用指令重调度引发流水线阻塞的另一因素i860采用指令重调度即:当前指令等待前面指令的执行结果。FDEWFDEWFDEWFDEW资源冲突资源冲突的典型情况:对存储器的访问如下图的指令流水线:如果该阶段出现访存(如ld/St指令),则与第三条指令的取指操作冲突。若访存,与第四条指令的的取指操作冲突。(注:CISC结构同样存在资源冲突,并出现流水线阻塞)解决措施:硬件自动冻结(阻塞)某一个周期FDEWFDEWFDEWFDEW或者:FDEWFDEWFDEWFDEW假设第一条指令的执行与第三条指令的取指冲突。从结构设计上避免冲突指令Cache和数据Cache分离,使取指和取数相互独立,如Pentium和i860均采用该结构。或者:同一Cache,指令端口和数据端口分离,可同时访问两个不同端口。(二)浮点部件1.组成浮点控制器浮点加法器浮点乘法器2.寄存器f31~f032个32位浮点寄存器两个寄存器可在逻辑上构成一个64位寄存器;四个寄存器可在逻辑上构成一个128位寄存器;3.浮点部件与RISC核心的并行(1)单指令模式(SIM)RISC核心与浮点部件按程序中指令流的顺序执行。一次发出一条指令(整数指令或浮点指令)。指令串行发出,但整数指令和浮点指令的执行过程在时间上是可以重叠的。(2)双指令模式(DIM)利用指令64位的双端口指令Cache,同时发出两条指令。一条整数指令一条浮点指令RISC核心浮点部件FDEWFDE1E2E3W整数Ins1浮点Ins1FDEWFDE1E2E3W整数Ins2浮点Ins2FDEWFDE1E2E3W整数Ins3浮点Ins3注:浮点运算至少需要三个执行周期如何实现一条整数指令和一条浮点指令的并发?汇编编程:应用设计者高级语言:编译程序二、i860指令系统例两大类:整数指令整数和浮点数的存取指令算术及逻辑运算指令转移指令整数寄存器与浮点寄存器间的数据传送指令浮点指令浮点数据加、减、比较等浮点数乘、倒数、平方根等(一)整数指令1.整数的存取(1)取数指令ld.xisrc1(isrc2),idest其中:isrc2和idest为r31~r0之一;isrc1为16为立即数或r31~r0之一;完成:(isrc1+isrc2)idest指令后缀:.x.b.s.l取8位数据取16位数据取32位数据取数指令例:①ld.l0(r14),r15完成(0+r14)r15;间接寻址②ld.l8(r14),r15③ld.lr13(r14),r15变址寻址④ld.l64(r0),r15r0≡0,直接寻址r0恒为0,与执行的操作无关。subur5,r4r0;产生比较指令提供直接寻址作用如:通过逻辑运算,为某个寄存器赋0值可以体现精简指令的特点。(2)存数指令st.xisrc1,const(isrc2)完成:isrc1(const+tisrc2)其中:isrc1和isrc2为寄存器,const为16位立即数例:st.lr1,64(r2);r1(64+r2)2.浮点数的存取(1)取数fld.yisrc1(isrc2),fdest完成:(isrc1+isrc2)fdestisrc2为整数寄存器;isrc1为16为立即数或整数寄存器;fdest为浮点寄存器。(2)存数fst.yfreg,isrc1(isrc2)完成:freg(isrc1+isrc2)freg为浮点寄存器;isrc1和isrc2与取数指令的规定相同。浮点数传送支持32位、64位和128位;后缀y指明数据传送宽度:.y.l.d.q32位数据传送64位数据传送128位数据传送例:fld.d0(r3),f20;fld.q0(r3),f20;64位数f20:f21128位数f20:f21:22:f233.ireg与freg之间的数据传送FxFrfsrc,idest;完成:fsrcidestIxFrisrc,fdest;完成:isrcfdest4.算术运算指令统一格式:Opcodeisrc1,isrc2,idestisrc1Opisrc2idest完成运算:加法:Addsisrc1,isrc2,idestAdduisrc1,isrc2,idest减法:Subsisrc1,isrc2,idestSubuisrc1,isrc2,idestisrc1为立即数或寄存器,其余参数为寄存器5.逻辑运算指令“与”:Andisrc1,isrc2,idestAndhconst,isrc2,idest“高位与”:将16位立即数const与寄存器isrc2的高16位进行“与”操作,结果idest“或”:“高位或”:orisrc1,isrc2,idestorhconst,isrc2,idest“异或”:“高位异或”:xorisrc1,isrc2,idestxorhconst,isrc2,idest注:i860未提供一些实现简单功能的指令。如:整数寄存器之间的数据传送;立即数送某个寄存器等逻辑运算指令例:①完成:1234Hr5②完成:12345678Hr5or1234,r0,r5③完成:r2r3or5678,r0,r5orh1234,r5,r5orr0,r2,r36.移位指令左移:shlisrc1,isrc2,idest完成
本文标题:5-RISC技术
链接地址:https://www.777doc.com/doc-1393284 .html