吞吐和速度(率)经常被混淆,当提到 100Gbps 网卡时,“它很快” 的意义可能只是 “它很多”
100Gbps 指 1s 内发送的比特数为 100G,如果在这 1s 内塞入更多比特,以下是两种方式:
显然,上面是更多,下面才更快。如果衡量快慢,波特率/比特率才是指标。
“快” 好像是时间概念,“多” 一定是空间概念,自微积分出现以来人们一直用多来形容快: v = d Q d t v=\dfrac{dQ}{dt} v=dtdQ,但这只是数学处理的技巧,反而古人对速度的理解更符合直觉。
如果用 “多” 度量 “快”,芝诺说人永远追不上乌龟,这里包含了作为微积分基石的极限思想,然而现代物理学证明时空是量子,那么极限何在?哲学问题最后再说。
现代高速以太网依然用 “多就是快” 的思想迭代,从脉冲幅度,波特率,通道数三个维度持续优化,其中只有波特率是真 “快”。碰到技术极限前,它可以一直向前。其迭代速度远超 CPU 的迭代速度。
带宽和 CPU 的发展 从技术视角分析了带宽和 CPU 的极限,本文假设不存在能耗,散热,内存墙等技术问题,看看计算和传输的核心本质。
“CPU 快” 指单位时间完成的指令数量多(与波特率/比特率对应的是执行单条指令的时间),CPU 乱序,指令级并行等技术和网卡优化是同一方向,都信仰多就是快,但和网卡传输无关比特不同,CPU 指令之间存在关联,能多大程度拆分无关指令决定了 CPU 极限。
无关指令可分派到独立硬件并行执行,达到多就是快的观感,这种分派就是空间换时间。
图灵机纸带上的小方块随时间依次经过读写头,它号称可以计算整个世界(停机问题?)。如果时空可倒换,就存在另一个形态的机器:
右边机器没有时间概念,所有计算被按照图灵机纸带上逻辑连接好的电路一瞬间完成。可以想象,我们整个世界也可以这样展开。又是个哲学问题。
问题是只有提前知道纸带所有内容和蕴含结果后才能这样展开,这需要整个纸带执行一遍,这里存在明显矛盾,如果纸带不被执行,就无法空间展开,如果被执行一遍,就没必要再展开。
所以时空不能倒换,那么时间的本质是什么。传统说法,时间是熵,熵又是什么。熵本质上是概率,不如抛开熵这个词直接说概率。
假设一个世界由 a,b,c 组成,这个世界将会出现以下几种状态:abc,acb,bac,bca,cab,cba,概率一样。这里需要一个世界观,你得承认世界是变化的,没有时间,只有变化。如果不施加任何作用,世界随机变化,毫无规律在 6 个状态之间转换,一切混沌不可知。但施加一个作用后,比如 abc 只能变换到 bca,规律出现了,一旦世界处在 abc,就知道它马上会进入 bca,不断施加作用,将会出现越来越多这种状态关系,状态转换概率不再一致,形成了一条条概率状态转换链,不断撤掉这些作用,状态转换的概率又将趋于一致,趋向混沌,出现了这么一个方向,就是时间。
我们的世界比 a,b,c 大得多,但意思一样。
回到图灵机,纸带的执行过程就是在构建或拆除状态间的关系,而这些关系则让某些状态的概率高于另一些。每当运算器读入纸带内容并计算,就构建或拆除了一种关系,比如 “将 A 排在 B 后面” 就锁定了 A 和 B 的关系。按上一段的解释,有关系的状态指状态间不能互换,它们在时间中延展,无关系的状态可以随意互换,它们在空间中延展。
CPU 执行有关系的指令流,纸带再宽也比不上长度,按上面的解释,如果将长度铺开成宽度,长度缩短为一点,宽度无限,就意味着所有指令都无关系,所有状态概率一致,世界一片混沌,何谈程序。纸带每短一点,每宽一点,程序就松散一点,最后变得不再是程序。程序逻辑无关的粒度决定了 CPU 上限。
网卡发送比特则是另一回事,比特之间对于网卡而言毫无关系,只要技术不限制,网卡可以任意使用并行技术发送比特,空间换时间。
对传输的建议是,一旦数据脱离程序,比如进入 socket,就应解除数据之间的关系,这样便可充分利用网络近乎无限的带宽潜力。
说点哲学和世界观问题。
由是观之,时间的本质是概率变化,速度只是一种感觉,但涉及计算的速度确实只是一个 “数量”。那么我们如何感知速度的呢?这等价于我们如何感知时间,进一步,如果时间只是概率变化,它是如何给我们 “流动的感觉” 呢?
一个物体从 A 移动到 B,连续对这个过程拍照,将拍摄好的 n(假设是 5) 张照片用以下两种方式摆在一个人面前:
通过观察得知,图一看不出任何关系,图二 5 张图片有明显的关系。从图一中,他无法从一张图片猜出下一张,但从图二中他却可以,类似 a,b,c 组成的世界,abc 后一定是 bca。因此,这个人感受到了物体从 A 到 B 的连续过程,这个感知到的流动,就是他感知到的时间,其背后是概率转换关系,他从关系中感知时间。
如果伪造 5 张照片,或者随意抽出 5 张毫无规律的照片,按照某种规律人为排列顺序,一张张给他看,他就能从不存在的规律中找到规律,这个规律让他感受到时间流逝,而时间之所以流逝来自于骗他的人事先对这些凌乱的图片做了功,就像上紧一个发条,松开手就会复位一样,这个过程让被测者感受到了流动,一环扣一环,一拍随着一拍,按照自己大脑中已存在的预设,接收状态的变化。而这个预设,来自记忆的构造。
我们通过视觉,听觉等不断从世界接收信息,这些信息不断塑造我们的神经元网络,形成记忆和反射,最终所有这些分布在整个大脑的信息构成了我们的记忆,特定记忆不存储在特定区域,每个记忆都分布存储在整体。世界由不断变化的状态构成,而记忆是与自己有关的变化。
如果在马路中间目测一辆车离我们 200 米,假设世界不再变化,我们会通过记忆 “推算” 出这辆车接下来在哪里,然后我们会决策自己该怎么做,以构建或拆除某些关系。如果世界重新开始运转,车突然消失了,我们会懵逼,因为这不符合我们的预设。
整个世界可以看做在我们面前按照特殊规则摆放的一张张静止的图片,我们通过对神经元的不断塑造发现(模型训练,学习的过程)这个规则,这个规则包括我们自身终究会老并且死去。假设存在一个没有记忆只是活着的人,世界的每一个状态对他都是全新的,他无法关联任何状态,他就感受不到时间。
主观时间并不客观存在,主观时间只是一种对概率变化有意识的预设。而速度则度量有意识的预设和实际之间的偏差,预设 “它会出现” 但并没有 “等太久” 就真出现了,这就是 “快”,而 “等太久” 意味着在它还没有出现前侵入了其它预设,都是意识的反应。
如果没有自由意志对状态概率变化的预设,时间就是:和 “abc 后不一定是 bca” 相比,“abc 后一定是 bca” 概率更高。
世界的本质是状态的变化,概率度量时空变化,而每一次变化都会影响时空坐标系本身,故时空并不独立,一切都是概率。
最后,编程是一个用最低成本构建低熵体的活动,程序是个逆时间的过程,一个程序执行后,达到了某种效果,改变了世界状态转换的概率。意思是程序员要加钱?
故有无相生,难易相成,长短相形,高下相倾,音声相和,前后相随,恒也。
浙江温州皮鞋湿,下雨进水不会胖。