不变的道
上次以不变的道为题做了谢老师高级计算机系统结构的演讲。当时在上台之前,因为觉得自己思路诡异,加上对自己所做的总结是否会被认可没有信心,所以非常紧张。没想到讲完之后却被大家理解并认可了。回头反思,越来越觉得自己是对的,而且觉得这些思想可以对人有帮助。所以分享给同学,之后又被邀请去在实验室的例会上讲。
我由于做过的事比较杂,本科阶段学自动化,弄过自动控制系统,后来又学计算机。做过模拟电路、模数数模转换、单片机系统、组成原理上设计CPU、又用FPGA做RISC CPU、做过嵌入式系统、PCI仲裁电路、也做过很长一段时间的软件架构。做这些的过程中,我就一直觉得有一些不变的思想在其中,想要表达却表达不出来。所以想借用中国古代老子的话来阐述:道生一、一生二、二生三、三生万物。不变的道,主要讲在计算机和相关学科的发展过程中那些没有发生变化的思想,并以不变为基础去研究正在发生的变化。从基础的内容开始讲起,从最原始的器件研发开始,谈到多器件分工合作,再到超大规模系统架构。具体内容跨越了数字电路设计、Soc设计、计算机总线设计、软件设计、分布式计算、云计算、云存储等等从小到大从软到硬各种系统。不变的道是关于思想的,目的是想找到最核心的东西。强大的理论引导强大的实践。当我们找到的这核心的思想和方法,会对我们认识、分析和设计系统有非常大的帮助。
道生一:一切都是记忆的
说的很玄乎,那么我要讲的到底是什么?先从无开始。计算机世界的基础就是把现实世界用物的形式记录下来。我想称之为记忆,或者采用一般的说法称为“数字化”。
用数字来描述世界我就不多说了,像用数字的形式记录图片、声音、文字。重点强调两种:
- CPU是逻辑运算的记忆
- 总线是传输的记忆
这里换了个思路,把CPU和总线这样的基础部件和数据统一起来看。这就是我为什么更想用记忆而不是用数字化这个词的原因,因为CPU和总线并不是以数的形式保存于存储介质上而是以器件的形式把计算和传输保存下来。
那么这样统一了有什么好处?
- 模糊了CPU和程序的界限,物和逻辑统一
- 更高程度的抽象可以适应更广的范围,如:把自动控制系统中的比例微分积分环节用模拟电路的形式记忆下来
而且逻辑运算和总线传输是使用最为频繁的两部分记忆。按照一个最基本的原则,提高最经常使用的器件的速度,所以这两个部件大多以硬件的形式存在。
一生二:数据和计算
世界的逻辑和数据开始以记忆的形式保存于器件中,开始分化出数据和计算。我们不妨把这再者和阴阳学说对应对应:
- 计算和数据一动一静、一阴一阳
- 计算是动的,却常以硬件的形式固化下来
- 数据是静的,但是却处于变化中,并且包含运动的程序序列
我不是故意去套上阴阳学说。中国古人看世界就是看的模糊的世界,最常用的手法就是类比。我这样一模糊就把数据和计算之间的转换体现出来了。通信的概念便开始有了。
二生三:计算机被简单的分为三个部分:数据(存储)、传输(通信)、计算(程序)
从这里开始数据和计算不被孤立开,开始出现传输。我认为最应该引起我们重视的不是计算,而首先是数据通路。即传输部分,因为这是直接和系统架构有关的。
- CPU不是最重要的,传输在CPU的架构之上
- 无论软硬件设计,甚至包括模拟电路,都是首先设计好数据传输的通路
三生万物
到这里介绍了一些很抽象的概念。但是物件已经生成,下一步就是要开始向“万物”演化。如何演化,请看续集。
首先,我从基本的硬件架构和软件架构谈起讲到:
然后,忽略软硬件的差异,抽象出来看世界。谈到:
这些是暂时完成的内容。后面将谈到多核、并行编程、超级计算机和云计算的问题;以及磁盘阵列、SAN、NAS和云存储的问题;物联网与CPS的问题;还有新型器件的问题;然后从应用的角度看设计理念上的细微变化;从节能角度看设备的管理。
我觉得不变的道所描述的内容已经是一套完整的思维方式,可以扩展到各个方面。对大家分析,理解和设计系统都会很有帮助。
很厉害啊~
刚看了一下,收益很多,想全套《不变的道》转载到个人博客,不知可否?
可以转载,转载请把链接带去,谢谢~~
博主现在读研还是?
读博