深刻浅出计算机组成原理学习笔记:第十四讲

1、顺序乘法的实现规程

 

一、十进制中13乘以9,转换成二进制整个计算的过程

 乘法口诀表了,由于单个位置上,乘数只能是0或者1,因此实际的乘法,就退化成了位移和加法算法

二、咱们能够用一个开关来决定,下面的输出是彻底复制输入,仍是讲输出所有设置为0

 

三、把对应的线路错位链接,就能够起到位移的做用

 

四、乘法器硬件结构示意图

 

五、虽然节约了开关,可是也有一个很大的缺点,那就是慢

你应该很容易就能发现,在这个乘法器的实现过程当中,咱们其实就是把乘法展开,变成了“加法+位移” 来实现,咱们用的是4位数。因此要进行4组“位移+加法”的操做。并且这4组操做还不能同时进行编程

由于下一组的加法要依赖上一组的加法后的计算结果,下一组的位移也要依赖上一组的位移的结果这样这个,算法是“顺序”的,每一组加法或者位移的运算都要必定的时间
数据结构

 

因此,最终这个乘法的计算速度,恰是和咱们要计算的数的位数有关,好比:这里的4位,就须要4次的加法。而咱们的现代CPU经常用32位或者是64位来表示整数,性能

那么对应须要32次或者64次加法,比起4位数,要多花了8倍乃至16倍的时间

测试

2、并行加速方法

换个咱们在算法和数据结构中的术语来讲就是,这样的一个顺序乘法硬件进行计算的复杂度是O(N),这里的N,就是乘法的数里面的位数优化

能不能把O(N)下降到O(logN),办法还真的有,和软件开发里面改算法同样,在涉及CPU和电路的时候,咱们能够改电路,32位数虽然是32次加法,spa

可是咱们可让不少加法同时进行,回到这一开始,咱们把位移和乘法的计算结果加到中间结果里的方法,32位整数的乘法,其实就编程了32个整数相加设计

一、单败淘汰赛

二、加速乘法

加速的办法,就是把比赛变成像世界杯足球赛那样的淘汰赛,32个球队捉对厮杀,同时开赛。这样一天一会儿就淘汰了 16 支队,也就是说,32 个数两两相加后,你能够获得 16 个结果。3d

后面的比赛也是同样同时开赛捉对厮杀。只须要 5 天,也就是 O(log2N) 的时间,就能获得计算的结果。blog

可是这种方式要求咱们得有 16 个球场。由于在淘汰赛的第一轮,咱们须要 16 场比赛同时进行。对应到咱们 CPU 的硬件上,就是须要更多的晶体管开关、来放下中间计算结果

经过并联更多的ALU,加上更多的寄存器,咱们也能加速乘法

3、电路并行

一、并行加速慢的缘由

并行加速,之因此会慢,核心缘由其实在“顺序”计算,也就是,都要等前面的计算完成以后,咱们才能获得后面的计算结果

二、并行加速慢的典型案例

最典型的例子就是咱们上一讲讲的加法器。每个全加器,都要等待待上一个全加器,把对应的进入输入结果算出来,才能算下一位的输出。位数越多,越往高位走,

等待前面的步骤就越多,这个等待的时间有个专门的名词,叫做门延迟(Gate Delay)

三、门延迟

把电路变复杂解决了延迟的问题

四、时钟频率

除了们延迟以外,还有一个问题就是时钟频率,在上面的顺序乘法计算里面,若是咱们想要用更少的电路,计算的中间结果须要保存在寄存器里面,而后等待

下一个时钟周期的到来,控制测试信号才能进行下一次移为和加法,这个延迟比上面的们延迟更可观

这个优化,本质上是利用了电路自然的并行性,电路只要接通,输入的信号自动传播到了全部接通的线路里面,这其实也是硬件和软件最大的不一样

不管是这里把对应的门电路逻辑进行彻底展开以减小门延迟,仍是上面的乘法经过并行计算多个位的乘法,都是把咱们完成一个计算的电路变复杂了,也就是意味着晶体管变多了

 

以前不少同窗在咱们讨论计算机的性能问题的时候,都提到,为何晶体管的数量增长能够优化计算机的计算性能,实际上,这里的门电路展开和上面的并行计算乘法都是很好的例子,咱们经过更多的晶体

管,就能够拿到更低的门延迟,以及用更少的时钟周期完成一个计算指令

4、总结延伸

讲到这里,我相信你已经发现没咱们经过以前两讲的ALU和门电路,搭建出来了乘法器,若是愿意的话,咱们能够把不少在生活中不得不顺序执行的事情,

经过简单地连结一下线路,就变成并行执行,这是由于,硬件电路有一个很大的特色,那就是信号都是实时传输的


咱们也看到了,经过精巧地设计电路,用较少的门电路和寄存器,就可以计算弯沉过程发这样相对复杂的运算,是用更少更简单的电路,可是须要更长的门延迟和时钟周期

;仍是用更复杂的电路,可是更短的门延迟和时钟周期来计算一个复杂的指令,这之间的权衡,其实就是计算机体系结构中的RISC和CISC的经典历史线路之争

相关文章
相关标签/搜索