为我们的产品写本书

为我们的产品写本书

最近接受了一个任务,为我们的处理器写本书。我想过以后要写书,但目标不是写这个。我原来的目标是写架构设计的,但写这样的书也是我的梦想,能干这样的事情,我很高兴。

像我们这一代计算机科技工作者,都是读西方的技术书长大的,看我们国内自己的人写的书,常常有种用力过猛的感觉,该强调的没有强调出来,知识也连不成逻辑。说到底,我们没有产业,别人写书的时候,本来就和企业的人天天混在一起,人家知道当时那个设计为什么要那样选择,知道每个设计的重点在哪里。而我们没有产业做支撑,对不对,只能听别人的权威意见,不敢有一点不同,因为不同了你也没法校验那是真的还是假的,最多在别人的信息上做一些逻辑推理,但这种推理往往还因为自己没有实际的经验强调错了地方。(当然,我看的书有限,这个观点可能有偏颇,只是想说明产业对学术的重要性而已)

而现在,我们终于开始有自己的产业了,在实用技术的最前沿服务这个社会,我们也应该可以开始把这些新的知识反馈给我们的学生,我们新进的程序员了。这真是件令人高兴的进展。

计算机是变化极快的产业,我98年开始入行,还在使用386工控机开发我们的交换机产品,高级一点的486也不过是25MHz,转眼间我们的设备就经历了PowerPC,MIPS,ARM一代代的变化,主频都已经发展到3GHz了,从普通流水线,开始用到VLIW,超标量,多核,多CPU……操作系统从自己做,变成pSOS,VxWorks,QNX,Linux乃至又开始用自己的OS。不做现在这个产品,我都没有意识到现在总线已经全部变成串行总线了,也没有意识到嵌入式上焊死的内存和动态可插的DIMM条在软件上居然还有那么大的差别。很多人像我这样,长时间学着老式的教材掌握的计算机组成知识,写着最新的平台的程序,逻辑是破裂的。这个看看知乎上不少程序员问的基础计算机问题就能看出来。这些知识需要有人给他们做刷新,这样我们写一本这样的书,就有理由了。

我给它起个题目叫:Kenneth-Lee-2012/从鲲鹏920了解现代服务器实现和应用_公开。把它做成一个开源项目,是因为我自己还有其他的设计任务要承担,很难花很多时间在这上面,同时呢,我能力有限,我准备邀请我的其他同事和伙伴也进来帮忙一起写。我也不想等写完以后再让它起作用,反正我们也不靠它赚钱。写完多少,读者马上可以看到,也立即可以给我反馈。书的作用马上就有了。出版这个事情可以慢慢来。等架子有了,出版的时候申请加上一些“内部资料”补充进去,应该还是有人埋单的吧;)

支持我写书的人当然目的是为了带盐做广告,但对我来说,我只是专心去讲计算机组成原理(从软件开发者的角度),只是例子我全部用我们的产品来做例子,这个盐是天然带进去的。如果有同行希望带他们的盐,愿意把他们的实现作为例子放进来,我当然也热烈欢迎。喜欢看我这个专栏的读者应该知道,我的策略素来是建立双赢的目标,然后专心为这个目标努力,从而把所有人都卷入利益链的,所以完全不用担心我有什么私心,因为对我来说公心本来就是私心。

所以,怎么说呢。各位如果有现代计算机组成原理方面的问题,不妨告诉我,我会逐步都补到书里面去,如果大家发现我有什么说得不对的,也请告诉我。如果您也愿意提供您的见解,给我发个Patch吧。但请您不要跟我谈我的单位的名字。法务这种东西,很多时候不说就没有,说就要一堆的手续,基础的法务工作我已经做了,但没其他事,咱不去惹这些东西。我们就技术谈技术好了。

最后,说说产品情怀吧。这个产品不算它的前导产品,做了至少8年,既要营造生态,又不能到处张扬,还要活下来,整个过程大家都挺憋屈的。还记得有一位OS供应商的专家在Linaro的一个Keynote上调侃我们说的:我们的OS现在支持XX,XX,XX,以及you-know-who了,这个you-know-who的产品已经用在我们的数据中心中,下面也坐了不少你们的人,但我就是不能说出你们的名字……

所谓“备胎”,也就是如此了。当然了,市场策略可以这样定义你,你自己技术上也敢这样定义自己,那你可备胎都当不成了。所以,我们从一开始可从来没有认为自己是备胎,我们的设计可都是对着最顶尖的服务器设计对象去的。而且我也反复想告诉认为我们做了一台“大手机”的关注者们:我们从一开始就基于我们在服务器领域的经验直接设计的软件,硬件,SoC和里面的核,核的训练模型都是数据库,Web前端,HPC这些应用的,内部总线,流水线深度,选择的ISA特性,都是专门针对服务器环境设计的,网络是100G的,SAS/SATA端口不加Expander都可以直出8个端口,而且这些设备全部支持SR-IOV可以虚拟化直出硬件接口的,大手机哪里撑得住这样的折腾啊?

感谢我们那些稚嫩、专业、刻苦、奇思妙想的软硬件同事们,你们让我们领略了一个新的领域的最前缘技术,虽然我平时出了做各种讨论没说过什么好话,但我从心底上佩服、感激各位的,只是好话不需要说出来,只需要做出来而已。

也感谢在生态的各个合作伙伴们,感谢Linaro和我们合作的Linaro的同学和合作伙伴的同学,包括那些被外人认为是我们竞争对手的朋友们,一直以来对我们无限的支持和鼓励。没有你们,今天的生态不是现在这个样子。希望我们能给服务器这个生态带来一个新的面貌。

也希望我们这一点努力,可以为更多的企业和学术合作打开更多的门窗,我们的进步,不能只有个别企业的进步,否则永远都无法成为体系的。


我个人其实现在的工作主要也不是这个产品了,它已经上路,软件架构上能做的事情不多了。现在商业机会窗打开,大量资源开始被加入,巨大的流水流进我们的框架,能否撑住,都看当初建立的架子是否合理,错了的东西,都是无法回头的了。发展期当然也有发展期的努力方法,但架构师能起的作用就和当初完全不同了。下一步的发展努力,主要其实也就是靠不断增加应用(真实的商业场景)来证明我们架构的生命力。在生态上,我剩下最大的期望和努力方向是希望看到和帮助我们的Laptop可以上市,正如Linus说的,ARM的服务器生态,如果没有开发用机,只有服务器是不可能成功的。但市场有市场的规律,这个事情我们做研发的急也没啥用,只好一步步来吧。


这本书的基础内容我用Sphinx写的。有读者可能不熟悉Sphinx文件系统,我这里简单介绍一下。

Sphinx是Python的一个文档工具,专门用于Python的文档写作,Linux Kernel也用它管理自己的文档。它有点像简化版的Latex,内容是文本文件(扩展名是.rst),但可以自动生成为不同的其他格式,比如html,pdf等等。

如果读者不是程序员,也可以直接在码云上看的,只是没有目录,你可以直接从这个链接进去:

里面是这样的:

然后,点击index.rst看目录,找到目录中的每个文件的名字,像这样:

然后点相同目录下的那个rst文件,单独看那个章节。这会是这个样子的:

如果读者是程序员,这样下载代码:

git clone https://gitee.com/Kenneth-Lee-2012/know_modern_server_from_kunpeng920_pub.git

保证你本地安装了Sphinx,然后运行make html生成html文档即可,生成的文档会是这样的:


我现在只是在试写,大部分内容都有一定展开,一边确定这样写能不能把逻辑链撑起来,内容是否能找到,也让帮助做内容审核的同事可以知道这些内容是否会引起泄密等。文字大部分都没有经过雕刻,我是先把可能的内容摆一个架子在那里,后面再慢慢调整。最近疫情,有些信息要找人要,时间Delay了,也来不及回实验室,很多照片还来不及拍,但基本的架子都是有的了,有些章节也已经写得比较深入了,有兴趣的读者可以基于这个架子给我提意见,看看您想知道哪方面的知识。

编辑于 2020-02-15 09:40