清华大学-微机原理课件-CPU设计ALU

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1CPU逻辑设计——ALU电路设计2MIPS对ALU的需求„Add,AddU,Sub,SubU,AddI,AddIU=带溢出检测和反向器的补码加法器„SltI,SltIU(SetLessthan)=带反向器的补码加法器,检测结果的符号„And,Or,AndI,OrI=逻辑或、逻辑与3MIPS对ALU的需求„Xor,Nor,XorI=逻辑异或、逻辑或非(或者两步策略)(AORB)XOR1111…1111„SLL,SRL,SRA=需要进行0~31位的左移、右移、算术右移运算„Mult,MultU,Div,DivU=需要有符号、无符号的32位乘法和除法4ALU电路设计1、ALU电路设计(1)逻辑运算器(2)移位器(3)加减法器(4)乘法器(5)除法器(6)浮点运算器2、ALU电路设计实例51、ALU电路设计„ALU(ArithmeticandLogicUnit,算术逻辑单元)是CPU的重要组成部分,其功能是对数据进行加工处理„不同计算机的ALU功能各异,但是一般都具有算术运算、逻辑运算和移位运算功能„算术运算:+、-、×、÷„逻辑运算:AND、OR、XOR、NOT„移位运算:逻辑移位、算术移位、循环移位(在某些CPU中有专门用于处理移位操作的移位器)„ALU是影响整个处理器性能的主要因素之一61、ALU电路设计„A、B为ALU的两个输入操作数,Y为输出结果„Op为ALU的操作选择输入,如果Op有K位,则ALU昀多可以实现2K种不同的运算„CarryOut、Zero等为表明运算结果特性的标志输出ABALUNNNYKOpCarryOutZeroOverflow71、ALU电路设计„ALU属于组合逻辑电路,可以由基本逻辑电路来构造ababcca与门(AND)或门(OR)非门(NOT)c=a⋅bc=a+bc=acabcabc异或门(XOR)c=a⊕b81、ALU电路设计„ALU设计中经常用到多路选择器(MUX)abc01sabcssc0a1b9ALU电路设计(1)逻辑运算器„1位逻辑运算器00011011abyOpabyOpLOGIC2210ALU电路设计(1)逻辑运算器„N位逻辑运算器a0b0y0LOGICa1b1y1LOGICaN-1bN-1yN-1LOGIC……Op2ABYOpLOGICN2NNN11ALU电路设计(2)移位器„移位器是一种组合逻辑电路,它具有N个数据输入和N个数据输出,log2N个用于设置移动位数的输入,以及指定如何移动数据的控制输入——指定移位方向、移位类型(逻辑、算术还是循环移位)ABYOpSHFITERmNlog2NN12ALU电路设计(2)移位器„3种移位操作„逻辑移位——移空的位补0„算术移位——算术左移与逻辑左移相同;算术右移时,移空的位补原来操作数的符号位„循环移位——一侧移出的位作为另一侧移入的位msblsbmsblsb0msblsb0msblsbmsblsb13ALU电路设计(2)移位器„采用2:1多路选择器构造的8位右移位器101010101010101010101010101010101010101010101010S2S1S0A0A1A2A3A4A5A6A7R0R1R2R3R4R5R6R7MSB的输入如何?32位移位器需要多少级?14S0(0or1)S1(0or2)S3(0or8)S2(0or4)ALU电路设计(2)移位器„采用2:1多路选择器构造的16位右移位器15ALU电路设计(2)移位器„采用4:1多路选择器构造的16位右移位器0123A150123A140123A130123A120123A11A150123A10A140123A9A130123A8A120123A3A7A11A150123A2A6A10A140123A1A5A9A130123A0A4A8A12S2S30123B150123B15B140123B13B14B150123B12B13B14B150123B11B12B13B140123B10B11B12B130123B9B10B11B120123B8B9B10B110123B3B4B5B60123B2B3B4B50123B1B2B3B40123B0B1B2B3S0S1…B15B14B13B12B11B10B9B8B3B2B1B0R15R14R13R12R11R10R9R8R3R2R1R0…160123A150123A140123A130123A120123A11A150123A10A140123A9A130123A8A12B15B14B13B8B12B11B10B90123B3B4B5B60123B2B3B4B50123B1B2B3B40123B0B1B2B3S0S1R3R2R1R00123A3A7A11A150123A2A6A10A140123A1A5A9A130123A0A4A8A12S2S3B3…B2B1B00123B150123B14B150123B13B14B150123B12B13B14B150123B11B12B13B140123B10B11B12B130123B9B10B11B120123B8B9B10B11R15R14R13R12R11R10R9R8…17ALU电路设计(2)移位器„成本分析——针对32位移位器„如果使用2:1多路选择器,那么需要5级多路选择器32×5×2:1„如果使用2级4:1多路选择器和1级2:1多路选择器,那么需要3级多路选择器32×4:1+32×4:1+32×2:1„如果使用1级8:1多路选择器和1级4:1多路选择器,那么需要2级多路选择器32×8:1+32×4:118ALU电路设计(2)移位器19ALU电路设计(2)移位器„多位移位:采用复合策略,每次循环完成多位的多重控制循环。„例31位移位:„使用0、1位移位器31次迭代„使用0、1、2、3位移位器11次迭代„使用0、…、6、7位移位器5次迭代„使用0、…、14、15位移位器3次迭代„实际上,大多数移位都比较短(通常实现0~3)„非常复杂,目前只能进行右移20ShiftRight323232YXR„漏斗移位器(FunnelShifter)将A移i位(sa=右移位数)ALU电路设计(2)移位器逻辑左:Y=A,X=0,sa=n-i逻辑右:Y=0,X=A,sa=i算术右:Y=sign(A),X=A,sa=i左循环:Y=A,X=A,sa=n-i右循环:Y=A,X=A,sa=i代替从64位中抽取32位21N=4漏斗移位举例00001010YX逻辑右:Y=0X=A=1010sa=i=30001R22ALU电路设计(2)移位器„桶式移位器(BarrelShifter)D3D2D1D0A6A5A4A3A2A1A0SR0SR1SR2SR3依赖于技术工艺的解决方案:每个开关一个晶体管如果SR3=1,SR2=SR1=SR0=0,那么D3D2D1D0=A6A5A4A3,即A右移3位23例:用桶式移位器实现n=4漏斗移位k[1:0]s0s1s2s3Y3Y2Y1Y0Z0Z1Z2Z3Z4Z5Z6leftInverters&DecoderZ6Z5Z4Z3Z2Z1Z00001010YX逻辑右:Y=0X=A=1010sa=i=3S3=1S2=S1=S0=0R3R2R1R0=A6A5A4A3=0001RN个N输入多路复用器24例:用2选1多路选择器实现n=4漏斗移位Y3Y2Y1Y0Z0Z1Z2Z3Z4Z5Z6k0k1left9需要LogN级2选1多路选择器9无需解码(decoding)选择25例:用2选1多路选择器实现n=4漏斗移位Y3Y2Y1Y0Z0Z1Z2Z3Z4Z5Z6k0k1leftleftk1k0c1c01001110110110011110000000001010101001111c1c026ALU电路设计(3)加减法器1位全加器„又称为(3,2)adder„真值表FullAdderabcoutsumcin输入输出abcinsumcout0000000110010100110110010101011100111111逻辑方程cout=a⋅cin+b⋅cin+a⋅bsum=a⊕b⊕cin27ALU电路设计(3)加减法器1位全加器„逻辑图cincoutabcinabsum+abcoutsumcin28ALU电路设计(3)加减法器„1位ALU做加法:Binvert=Cin=0做减法:Binvert=?Cin=?Binvert=Cin=1Bnegate29a0b0+sum0cin0a1b1+sum1cout1a2b2+sum2cin2a3b3+sum3cout3cout2cin3cout0cin1„N位加法器行波进位加法器(ripplecarryadder)•大多数MIPS指令都可以用这个ALU实现•实现不了哪条指令呢?ALU电路设计(3)加减法器30ALU电路设计(3)加减法器„更加细化的框图„LSB和MSB需要进行特殊处理31a0b0+sum0cin0a1b1+sum1cout1a2b2+sum2cin2a31b31+sum31cout3cout2cin31cout0cin1ALU电路设计(3)32位ALUBinvertOperationSetOverflowLessLessLessLess000Slt的结果恰巧与a-b之差的符号位相对应32a0b0+sum0cin0a1b1+sum1cout1a2b2+sum2cin2a31b31+sum31cout3cout2cin31cout0cin1ALU电路设计(3)32位ALUBinvertOperationSetOverflowLessLessLessLess000书上作业:4.174.2333ALU电路设计(3)加减法器溢出检测例如:7+3=10但是...-4-5=-9但是...01110011+1010111001011+0111110731–6–4–5734ALU电路设计(3)加减法器溢出检测„溢出——结果超出了正常表示范围(太大或太小)„例如:-8=4位二进制数=7„当对具有不同符号的操作数进行加法运算时,不会出现溢出!„当进行下列加法时,出现溢出:„两个正数相加,结果为负„两个负数相加,结果为正35ALU电路设计(3)加减法器溢出检测„溢出可以用如下方法检测:输入到昀高位的进位!=从昀高位输出的进位(CarryintoMSB!=CarryoutofMSB)01110011+1010111001011+0111110731–6–4–57036ALU电路设计(3)加减法器溢出检测逻辑a0b0+sum0cin0a1b1+sum1cout1a2b2+sum2cin2a3b3+sum3cout3cout2cin3cout0cin1对于N位加法器,溢出=cin[N-1]XORcout[N-1]Overflow37ALU电路设计(3)加减法器a0b0+sum0cin0a1b1+sum1cout1a2b2+sum2cin2a31b31+sum31cout3cout2cin31cout0cin1BnegateOperationSetOverflowLessLessLessLess000Zero两数相减,看结果是否为0电路:对所有结果位做或,再求非38ALU电路设计(3)加减法器ABALUNNNYKOpCarryOutZeroOverflow39a0b0+sum0cin0a1b1+sum1cout1a2b2+sum2cin2a3b3+sum3cout3cout2cin3cout0cin1ALU电路设计(3)加减法器„行波进位加法器优点:电路简单,使用器件少缺点:位间进位是串行进行的,sumi(第i位全加和)必须等低位进位cini=couti-1来到后才能进行,速度与位数有关40ALU电路设计(3)加减法器a0b0+cin0a1b1+cout1cin2cout0cin1超前进位CLA(CarryLook_ahead)的思想„回忆:cout=a⋅cin+b⋅cin+a⋅b„cin2=cout1=a1⋅cin1+b1⋅cin1+a1⋅b1„

1 / 124
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功