计算机组成原理与体系结构-实验一 进位加法器(Proteus 8.15)
目录
一、实验目的
二、实验内容
三、实验器件
四、实验原理
4.1 行波进位加法器
4.2 先行进位加法器
4.3 选择进位加法器(尝试猜测原理)
五、实验步骤与思考题
一、实验目的
1、了解半加器和全加器的电路结构。
2、掌握串行进位加法器和并行进位加法器的原理及设计方法。
二、实验内容
1、设计拥有共同输入端——2个4位二进制数输入的串行加法器(行波进位加法器)和并行加法器(先行进位加法器),深入理解两种加法器的实现逻辑和区别。
2、探讨针对输入二进制数在有符号和无符号情况下,两种加法器如何改造成输入是4位有符号数,输出是4位有符号数;输入是4位无符号数,输出是4位无符号数或者5位有符号数的。
三、实验器件
1、2/3/4 与门(74LS08/74LS11/74LS21)、非门(74LS04)、或门(74LS32)、异或门(74LS86) 等逻辑门。
2、三态门(74LS244)、LED指示灯及数码显示管。
3、单刀双掷开关(SW_SPDT)、拨码开关(DIPSWC_8)。
四、实验原理
4.1 行波进位加法器
特点:第i个FA全加器的准确输入进位ci-1需要经过(i-1)个二级与或门的门延迟之后才能获得,因此在计算时间上花费较多,但是硬件连接十分简单,只需要把第(i-1)个FA的进出位连接到第i个FA的进入位,把第i个FA的进出位连接到第(i+1)个FA的进入位,如果是第一个全加器,进入位连接行波进位加法器输入c0
;如果是第(n-1)个(最后一个)全加器,进出位输出cn
,用于溢出校验。
4.2 先行进位加法器
特点:采取空间换时间的方法,优点是在计算效率上高于行波进位加法器,但是缺点是在硬件电路方面设计更复杂,对于n位输入的先行进位加法器,最大需要用到fan_in=(n+1)的与门和或门,考虑到连接的复杂度和器件的功率和供电情况,一般来说这种加法器用在4位输入较多,如果是8位或者16位、32位的加法器,可以采用4.1行波进位加法器的方法连接2个、4个或8个先行进位加法器,把图中的FA换成4位输入的先行进位加法器即可。
下面是对于两个32位(n=32)二进制数的加法(减法转换增加一个延迟单位T),行波进位加法器和先行进位加法器的计算延迟比较(不包括溢出校验),对于先行进位,溢出校验的最短时间(因为有两种校验方法,进位校验与和位校验)和生成的时间一致;而对于行波进位,溢出校验的时间(两种校验时间几乎一致,微小差异在三输入或门两输入与门组合——最终进位产生VS两输入或门三输入与门组合——溢出判断,二输入异或操作都有只不过次序不同)需要在
产生的基础上再加1T。
当n趋向于正无穷时,行波进位加法器的有效输出延迟(笔者认为最好包括溢出校验)渐近线为t=2nT,而先行进位加法器的渐进延迟线为t=(n/2)*T,所以计算速度大约是4倍左右。
事实上,硬件工程师在设计先行进位加法器的时候还设计了一个Carry-lookahead Logic,用于更多位加法扩展的时候可以进一步缩短运算时间,4组全加器的G和P压缩成了一组G和P,可以形成2层-16个全加器的逻辑块;而不是像前文讲述的简单的直接前后串联。串联就像是数学里的等差数列,而这种逻辑就像是等比数列,比例系数q=1/4。
输入操作数位数n趋近于无穷大时,想要设计一个大加法器完成加减法操作,这个时候渐近线或者说运算效率就会有很大的区别(然而只存在于理论之中,因为实际不存在操作数无穷多位的情况,一般64位就已经是极限了)——
只嵌套一层,渐进延迟线就是t=(n/2)*T,嵌套m层,渐进延迟线就是t=(2n/)*T。其实这不仅仅是一个空间换时间的问题,也涉及到布局和设计,包括对门电路的理解,体现了人类的智慧。
4.3 选择进位加法器(尝试猜测原理)
这种加法器也拥有类似等比数列缩小的渐进延迟,硬件开销近似指数增长。由于笔者没有具体查阅资料去了解选择进位加法器,所以只是猜测可能用到了2路、4路、8路等路选择器,基本原理猜测如下图。
上图列举的是把输入二进制数划分成三段的情况,所以相当于使用了(2^3-1)/3=7/3倍于行波进位加法器数量的全加器,计算速度提升了3倍。当分成4段的时候,使用了(2^4-1)/4=3.75倍于行波进位加法器数量的全加器;当分成8段的时候,使用了(2^8-1)/8≈32倍于行波进位加法器数量的全加器。
图 1 全加器使用6个门(其中或门是唯一的三输入门)
下面看一看输入是64位二进制数(比如long int类型)时,需要多多少硬件才能换取多少时间,延迟计算不包括减法的补码处理。
一个FA全加器使用了6个门,一个4位Carry-lookahead Adder使用了4x6+14=38个门。
图 2 4位先行进位加法器多出的14个门(包含三四五输入门)
图 3 64位操作数输入,三种加法器的硬件开销与计算延迟
可以发现,先行进位加法器的硬件开销和计算延迟综合起来是最优秀的。如果想要在先行进位加法器的基础上把时间进一步压缩,那么需要使用选择进位加法器并且把硬件数量翻20倍。
图 4 Proteus仿真软件-两种加法器的电路实现
五、实验步骤与思考题
使用7段数码管显示运算结果,LED灯判定溢出(笔者没有实现这一功能)。
1.请问本实验的运算器是补码运算器、原码运算器还是无符号数运算器?与串行进位加法器相比,并行进位加法器的优势是什么?所谓的“并行”体现在哪里?
本实验的运算器既是补码运算器也是无符号数运算器,根据所需用途的不同也不同,因为补码运算器也是把有符号数当作无符号数输入全加器运算的。
优势就是运算效率高、运算速度快,并行体现在所有进位(除了c0)的产生延迟是一致的。
2.本实验中,运算器可以表示的数值范围是多少?请把运算器电路分别修改为四位无 符号数运算器和五位补码运算器(一位符号位),并分别写出各自新的数值范围。
见下图。
图 5 思考题2
对于4位有符号输入-4位有符号输出的情况,第五位(进出位)也存在但是不发挥作用。