十年一梦处理器……
2赞开始填坑!
上周五,我找几个研一的同学开了一个启动会。是关于2017年准备要流片的处理器的。10年了,终于要真的去做处理器了。
10年前,我刚刚还是一个研一新生。那个年代正是中国IC如火如荼的时代,以珠海炬力(现在这个词都是冷僻词汇了,我用sogo输入法找了半天才找到……)为代表的一帮IC设计公司成功创业上市,风头和前几年高歌猛进的“移动互联网”企业非常有的一拼。我当年读研究生就只有一个想法,就是做IC。为什么呢?因为我觉得通信这个专业里面,算法、网络、信号处理都太虚了,也就是通信IC比较实打实一点。而且我天生对那种框图表示的东西好感度要高过一堆数学符号和纯代码(虽然我后来才知道IC设计并不是画框图),所以觉得这个方面确实很不错。
作为一个研一的新生,首先要做的事就是参加我们实验室的新生见面会和老一辈的学长们见面聊聊天。再那个年代,导师少,学生多,还有一些青年教师呢主要时间精力都得去应付本科生上课(其实我刚留校那两年也是一样的情况)。所以主要都靠高年级学生带带低年级学生做事。学长们嘛,也就是来介绍一下自己的项目组是干什么的。当时我们实验室主要就两大方向:IC设计和嵌入式设计。IC设计呢,当时主要就是做做什么USB接口芯片,从1.1、2.0开始做到OTG。嵌入式呢?就是做点无线通信相关,主要是给Freescale做点Demo和预研啥的。比如什么无线鼠标、蓝牙耳机……后来接了点高大上的项目,也就是用多核DSP来做做TD-SCDMA的协议实现。在今天看来,没有什么学术含量。但在当时,就代表了高校科研的主流做法:高校作为企业的预研部、技术开发部甚至是技术推广部。
不过听了一圈,觉得也都没什么意思。当时我自己还是比较狂的,觉得USB这玩意不就做点U盘什么的嘛,没啥大意思。至于什么嵌入式之类的,本科都玩过单片机了,没啥大意思。DSP实现通信算法?得了吧,哥们到这个实验室来就是为了不做通信了。
后来又个师兄上去提他做的一个项目:MCU,是真的做了一款MCU芯片哦!当时我一听就来精神了。和这位师兄谈笑风生了好久。我本科阶段别的没学会,单片机是玩得溜得很。汇编指令那套东西和单片机的那些外设也是熟的不得了。什么中断控制之类的更是熟悉。心想以后就这样,做这个方向确实不错。逼格又高,又是自己熟悉的领域。
细心的观众朋友们一定会发现了,按照这种套路下去下面就应该神转折了。很快,转折就来了,而且是一系列的转折。转折一就是我当时很兴奋的去找了很多书来看,尤其是看一些什么Verilog HDL CPU设计之类的书。那个年代从国外引进的教材相对来说还是不算很多,而国人受水平限制写的书那都是……看的真是云里雾里,完全搞不清楚,心理也就开始有点阴影了。觉得这玩意蛮复杂的,好像比通信算法什么的还难懂。想想要实现和什么FIR滤波器、FFT变换也不用这么难嘛(实际上做好一个处理器比实现这种纯算法电路不知道要难道哪里去了)。
转折二就是这个项目的问题。其实当年这个项目不过是那个师兄没事可干,导师呢,也想不出让他干什么的。于是他就按照自己的想法做点东西。这个师兄也是很有想法的,想到的就是去做个MCU。当时也就他一个人在那瞎折腾。后来机缘巧合,别的学院申报了一个发改委的项目,要求做一个无线传感器啊网络的芯片出来。当时全中国会做芯片的也没多少团队,于是我们也就有了这个机会。但是呢,当时我们一不会做模拟前端传感器接口,二不会做射频调制。会的主要就是从原来FPGA应用带过来的那点经验,其实也就是懂点逻辑设计了。于是呢,那个师兄做的MCU就派上用场了,在外面加点外设和一个协议处理加速器(非常简单的),就可以了。但这个项目很快也就交差了,接下来做什么呢?非常幸运或者不幸的是当时国家出了一个863的指南,说要发展无线传感器网络,而无线传感器网络节点控制器就是很重要一个子课题啊。于是当时学校里面纵横捭阖,大家纷纷组队去报863项目了。我们这些研一的新生也就被动员起来,参与申报书的写作。当然,我们还联合了一个搞网络的团队(╭(╯^╰)╮……这个团队嘛,我也就不点名了。当时大家都是没本事的人……)申报的过程一路狗血,学校本来重视的是另外一组人马,但是后来发现我们这边才够强。后面一路过关斩将搞到了最后,眼看就能报中项目,翻开我们实验室的新的一页。如果当时真的报中了,不论是对我们实验室还是对我电的IC设计一定不可能是当前这个样子。有多高不好说,但起码会高一个档次。更不用说当时中了的某组负责人后来还被时任总理接见,着实风光了好一阵。
当时我们这个项目是怎么丢的呢?还是和处理器相关。我们这做出来个MCU啊,就觉得和捡到宝贝一样。总想着申报的时候去说说自己有个MCU是多么的牛逼。然而,一个MCU绝对不是做出来就能用的,后续的开发环境、编译器、调试工具都要配套。而在当时ARM的授权模式中国人已经不陌生了,要做一个SoC芯片完全没有必要从头开始设计一个CPU。既没有必要,我们当时也没有那个实力。结果上去一答辩就一溃千里,最后被淘汰出局。后来李广军老师每每回忆起这事,都在感慨:国内的科研啊,其实都是从比较“愚昧”的状态开始做起的。虽然很不甘心,但是结果就是这样残酷。当年“轰轰烈烈”的一帮队伍,也就散。各自都去做别的项目了。那个年代,从来没有什么“研究方向”的说法。都是有什么项目做什么项目。我们剩下这帮人呢,说的是还继续做无线传感器网络。可怜是没方向没项目没经费,自力更生的瞎做了半天。再后来我就申请调到“可重构”项目组去了。后来我开玩笑的说,无线传感器网络和可重构这两个大坑我都去过一趟,也算是经历丰富的人(这两个大坑后续有空再表)。后来这个项目其实也不能说完全就白费了,它为我校后续“物联网工程”专业创立还是做出了很多贡献的。也算是科研成果转化为教学资源了。
可重构做了几年,一直不死不活做不起来。在工作后的第三年,又出现了一次做处理器的机会。具体的内容我都写在了:http://blog.chinaaet.com/molf/p/5100018642,忆当年时一窍不通一文中。
再后来,处理器是不做了,但是却做起了计算机体系结构方面的研究。这个时候才发现当时那些晦涩难懂的Verilog代码,读起来是没有什么意义的。只有当从计算机体系结构的角度回过头去看这些代码的时候。才能居高临下的加以理解。
晃眼间,十年如白驹过隙。当年的懵懂少年,如今已过而立。由于前面两次失败的经历,我一直也不太敢碰处理器这一块。尤其是不敢想去真的做一个处理器。但现在,这一切已经成熟到可以一试的地步。首先是以RISC V为代表的开源处理器社区已经建设得不错了,其次是做了这么多年的计算机体系结构,对于处理器的接口以及组成基本已经摸透。再次就是这么多年来积累的人脉(包括已经毕业的学生和其它机会认识的朋友),能够提供一定的技术支持和咨询。最后就是我们这次将采用有限的实现目标和明确的研究目的,能够基本确保在我们能力范围之内。
十年一梦,梦醒时分是无路可走,还是柳暗花明。很快应该就有结果。