1. 为什么我们不再用“龟速”的串行乘法器了?
如果你学过《计算机组成原理》,很可能在课本里见过一种叫做“移位-相加”的乘法器。它的工作原理,简单说就像我们小时候列竖式算乘法,只不过是用电路来模拟:乘数的一位和被乘数相乘,得到一个部分积,然后把这个部分积左移一位,再和下一个部分积相加,如此循环。这种方法,在计算机的“远古时代”(也就是几十年前)确实流行过,因为它需要的硬件逻辑门数量少,结构简单。
但是,我干了这么多年硬件设计,可以很负责任地告诉你:这种串行乘法器,在今天看来,基本就是个“教学玩具”。为什么?因为它太慢了!一个n位乘n位的乘法,它需要n个时钟周期才能完成。在CPU主频动辄几个GHz的今天,让一个关键运算单元等上几十个周期,这简直是性能灾难。想象一下,你开个网页,里面每个像素点的颜色计算都要等乘法结果,那体验得卡成什么样?
所以,早在几十年前,当集成电路技术成熟后,工程师们就果断抛弃了这种“省硬件但费时间”的思路,转向了并行计算的怀抱。这就像原来是一个工人(加法器)吭哧吭哧地搬砖(计算部分积),现在咱直接拉来一个施工队(加法器阵列),大家一起上,同时开工,一次搞定。这种并行乘法器的核心思想,就是用空间换时间——多用一些晶体管,换来成百上千倍的性能提升。现在市面上你能见到的所有CPU、GPU、DSP芯片,里面的硬件乘法器无一例外都是并行结构的。所以,如果你还在纠结“布斯算法”怎么移位、怎么校正,我的建议是:了解其历史意义即可,真正做设计时,请直接拥抱并行阵列。
2. 无符号数乘法:加法器阵列如何“摆摊”算乘法?
好,我们抛开历史包袱,直接来看现代硬件是怎么高效玩转乘法的。咱们先从最简单的无符号数乘法说起。这就像是算两个正整数相乘,比如 13 (1101) 乘以 11 (1011)。
它的硬件实现核心,就是一个加法器阵列。我画个简化的思维图给你看,比干讲原理直观多了:
A3 A2 A

386

被折叠的 条评论
为什么被折叠?



