炼数成金 门户 商业智能 查看内容

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

2016-12-30 17:19| 发布者: 炼数成金_小数| 查看: 13704| 评论: 0|原作者: 痴笑|来自: 矽说

摘要: Alan Turing 在 1936 年提出了一种具有普适性的逻辑计算模型,证明通过有限状态机完成输入数据的操作,可以实现任意复杂的逻辑运算。图灵机本身描述的场景在现在看来已经没什么意义,但是他第一次完整的定义普适计算 ...
〈三〉
梦里不问形与令

世界上有两种管家

一种是 Batman 的 Alfred
能服务能做饭能伪装能打架
狠起来超人也不是干不过

另一种是天朝的大内总管
掌印秉笔,啥事不会
老大又吩咐了就去传个话

你脑子里的 CPU 是哪一种?

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

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

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

Alan Turing 在 1936 年提出了一种具有普适性的逻辑计算模型,证明通过有限状态机完成输入数据的操作,可以实现任意复杂的逻辑运算。图灵机本身描述的场景在现在看来已经没什么意义,但是他第一次完整的定义普适计算机体系机构——一卷很长很长的带子(infinite length tape)通过一个有磁头 (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。如果你不知道 80x86 是什么,那只能说明我们已经有代沟了,嗯,很深深的代沟。

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)放弃冯诺依曼架构,完全分布式硬件,像「数据流「一样的风骚走位。

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

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

欢迎加入本站公开兴趣群
商业智能与数据分析群
兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识
QQ群:81035754

鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

 

GMT+8, 2017-1-18 22:14 , Processed in 0.653196 second(s), 30 queries .