汉唐归来
惟有中华

纯科学:网上最权威的芯片战分析——反芯片制裁战略研究(下)|2023-04-05

接上篇

仅以此文献给伟大的芯片专家和科技创新企业家戈登·摩尔。

致敬,逝去的摩尔和即将逝去的摩尔定律。

本文目录

一、我的学术态度——追求卓越和原创

二、对摩尔定律的深度讨论

三、CPU位长及64位极限

四、时钟频率(主频)及9GHz极限

五、指令集与计算架构

六、存储结构对计算性能的影响

七、片内多核与阿姆达尔定律

八、其他计算能力堆叠技术

九、其他影响计算能力的技术

十、中国芯片战制胜之道

一到五为上篇,参见:网上最权威的芯片战分析——反芯片制裁战略研究(上),六到十为本文下篇。

六、存储结构对计算性能的影响

讨论计算技术时,人们最关注的核心点总是各种计算架构,各种新型的处理器。所以,网上的各种计算架构和新型处理器类型风起云涌,多如牛毛:

CPU,中央处理器。

math co-processor,数学协处理器。

FPU,Floating Processing Unit,浮点计算单元。

DSP,数字处理器。

MPU/MCU,Microprocessor/Micro controller Unit,微处理器/微控制器。

GPU,图形处理器。有些文章中写成图像处理器,这个从专业角度是有些偏差的。图形Graphics与图像Images是有区别的。前者是计算机生成的,后者是通过摄像头获得现实世界的照片。图像处理器有专门的名称在下面。

IPU,图像处理器。

TPU,Tensor Processing Unit, 张量处理器。它是谷歌专门为加速深层神经网络运算能力而研发的一类芯片名称。

NPU,Neural network Processing Unit,神经网络处理器。

BPU,Brain Processing Unit,大脑处理器。

DPU,Deep learning Processing Unit, 深度学习处理器。

DPU,Data Processing Unit,数据处理单元。和上面一样的名称,含义却不一样。上面的DPU是一种AI类的芯片。而这个DPU主要是用于各种网络接口I/O处理。

APU,Accelerated Processing Unit, 加速处理器。

HPU,Holographics Processing Unit,全息图像处理器。这个是由微软给起的名字。

GP-HPU,General Purpose Hyper-heterogeneous Processing Unit,基于超异构计算的通用处理器。

RPU,Radio Processing Unit, 无线电处理器。

VPU,Vector Processing Unit 矢量处理器,Intel收购的Movidius公司推出的图像处理与人工智能的专用芯片的加速计算核心。

WPU,Wearable Processing Unit,可穿戴处理器。

XPU,百度与Xilinx公司在2017年Hotchips大会上发布的FPGA智能云加速,含256核。

XPU,X Processing Unit,X处理器。这个与上面名字相同,含义差别很大。这个是泛指各类处理器。

ZPU,Zylin Processing Unit, 由挪威Zylin 公司推出的一款32位开源处理器。

DSA,Domain Specific Accelerator,域专用加速器。

从APU到ZPU,英文字母快用完,并且都产生一些重复了。

以上这些专门研究出的芯片,有些名称真的是可以对应全新的概念,而有些可能只是少量变化,纯属商业概念炒作而已。如果在其设定的条件下,一般运行计算速度都可达到其声称的指标。如果进行跑分测试,其水平也不错。但是,如果从客户购买其产品以后,全生命周期运行结果的角度来看,往往其利用率极低,大多5%甚至更低。为什么会是这样?其中的重要原因之一,是以往对存储结构漠视造成的重大缺陷。

为了比较容易来理解这一点,我们可以用一个生产线的生产效率与仓库结构的关系来说明。我们可以将各种CPU想象成工厂中加工产品的生产线,将存储器想象成存放原材料、零件、半成品和成品的仓库。首先来看一下存储的基本方式:随机存取、半随机存取、流式存取、半流式存取。

随机存取,可以想象成开放的货架存取方式。如果你要存取任何物品,可以找到对应的仓库和货架号,一伸手就可以直接进行存取了。片内的寄存器,内存等就是采用这种随机存取的方式。这个存取速度当然是最快的。

半随机存取,如果还是与上面一样开放的货架存取方式,但因为每个最终要存取的零件比较小,所以是将一批零件放在一个盒子里。这些盒子是可以完全随机存取的,但真正要存取其中某一个零件,并不是直接对这个最终的零件进行操作,而是先把它所在的盒子提取出来,再从中找到所需要的目标零件。这就是一种半随机存取的方式。U盘和SSD固体存储器采用的就是这种半随机存取的方式。它是将256kB的信息打包成一个块(对应于存放零件的盒子)。在对它进行存取时,并不是直接去存取目标的某一个字节,或一批字节,而是将其所在的256k信息块全提取出来,再从中找到目标的字节。

流式存取,可以想象成堆放的货物存取方式,还要设想成是把物品堆放在一个很长、很长的地道里,且不留空间的堆满方式。在这种情况下,如果你要去存取某个物品,并且它是在地道的中间某个位置,这个是不是特别麻烦?因为你得从地道口把物品一个一个先取出来,一直取到地道中间的目标位置才能进行存取。这个显然会花费远远比货架存取方式长得多的时间。这种存取的方式在存放物品的仓库里极少采用,但在存储信息的仓库里却有对应的情况,这就是磁带的存取方式。

半流式存取,还是采用堆放货物的存取方式,但并不是存放在很长的地道里,而是一堆一堆地存在很大的仓库里。先找到物品所在的仓库和堆号,然后将这一堆物品一个一个搬下来,从中找到目标的物品。因此,寻找到目标物品仓库号和堆号的过程是可以直接到达目标位置的随机存取方式,但从一堆物品中找到所需要的目标物品还是一种流式的方式。磁存储的硬盘就是这种半流式存取的模式。

从上面存取的不同方式和存取技术可以看出,它们所需要的时间差异是极大的。除了存取方式以外,物品存放的位置距离生产线的远近也会极大影响存取速度。因为中间搬运的过程还需要额外消耗时间。有些搬运过程消耗的时间可能比存取消耗的时间还要长得多。其存取速度从慢到快依次是:流式存取、半流式存取、半随机存取、随机存取。

想象一下,就在生产线同一个房间,并且就是生产线旁边的、可直接存取最终目标物品的货架,并且是专门设计伸手就可拿到的货架,这样操作速度是不是最快的,零配件随手就可以拿过来进行加工了?这种就是CPU片内寄存器和高速缓存(采用静态存储器SRAM)。因为要与生产线在一个厂房内,空间有限,当然这种货架的空间就很宝贵,不能太多了。这也是上篇里所谈到的精减指令集(RISC)通过大量增加片内存储空间来提升性能的逻辑所在。

如果是在一个厂区内专门的大型仓库里,也是采用货架的随机存取方式。因为要进行存取的话,得推上推车,到生产线所在厂房之外,在库房里找到对应货架去操作。这个仓库要考虑到尽可能存放更多物品,所以货架就得尽可能高,虽然也是随机存取,但要提取相应的物品花的时间就稍长一些。又得移动更多距离,货架上的存取操作也稍微麻烦一些,这个要花的总存取时间是不是就比生产线旁边的货架慢很多?另外,虽然它也是随机存取,但既然推上小推车过来了,一般也不会只拿一个零件,而是把下一个阶段可能要用到的零件索性一起拿过来。这个就是采用动态存储器(DRAM)的内存。内存的存取速度一般会比片内的寄存器慢一个数量级以上。

片外的高速缓存。既然内存仓库的速度比片内货架的慢很多,生产线旁边的货架空间又非常有限,那就在生产线厂房外面的门口建一个与片内寄存器一样技术的货架。因为空间受限程度更低,因此一般就可以将货架建得更大一些。将下一个生产阶段最有可能用到的零件先放到这里,这样在需要时就不用跑到厂内库房(内存)去了。这种货架虽然与片内的寄存器等所用的存取技术基本一样,但因为距离毕竟稍远一点,所以比片内的寄存器速度还是稍慢一些。因为不太可能完全提前知道下一个生产阶段所需要的所有零件,所以存在生产线门口的物品并不一定能满足所有的需要,它有一定的“命中率”问题。

如果仓库不是在厂区内,而是要距离厂区十几公里之外的超大型仓库去存取物品呢?那就可能得开着车先跑十几公里到厂区外库房,仅路上花得时间就要多很多。同时,为降低成本,提高存储空间利用率,采用的是半流式的库房堆放方式,所以花得时间就更多了。这就是外存的硬盘。更重要的是,很少有人从技术上能明白硬盘的一个非常重要的特性:它并不是一个大平层的库房,而是很多层的楼房。运货物的电梯极慢,得上下移动去搬运物品。所以,虽然它是半流式存取方式,找到楼层和堆号可以很快。但最终的存取速度却是完全受限于电梯的运行速度。电梯就相当于硬盘的磁头,不同的磁道就相当于不同的仓库楼层。磁盘有多少个磁道,就相当于仓库有多少个楼层。硬盘的磁头运行采用的算法真的就叫“电梯算法”。所以,无论你在一个楼层找到堆号,搬出目标物品的速度是多少,最终得等电梯到了你这个楼层,你上去,才能将物品运走。硬盘磁头这个电梯的访问速度是多少呢?它是用“平均寻道时间”这个技术指标来表达的,就是你在某个磁道的楼层已经找到目标物品了,要在电梯口平均等待电梯的时间长度。可能说出来让很多人惊讶:40年前这个指标是6到9毫秒。直到今天,这个指标也就提升到3到6毫秒,几乎是没有变化的。我们不要以为计算机所有技术指标都是在按摩尔定律在发展,大错特错。其中硬盘的“平均寻道时间”指标几乎可以认为是没有变化的。在存储结构上,从最外面的硬盘到最里面的寄存器,其随机存取速度可以相差百万、千万倍。为什么过去很长时间,互联网的TCP/IP连接数最大限定在200个,几十年没有任何变化,其原因就在于硬盘的这个5毫秒左右的平均寻道时间,它就相当于每秒只能进行200次硬盘随机访问。

为什么CPU的利用率那么低?其中的最重要原因之一就在以上存储结构里。一旦在进行计算时需要跑到外存中去存取数据,CPU基本上就会处于长久等待状态。这相当于因物料供应不及时,生产线就不得不停产。你在生产线旁边的货架上拿一个零件只要几秒,但如果是要从厂外库房里去拿,需要的时间可能是几天、几个月甚至更长。这就是为什么以往采用硬盘的计算机常常陷于硬盘灯闪烁个不停,硬盘不停地哗哗作响,但很长时间屏幕什么反应也没有,就像死机一样。这种情况就是计算机在内存与硬盘间在进行大量的数据交换。

再者,刚买电脑时运行还算顺利,但随着使用时间延长,计算机的速度就越来越慢。新买的电脑刚开始使用时,内存分配还算相对合理,计算时的数据基本都在内存。但随着使用时间的延长,安装的软件越来越多,驻留在内存、其实平时又不使用的软件也越来越多,从而最宝贵的内存逐步地驻留了大量并不急需的数据,使真正运行的软件能够使用的内存空间越来越少,最终不得不大量依靠硬盘的外存来进行计算。一旦如此,运行速度就不是线性地下降个百分之十几、几十,而是会呈几个数量级地下降,从而出现卡顿问题。如果只是计算性能线性地下降,只是运行速度按比例地减慢,不会突然间出现近乎死机一样的卡顿问题。所谓卡顿,就是计算性能呈几个数量级下降所导致的。

另外,人们常说的WINTEL联盟形成了一种默契,微软开发的操作系统主要追求用户界面的使用习惯,并不去追求最优化地使用内存,甚至故意如此。由此,就引导用户不断地追求更高性能的CPU芯片来维持较好的运行速度。

另外,操作系统也是越做越大,而在电脑配置时,却往往配置较小的C盘,即使采用SSD也是如此。这些都是促使用户尽快换机的方法。30年前我就开始做过很多攒机的工作。在规划硬盘时,往往默认给C盘1/4甚至更少的空间。我曾问过很多工程师,为什么要规划这么小的C盘?很多人都回答:这样对提升访问速度有好处,有利于硬盘的保护。可是为什么这样做能实现这些好处呢?没有一个人能给从硬盘技术本质上我真正合理的解释。直到做了几十年的电脑研究,有过大量攒机的实际经验,尤其是我经常给C盘尽可能大的空间分区来进行测试,并没发现会出现什么降低访问速度的问题和其他问题。有人说是这样便于管理,C盘是系统文件,D盘是数据,E盘是备份资料等,这样显得“井然有序”。但是,很多软件都是直接默认安装在C盘,并且数据资料也都是在应用软件自己的目录里。所以,如果不是很专业的人员,安装的软件和数据往往全都集中在C盘里,这样很快就会把C盘占满了。实际使用中很多用户时常出现C盘不够,但D和E盘还剩很多空间的问题。认为C盘规划得小一些有利提升运行速度完全说不过去。如果你在C盘、D盘和E盘之间作一些数据拷贝测试就会发现,它们之间很难说访问速度上有什么明显的区别。尤其在采用SSD以后,全盘访问速度从原理上说就是一样的。

通过大量实际装机测试和对所有设备,尤其硬盘、SSD等原理和技术的详细分析之后,可以做出我认为是全球最为专业的判断:这就是要让运行软件的关键存储空间尽可能变得更加紧张,以便更快地人为制造换电脑的需求。除此之外,我没发现有任何技术上一定得这么做的必要性。也从来没有任何工程技术人员给出这么做真正合理的解释和理由。几乎所有攒机和生产电脑的技术人员,都只是不问原因被动地将其当成技术常识这么干。

甚至于,无论是电脑还是智能手机,越是进行软件升级,有时会发现越是容易卡顿。这就是人为降低计算性能的结果。其中一个方法就是大量驻留软件在内存里,快速消耗掉内存,从而不得不出现大量硬盘数据交换。

在硬盘作为外存的时代,无论多么好的PC产品,其启动时间都只能在40秒到1分半钟。而如果采用半随机存取的固体存储器SSD,即使很低档的PC,其启动时间也很容易做到10几秒,比采用最好的硬盘PC还要好得多。并且,只要采用SSD,一般就很少出现卡顿现象。因为SSD的随机访问速度(一般用4k数据块的IOPS来表达)比最好的硬盘也要高2到4个数量级,即使是出现内存与外存之间的大量数据交换,也不会出现卡顿现象,只是会表现出性能线性的下降。因此,只要增大内存空间和采用SSD,即使用了很多年的PC,也不会出现卡顿的问题。我用扩大内存和采用SSD的方法,电脑都可用7年以上,键盘都换了两三次,其性能依然和新买时差不多。而过去一般认为3年,最多5年就得换电脑。所以,存储厂家之所以不去争话语权,这也是原因所在。如果采用大内存的方案,可以使计算机使用周期延长一倍,这对最终用户价值是极大的,但会使除存储以外的部分产业链市场规模下降一倍,而存储厂家的市场容量只是保持不变。这种“害伙伴不利己,只有利于最终用户”的技术方案,他们为什么要去争、去做?

关于这个问题,我在30年前就做过大量的系统深入的研究,并于1998年8月在中国《计算机世界报》上连续三期发表了关于使用海量内存获得极高计算性能的文章。这比SAP公司提出内存计算概念早了10多年。因为在计算机领域能够拥有发言权的主要是搞CPU芯片的公司,做内存和高速缓存等存储器的公司基本没有发言权。因此,通过扩大内存,大容量C盘的SSD等方式,来成倍延长PC高性能体验时间的技术一直都不受重视。

通过存储结构上一般人根本看不出来的技巧(扩大内存和采用全SSD外存),将电脑更换时间从3年半延长到7年,那每年电脑销售量就得下降一半。所以,想尽一切办法在存储结构上做文章,让电脑的换机时间压缩在4年以内,对PC相关产业链是非常重要的商业问题。由此也就可以理解这个行业长期存在的潜规则所在。但在今天提升CPU性能越来越难的时代,通过打破行业潜规则、改善存储结构来解决计算性能问题的途径就需要越来越受到人们的关注。这里面至少有1到2个数量级的潜力可挖。

人们千万不要觉得揭秘以上这些潜规则有什么惊天阴谋在里面,其实这种情况在很多行业里都有。一辆超级跑车时速可以跑到400公里以上,可是中国现在道路限速最高120公里。这种超级跑车的价格比一般车辆高1到2个数量级,其性能对应的价格真正可以用上的只有不到10%甚至1%。超级跑车好歹还可以满足一下虚荣心,可你一个电脑有什么虚荣心好满足的,性能利用率居然也只有5%?

七、片内多核与阿姆达尔定律

如果CPU性能很难通过增加位长和主频来提升速度,除了优化指令、针对特定应用进行设计以外,就是靠简单地堆叠CPU数量来提升性能了。

在片内集成多个CPU内核最开始叫双核,就是一个芯片内集成两个CPU。

后来出现多核,就是一个芯片内集成两个以上或更多CPU。多到什么程度呢?十几个最多几十个。

如果再增加呢?就叫众核,就是几十个以上,到几百个甚至数以千计的核。

以上区别其实就是个简单的数量问题,所以我们在本文中就都称它们为多核吧!

这种简单堆叠更多逻辑上的CPU数量对提升计算性能的影响到底有多大呢?这个问题事实上在很早就被阿姆达尔给出的精确研究解决了,这就是关于多核并行计算的阿姆达尔定律。假设采用并行处理的最大可能加速比例是S,阿姆达尔定律的表达式就是:

S=1/((1-a)+a/n)

其中a是并行计算占总计算量的比例,n是并行处理核的数量。例如,假设某个软件并行处理量a是80%,核的数量是24。可以算得:

S=1/((1-a)+a/n)=1/((1-80%)+80%/24)=4.286

也就是说,如果软件中可以并行处理的计算量占比为80%,采用24核的CPU,并不是说就能提升24倍的计算性能,而是最大只能提升4.286倍。即使采用数量无穷多核的CPU,其性能也至多只能提升5倍。只有当软件中100%都是可并行处理的计算时,S=n,也就是此种情况下采用24核的CPU,其性能有可能会提升24倍或与其相接近的程度。因为要实现并行计算和有效地在不同核之间分配计算任务,又得额外增加一些计算工作量,加上因数据存储上的冲突可能带来的等待延迟,真正提升的计算性能肯定会比核的数量n要小一些。

汉风网网站提示:
建议老友们升级会员,升级会员后,可以全部阅览。目前系统支持用户名为字母形式、拼音形式、中文用户名现在正在调试中。
如果不会操作升级会员,请加汉风网微信,我们后台给您添加。
请老友们一定点击“立即购买 或 升级vip”按钮进行购买,因服务器反应慢点击购买后大概需要8秒左右,(如果等待8秒没有反应,可以再次点击一下)会跳转到支付页面。购买成功后才可以查看到剩余内容,购买成功后如果遇到服务器没有反应则请等待一会刷新(如果还是看不了,请再次刷新一下),或重新打开本篇文章,因技术原因请老友们尽量在半个小时内阅读完,超过时限会需要重新购买。此费用为支持汉风网服务器带宽以及编辑人员相关费用。谢谢老友您的支持。如果有疑问,请加微信联系我们,我们第一时间解决。
赞(0)
请您分享转发:汉风1918-汉唐归来-惟有中华 » 纯科学:网上最权威的芯片战分析——反芯片制裁战略研究(下)|2023-04-05
分享到