一个最本质的问题揭开了...计算(CS)和通信(EE)两个专业的差异,追根溯源,这种差异居然在上溯到两个行业的祖师爷图灵香农时找到了答案. 两位都是最杰出的数学家,但是对于数字的动与静的不同视角带来了差异,这也是我一直在尝试着让大家理解下面这段话的最根本的意义:


网络的本质是承载数据流,内存是数据流在某个时刻的快照,而计算是基于快照信息而产生新的数据流。

对于未来,以应用为中心,并兼顾软硬件一体化的传输协议才是我们最迫切需求。


计算的本源

1936年,图灵向伦敦的数学杂志投了一篇题为《On Computable Numbers, with an Application to the Entscheidungsproblem》的论文。正是在这篇具有重要意义的论文中,图灵开始提出著名的“图灵机”(Turing Machine)的设想,给“可计算性”下了一个严格的数学定义:

图灵机的基本思想是利用机器来模拟人使用纸笔进行数学运算的过程,通过一个机械操作的读写头去模拟笔和眼睛,可以在纸带上写上或者擦除某个符号,也可以像眼一样移动到纸的另一个位置。为了模拟人的这种行为,图灵构造出了这样一台假想的机器:

1、一条无限长的纸带 TAPE。纸带被划分为一个接一个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号 表示空白。纸带上的格子从左到右依此被编号为 0,1,2,... ,纸带的右端可以无限伸展。

2、一个读写头 HEAD。该读写头可以在纸带上左右移动,它能读出当前所指的格子上的符号,并能改变当前格子上的符号。

3、一套控制规则 TABLE。它根据当前机器所处的状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态寄存器的值,令机器进入一个新的状态。

4、一个状态寄存器。它用来保存图灵机当前所处的状态。图灵机的所有可能状态的数目是有限的,并且有一个特殊的状态,称为停机状态。

注意这个机器的每一部分都是有限的,但它有一个潜在的无限长的纸带,因此这种机器只是一个理想的设备。图灵认为这样的一台机器就能模拟人类所能进行的任何计算过程。

重要结论 你可以看到整个计算过程中,运动的是机器和读写头,而静止的是这一条纸带.

通信的本源

1948年,香农发表了信息论的奠基性论文《A Mathematical Theory of Communication》,正如文章中一开始讲到的:

通信的基本问题就是在一个地方复现在另一个地方选定的消息,这一复现可能是准确的,也可能是近似的。这些消息通常有特定的含义;也就是说,它们会根据某一系统,与特定的物理或概念实体关联在一起。通信的语义与工程问题无关。

重要结论 香农通过通信的手段,为图灵机拼凑出了一根无限长的纸带。而图灵机改写的纸带格子又成了香农通信的信源。

冯·诺依曼结构

而把这一切黏贴起来的就是冯·诺依曼,利用香农发现的布尔代数与开关电路的等价性, 把图灵机的纸带变成了电子化的存储器,而同样读写头变成了电子的运算器和控制器。

而计算的结果成了输出设备,也就是香农的信源。输入的设备也就成了香农论文中的信宿。而现代电子计算机发明的初期,数据流并不大,甚至到了现在我们考试用的机读卡也还是纸带传递信息。

冯·诺依曼瓶颈

伴随着过去数十年通信技术的飞速发展,特别是近十年,下图或许更能直观的显示这个问题

传统的冯诺依曼架构中,计算单元和存储单元是分离的,因此大量的数据流动产生了内存墙和冯诺依曼瓶颈

本质上数据就像是一个大的洪峰(Network)到来时,你却只有一个小池塘(Memory),扩大内存带宽和添加Cache修筑大坝的疏浚工程一直都在做,但是您看看现在CPU周围的线已经密成什么样了?

于是内存墙的瓶颈变成了一道难以逾越的天堑,无论是在带宽上或者是在容量上都难以达到要求。

走偏的Offload技术

头痛医头、脚痛医脚的思维方式逐渐显现出来,最有代表性的作品就是下面这个图了

一开始是发现,处理的单个请求数据量大了, 超过了一个数据包的长度,无论接收和发送都需要切分成一块块的转发,因此有了Large Segment Offload 和 Large Receive Offload的方式,另一方面是验证消息的完整性需要的Checksum计算。然后发现有多个处理器还有虚拟化的需求,逐渐开始实现SRIOV即虚拟出多块网卡给多个虚拟机用,并且支持多队列给每个核调度,例如RSS

然后紧接着发现虚拟机之间相同通信的虚拟交换机OVS成了性能瓶颈,于是开始卸载它,先是使用软件DPDK来通过专门使用一个核加速,然后是针对数据面FastPath卸载:

另一个有趣的卸载方式就是瞄准了协议栈,主机的内核协议栈很多数据结构是互联网初期设计的,那个年代的带宽是28.8kbps,RDMA这种Kernel bypass并且可以Offload CPU的技术自然就成了大家追捧的热点,RoCE、TCP offload,当然解决了一个问题又引入了另一个问题,那就是RDMA自身的Go-back-N机制导致了需要无损网络。而这些吹捧无损网络的人真该回去好好看看香农的<通信的数学理论>,算一算信道容量。

紧接着把这个局推向高潮的是两家云计算厂商,AWS Nitro采用了ARM多核RTC架构构建,阿里云神龙采用了FPGA的Pipeline架构。去年神龙的团队还跟我讨论过RTC和Pipeline的取舍,今年早些时候去拜访阿里云VPC团队的时候也谈及过这样的问题,最大的区别在业务需求上导致的Branch stall和相应的Branch Prediction上,RTC的Multi-Thread可以很好的隐藏延迟,而Pipeline架构则非常的难。

然后大家看到这些云网络管理的软件占用CPU核的成本,于是开始Offload他们

而这样的结果是,网卡上无论如何都有了一颗RTC的CPU,做OVS控制面的卸载、做安全功能卸载,然后整个行业还在yy疯狂的加功能...

“我们并没有做错什么,但不知道为什么,我们输了。”-诺基亚

不知道有多少人听过这句话,并为之黯伤。惯性思维之下的不停做加法便是最后输掉整个赛道的本质。例如直接把Windows系统搬上手机的微软和他的几个队友(多普达、HTC等)

这就是在各种需求下惯性思维做出的东西,很短暂的就退出了历史舞台

结论 基于ARM多核的DPU架构团队基本上工程交付难度比做一颗通用CPU还高,而基于P4 Pipeline的团队在功能上特别是RFP应答上会面临重大的缺陷, 最本源的问题是,我们真的需要Offload这么多功能么?

追溯本源

工业界大佬里看清楚这个问题的本质的,大概只有两个人,一个是大神金克拉Jim Keller,至于他的光辉历程,下面这张图讲的够清楚了,而说他看清楚了这个问题是因为他最近在Tenstorrent的东西做的非常有趣

而另一个人是Victor Peng,Xilinx的CEO在ISSCC 2021的讲稿有这样一页

Offload的加法已经过时了,而需要考虑的是如何改变计算的范式。

再谈Offload

或许对于Offload怎么错的,工业界在大量的资本压榨下没有人敢发声,毕竟要做减法端掉自己的屁股还是甚少有人有这个勇气的。那么我们再来说一个形象的比喻:早期的汽车制造每装配一辆汽车要728个人工小时,因为车是不动的,由工人去拿各种零件来安装,而工人的熟练度又有所不同,有的人就连材料和工具都不认识,这样既降低了效率,又浪费了人手。而Offload的做法无非就是给工人配螺丝刀、扳手等工具来加速,虽然短期来看解决了工人处理的瓶颈,的确收益大于成本,但时间长了又会发现整个运送原件的效率成了瓶颈,也就是说工人本身移动的速度成为了瓶颈。

解决问题的关键往往是从最底层的地方去思考,1921年福特决定换一种思路,不是让人适应工作,而是让工作适应人,提供人们简单易学的任务,练一天就能上手,这样就解决了劳动力不足和效率不高的问题,流水线就这样诞生了。

而DPU需要去做的正是这条流水线,而不是去给工人提供加速工具卸载他们负担。

静止的图灵 vs 流动的香农

再回到本文的开头,图灵机需要的是一张静态纸带供它计算,而香农把图灵修改的纸带流动起来了。动静之间,也就推出分布式系统中最重要的一致性问题,多个图灵机的计算需要达成共识才能满足一致性。动静之间诞生了存内计算在网计算的场景,其实这些都和福特发明流水线的做法是惊人的一致的,只是所有的DPU厂商尚未真正意识到这样的变革,还在学着微软和诺基亚制造着新一代智能手机(不对,智能网卡)

而像苹果那样,把手机只是当成一个App的变革也正在发生,下一代DPU内,网卡只是一个非常简单的App,正如前一节Victor Peng的ppt,统一的存内计算才是分布式计算的关键,一条最标准的流水线就是打通各个节点隐藏通信的内存接口。

动静之间的接口便是一块内存,也就是文章开头那句话:

网络的本质是承载数据流,而内存是数据流在某个时刻的快照,而计算是基于快照信息而产生新的数据流。

从数据中心到以数据为中心

从计算的演进的过程来看,Armin博士在去年SIGCOMM上讲的这张ppt总结的非常好

从早期的人机通信到计算机之间的相互通信,以及传统的机器互通或者业务互通,计算机体系结构的设计主要是以静态数据计算逻辑为主。本质上是撰写代码去处理数据。

当发展到第三代末期的时候,复杂的应用程序已经无法在单台机器上运行了。阿里巴巴诞生在这个年代,而阿里云的诞生本质也就是第四代分布式计算架构的代表。多核心处理器的出现,Spine-Leaf这样的分布式网络架构,Overlay技术等等。伴随着这些技术人与人的沟通交互变得更加便捷,也没有了难做的生意.

但是这一代架构又遇到一些问题,一方面是由于交互产生的数据流动需要更加实时的计算。从Hadoop到Spark、Flink的转变就可以看出人们对数据交互实时性的需求.另一方面是AI的兴起使得计算范式发生了巨大的变化,人开始向机器寻求洞察力。这种洞察力体现在由机器以数据为中心的计算模式,这种模式并不是简单的去处理数据,而最大的变革是要从数据中抽取能够产生决策的代码。

减法!减法!


Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it.

-EDSGER W.DIJKSTRA


你会发现我们设计的新一代智能网卡像智障一样简单,而这种简单正如福特的那条流水线只有一个轨道和一些托盘一样:

而这条新的流水线就是上图中的Memory abstraction layer,而网卡自己的结构真的简单到一开始你都看不出它有什么特别的

而艺术的本源就在这里,也就是文章一开头的另一句话:

对于未来,以应用为中心,并兼顾软硬件一体化的传输协议才是我们最迫切需求。

其实就是一个基于数据包的传输协议,无论在主机内还是在通信中具有相同的格式和相同的范式,把计算的指令射向数据,而不是把数据搬到计算节点,正如福特当年发明流水线,不是让人适应工作,而是让工作适应人。而我们不是让数据进入数据中心,而是以数据为中心,流动着进行计算。

例如zmemif这样的项目,直接给容器提供用户态的内存交付接口,使得go这一类的应用能够轻松应付千万级QPS的需求,话说字节开发cloudwego的同学可以去看看集成到你们的Netpoll中:)

通过一个跨越多机的内存抽象层,把繁复的问题都解决了。而Serverless的框架也顺带把虚拟化的问题清理干净了,于是整个网卡非常干净,业务的性能又非常高,在这个流水线上调用专业工人(不对,学名叫DomainSpecific ASIC,DSA)的能力也非常好。

结论

正如福特发明流水线,乔老爷子发明Iphone,抑或是Elon Mask构建SpaceX。很多事情你需要去从问题的最根源的地方考虑,并在那里寻求到自己的答案,技术和艺术的区别就在此。

图灵和香农都是数学家,但你需要理解他们受人以渔的精髓:

也正如乔老爷说:


Design is a funny word. Some people think design means how it looks. But of course, if you dig deeper, it's really how it works. The design of the Mac wasn't what it looked like, although that was part of it. Primarily, it was how it worked. To design something really well, you have to get it. You have to really grok what it's all about. It takes a passionate commitment to really thoroughly understand something, chew it up, not just quickly swallow it. Most people don't take the time to do that.

Simplicity is the ultimate sophistication.


掌握后台核心技术,深入理解Linux系统,基础概念深入理解,基本功修炼,疑难解答,欢迎大家加入极客星球,我们一起进步,学习是一辈子的事情,长期坚持学习,定能掌握核心技术,对星球感兴趣的,点击查看-> 极客星球:

进腾讯了|学习技术哪家强

- END -


看完一键三连在看转发点赞

是对文章最大的赞赏,极客重生感谢你

推荐阅读

定个目标|建立自己的技术知识体系

大厂后台开发基本功修炼路线和经典资料

难走的路,从不拥挤

你好,这里是极客重生,我是阿荣,大家都叫我荣哥,从华为->外企->到互联网大厂,目前是大厂资深工程师,多次获得五星员工,多年职场经验,技术扎实,专业后端开发和后台架构设计,热爱底层技术,丰富的实战经验,分享技术的本质原理,希望帮助更多人蜕变重生,拿BAT大厂offer,培养高级工程师能力,成为技术专家,实现高薪梦想,期待你的关注!点击蓝字查看我的成长之路

校招/社招/简历/面试技巧/大厂技术栈分析/后端开发进阶/优秀开源项目/直播分享/技术视野/实战高手等, 极客星球希望成为最有技术价值星球,尽最大努力为星球的同学提供面试,跳槽,技术成长帮助!详情查看->极客星球

求点赞,在看,分享三连

香农和图灵的边界|网络和计算的本质相关推荐

  1. 港大黄凯斌:6G时代的边缘智能,香农与图灵的相遇

    5G时代刚开始没多久,现在科研人员已经开始攻关6G.科研真是生产一代.研发一代.在6G场景下,新的通讯技术会给人工智能(AI)带来什么?有哪些创新的想法? 4月8日,在AI TIME青年科学家--AI ...

  2. 非香农类信息不等式_ICLR2020|北大图灵班本科生满分论文:计算约束下有用信息的信息论...

    机器之心转载 来源: 北京大学前沿计算研究中心 作者:许逸伦 本文是第八届国际表征学习会议 (ICLR 2020) 入选口头展示论文 (oral)<基于计算约束下的有用信息的信息论 (A The ...

  3. 香农的贡献及其对后世的影响

    转载一篇纪念香农的文章,此公是我人生中的灯塔. 香农的贡献及其对后世的影响 Claude E. Shannon: His Work and Impact 张卫国,高新波,蒋洪波 关键词:香农:信息论: ...

  4. 技术前沿与经典文章10:信息论之父香农,20世纪伟大的科学家,一个理论改变了一个时代

    一.信息论的奠基之作 1687年7月5日,牛顿的<自然哲学的数学原理>首次出版发行,引爆了整个学术圈,从此奠定了他的江湖地位,而这本书也奠定了现代科学的范式. 1948年,香农发表了一篇英 ...

  5. 后香农时代,华为提出10大数学挑战问题

    来源:机器之心 编辑:杜伟 后香农时代的通信技术会如何发展?又有哪些值得业界关注的数学问题呢?在上月底结束的长沙「数学促进企业创新发展论坛」上,华为董事.战略研究院院长徐文伟抛出了后香农时代信息产业发 ...

  6. 华为徐文伟:后香农时代,面向数学的十大挑战问题

    本文为2020年8月28日徐文伟在长沙由中国工业与应用数学学会举办的"数学促进企业创新发展论坛"上的发言 来源:中国科学院院刊 徐文伟 华为技术有限公司董事,华为战略研究院院长 后 ...

  7. 香农三大定律与奈奎斯特定理

    Table of Contents 香农三大定理 香农第一定理(可变长无失真信源编码定理) 香农第二定理(有噪信道编码定理) 香农第三定理(保失真度准则下的有失真信源编码定理) 何为香农定理 奈奎斯特 ...

  8. 张亚勤:深度学习更近一步,如何突破香农、冯诺依曼和摩尔瓶颈?

    来源:机器之心 本文约3100字,建议阅读6分钟 本文为你分享张亚勤在2020 CEO 年会上演讲<未来科技趋势展望>. 近日,在联想创投 2020 CEO 年会上,清华大学讲席教授.智能 ...

  9. 贝叶斯、香农、奥卡姆合写博客「机器学习是什么」

    贝叶斯.香农.奥卡姆合写博客「机器学习是什么」 https://www.cnblogs.com/DicksonJYL/p/9698362.html 作者:Tirthajyoti Sarkar 来源:T ...

最新文章

  1. git pull出现There is no tracking information for the current branch
  2. 试试回答Frankyang的问题-什么样的人适合攻读博士学位?
  3. HDOJ 1171 Big Event in HDU
  4. Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器
  5. php 降低图像大小,在PHP中调整图像大小
  6. 秀操作:函数宏的三种封装方式
  7. 前端技术学习之选择器(十三)
  8. 使用HttpClient连接池进行https单双向验证
  9. CSDN—编写博客(快捷键)
  10. 文件带 BOM 的看法
  11. ActivityGroup对子Activity的管理
  12. [QUANTAXIS量化分析]滚动复利策略
  13. 五笔86和汉字对照表
  14. 自然语言推断:微调BERT
  15. R语言 dataframe 取指定行列filter 随机取数
  16. QT+opencv学习笔记(5)——霍夫直线检测、圆检测及椭圆检测
  17. 图片从base64编码转换为jpg文件
  18. Field accountDao in com.mdxl.service.AccountService required a bean of type 'com.mdxl.dao.MbAccountD
  19. 服务器里那个文件是地图的爆率,关于普通图爆率研究
  20. 亚马逊Facebook头条布局社交电商的焦虑

热门文章

  1. STM32生成bin文件
  2. 新版标准日本语初级_第三十七课
  3. 蓝桥杯 算法提高 实数相加
  4. Word2013使用 插入题注的方式为word自带编辑器编辑的公式进行编号
  5. ExoPlayer网速估计方法
  6. JAVA学习笔记(核心技术篇一)
  7. 11s到1s,性能优化之首屏加载
  8. 带你了解什么是Nginx(实操反向代理-负载均衡)
  9. 获取svg内text文本元素的高度、宽度及坐标等信息
  10. 基于STM32的门禁系统源码分享