脑芯编窥脑究竟,结网造芯(三)

作者 痴笑

〈三〉

梦里不知形与令

世界上有两种管家

一种是Batman的Alfred

能服务能做饭能伪装能打架

狠起来超人也不是干不过

另一种是天朝的大内总管

掌印秉笔,啥事不会

老大又吩咐了就去传个话

你脑子里的CPU是哪一种?

有了神经元,知道了怎么把神经元连成网络,这个系列终于进入了主题——怎么实现神经网络。如果在这个问题上加一个条件,那就是怎样用芯片实现神经网络的计算?

在回答这个问题以前,让我们先去拜访两位长者——Alan Turing和John Von Neumann,目前大家公认的计算机之父。话说前者才是真的苟利国家生死以,岂因祸福避趋之,详见卷福主演的奥斯卡获奖电影《模仿游戏》。

Turing-Von-Neumann架构

为了表达对大师的尊敬,我起了个很干脆的标题。大师之所以是大师,是因为他们定义了在80年前定义了通用计算机的数学模型和体系结构。在这过去的80年里,任何试图推翻这些结构的投机分子几乎都没什么好下场。但是,总有人希望推翻这个架构。先简单的描述下两位长者干了什么。

Alan Turing在1936年提出了一种具有普适性的逻辑计算模型,证明通过有限状态机完成输入数据的操作,可以实现任意复杂的逻辑运算。图灵机本身描述的场景在现在看来已经没什么意义,但是他第一次完整的定义普适计算机体系机构——一卷很长很长的带子(infinite lengthtape)通过一个有磁头(head)的有限状态表(finite state table)进行读取/处理/改写的机器。

图灵机:带子、磁头和状态机

9年后,Von Neumann把带子改叫做Memory,状态表叫做CPU,磁头改叫做Connection (Bus) ,换了一副图,就有了史称冯诺依曼架构的现代计算机体系结构。

教科书上会说这个结构有啥特点,这是让你背的。其实很简单,图灵-冯诺依曼架构最大的特点是把计算任务分为了2个部分——数据存储(memory)和数据处理(processor)。处理器几乎不能存数据,存储器几乎不能算数据。两部分用一种连接方式(bus)按一定规则通信。泾渭分明的特点让冯诺依曼架构处理事情起来特别有条理,就像男主外女主内的家庭角色分配一样,在硬件资源极度受限的情况下,成为了自动化发展的中坚力量。

冯诺依曼架构有一个升级版,叫做哈佛(Harvard)架构,把存储空间分为了指令(instruction)存储和数据存储,对应不一样的操作。目前的主流嵌入式微处理器基本采用这个架构,但Anyway这并不重要。

冯诺依曼架构在过去的60年称霸人间,如果这项专利申请成功的话,这一定是史上最赚钱的专利。可是,冯诺依曼架构在经历了各种法院撕逼后,被判定为一项没有收益人的专利……(Youyou Tu和青蒿素在这面前简直不值一提)

成也萧何 – x86的不可一世

虽然冯老爷子在自己的架构下发明了人类第一台计算机,ENIAC和EDVAC,但诺依曼的真正崛起还是要归功于x86。如果你不知道80×86是什么,那只能说明我们已经有代沟了,嗯,很深深的代沟。

Intel自1978年推出8086后,x86体系架构就一直是电脑(上到服务器,下到平板电脑)核心处理芯片的不二选择。

Intel x86 i7版图

顺便做个普及,在冯诺依曼架构下,每个处理器会干的事情是有限制的,通常这个限制叫做指令集。它规定CPU的基本操作,没有指令集(instruction set)定义的复杂操作可以通过基本操作的组合来完成,比如指令集里没有乘法,那我们可以通过一定数量的加法来完成。

在冯老爷子的机构里,谁的指令集越大,可以访问的存储空间越大,谁就越牛逼。x86的指令集从8086到i7不断扩张与膨胀,最终成为了一个会算双精单精、矢量图像,多核多线程多Cache的巨无霸。简单的说,到2013年的时候,史上最强core已经无所不能了。可是历史不断在重演一幕就是,当绝顶高手号称要独孤求败的时候,不知道哪里窜出来的毛小伙子可能一个起手式就把你撂倒了。圣经里大卫王这么干掉了Goliath,《倚天屠龙记》里,张无忌这么称霸了光明顶。

那谁是x86的张无忌呢?

移动设备,RISC的春天

独孤求败的x86其实有个致命的缺陷——能效,通俗地说就是做一次要花费的能量。可是每块肌肉都很发达的muscleman总是要比一般人多吃几碗饭吧。我们现在能买到的i7即使在省电模式也要消费超过47W的功耗。本身47W不算什么,但是苹果乔大叔的出现,让47W一下子很麻烦。

iPhone/iPad和一系列手持的充电设备对瓦级以上的功耗是非常敏感的!x86的功耗导致它充电2小时使用5分钟的悲惨结局。肌肉男瘦身变成筋肉男的必然的命运。

这时,x86,或者说是intel的张无忌出现了—ARM Cortex RISC. 所谓RSIC就是精简指令集(Reduced Instruction Set),他能干的事情很有限,但是他的功耗低。X86在其巅峰时期无数次地战胜过RISC,以至于ARM出现时并有没足够重视他,那时候Intel还在和AMD抢64位x86的主导权呢。

为什么无数次败下阵来的RISC可以最终成功呢?因为这次,他寻找到了一个partner——加速器。在移动端的应用设备里,其实也有很对需要强大计算消耗的进程,这是RISC本身无法胜任的。但是,实际应用上,往往这些进程是有固定的模式和使用场景的。比如手机在通话时的语音编解码,拍照时的图像处理(俗称美颜)和无线通信是的编解码。对于这样一个经常重复,且模式固定的高通量计算,可以在总线上加入一个专用模块(ASIC)加速,在处理专用任务是ASIC的能效又比通用处理器高很多。下图就是ARM有名的产品之一A9,除了CPU外,它的浮点与超标量计算(NEON)都被移到了CPU外(一般来说,这不能算作加速器)

这就是开头的那个故事,你每天充的电不够超人吃的,与只能换个块头小,但是能够指挥其他人的总管。

败也萧何 — 冯诺依曼瓶颈

泾渭分明,靠总线连的冯诺依曼架构带来了单核/少核时代计算机的春天,但冯诺依曼架构的致命缺陷——冯诺依曼瓶颈——也悄悄地增长。随着摩尔定律的发展,远距离的搬移大规模数据早已取代了计算本身,成为制约高效计算的重要瓶颈,对于x86结构,有太多指令可以直接穿过总线访问存储空间。

在RISC+加速器的体系结构里,总线作为总管和内务府、上书房、御膳房间的桥梁,更是好不吃紧。当瓶颈出现在通信上时,冯诺依曼架构就体现出了它垂垂老矣的一面。

这个问题,在实时处理的人工智能场景下显得格外突出,信号从入到出,都是按照是数据流(Data flow)的传输模式一帧一帧地来。这一特征在类脑的神经网络实现中就更加明显。如果每一个卷积的系数都要去云深不知处的存储海洋里去寻找,那神经元的处理效率会非常低。简单地说:

谁脑子TM的是一半纯记忆一半纯分析的呢?

脑子么,都是左右开工的。边走边忘,雁过留痕,却也是旧相识,恢复不出来一个一毛一样的。

所以,摆在类脑芯面前的路有三条:

(1) 采用冯诺依曼经典架构,把神经元计算写在指令集里,反正是超人,技多不压身;

(2) 采用RISC+神经元/神经网络加速器,给总管再开个府呗;

(3) 放弃冯诺依曼架构,完全分布式硬件,像数据流一样的风骚走位。

这三个选项都有不错的代表,我们慢慢来。

梦里不问形与令,你知道计算机形(体系结构)和令(指令集)了么?

特别鸣谢复旦大学脑芯片研究中心提供技术咨询,欢迎有志青年报考。

人工智能芯片硬件群加入方法:

请访问

http://www.diaochapai.com/survey/69e11a55-6f6d-44b9-baf0-31ccf8a946f7

经群管理员审核通过后即会邀请您入群!

========

欢迎加入我们的读者群,与志同道合的人一起交流一起吐槽!点下面的链接填写您的信息我们会邀请您入群!

链接:矽说读者交流群

我们同时也开通了微信平台(微信号:silicon_talks),将会发布更多半导体行业深度解读和福利,欢迎搜索公众号!

event_note 11月 2, 2022

account_box 海归 回国

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注