热心网友AlexZhou提出了若干问题,非常有代表性。首先在这里向AlexZhou表示感谢。
在这里先做解答,供有相同疑问的各位参考。
第一大类问题,有关“架构”的。建议先阅读我的这篇博文以后再阅读回答:
http://blog.chinaaet.com/molf/p/5100050845
1.1我想请问一下,想了解整个架构层次,需要去看哪些书?
答:认真看完上面对“架构”的解释就会知道:硬件架构实质上是一种模型,一种包含了系统内部所有物理器件以及它们之间互联关系的模型。因此硬件架构是一种描述对系统内部关系的模型,那么不同的硬件/集成电路实际上都有自己对应的架构。凡是规模大一点的集成电路都有自己对应的架构。例如模数转换器(ADC)就有Flash型的、SAR型的、Pipeline型的以及现在越来越多的使用的混合型的,这些就都是架构。所以不可能说看某一本书就把架构了解清楚了。由于集成电路分类较细,这些内容实际上是被分散各个各个不同书里面的。
1.2况且,我个人感觉,架构层次由于“技术层级”太高,应该只有大型的芯片设计公司才会用得到(如TI之类),如果在国内找工作,我目前好像还没有看到有哪家公司在研究架构?(或者有我不知道)
答:正如1.1问题所回答的,任何规模大一点的集成电路都有自己对应的架构。还是以模数转换器(ADC)为例,,首先确定了使用什么样的架构来完成从模拟到数字的这样一个转换过程,然后才能开始具体的电路设计。这一点只要多去看看ISSCC和JSSC的论文就能体会到。这些论文一来都是先摆出来这个ADC用的是哪种架构,然后是按架构来设定芯片内部具体的指标,后面才是具体的电路设计和参数优化。
对于模拟/射频/电源这些集成电路而言,由于规模一般不大且需要对各个单元进行定制化设计,所以主要的工作是在优化电路、调整参数、设计版图上。而对数字集成电路而言,由于其设计自动化程度较高且后续工作有方法学的保证,所以在架构设计上花的精力就会要多一些。
由于架构设计是整个集成电路设计的起点,因此架构设计实际上非常重要且需要经验。这种工作很显然不是应届毕业生能够完成的。所以你说的应届毕业生找架构方面的工作,显然是很少的。通常的架构设计师都是工作多年,从逻辑设计工程师或者从底层软件开发工程师转型而来。
1.3投入太多时间和精力去学习微处理器架构的知识,是否没有太大必要?
答:看以后的发展路径规划。如果要做数字集成电路相关的工作,微处理器是一个非常好的学习对象。但问题在于目前国内非计算机专业的本科课程设置问题,使得非计算机专业学生学习微处理器架构的难度过高。学完了以后也缺乏实践机会,也无法真正深入理解。所以我个人并不建议直接去学微处理器架构。我这有几个不听劝的学生学习实践也证明,非计算机专业的普通学生想靠自学来搞明白这些知识绝非易事。另外,丛前面的回答也可以发现,架构!=微处理器架构,架构!=计算机架构。架构既然是模型,那么加了定语的XXX架构只是XXX的模型而已。不搞XXX,不一定非要学习XXX架构。
1.4微处理器的架构应该已经研究的比较成熟了吧?在我有限的知识范围里面,大概知道X86架构,ARM架构,DSP架构等(不知道我是否把架构理解错了?)。其实我想问的是,这样的架构应该全世界也就那么几种?-回到第一个问题,应该只有顶级科学家才会研究架构?
答:参见前面的回答理解架构和微处理器架构的关系。另外,架构研究者和架构设计者之间的关系就好像是建筑设计大师和建筑设计师的关系。只有建筑设计大师才会去研究一些像“悉尼歌剧院”、“埃菲尔铁搭”这种惊艳世界之作。但是哪个建筑不需要建筑设计师先出个建筑设计图呢?大概农村自建二层小楼不需要吧。所以架构研究是少部分人做的事情,但是架构设计却是每一个芯片甚至每一个硬件系统都需要考虑的问题。
1.5感觉随着技术的发展,微处理器架构和理论计算机方向之间的界限重叠了?我不是学计算机的,但是听说计算机有一门专业课叫计算机体系结构,其实单片机就是一块单片微型计算机,所有的电子信息类专业都会学一门课叫单片机原理与接口技术,感觉里面讲了不少单片机(或者叫计算机)结构的知识,冯诺伊曼结构,哈佛结构等,还有什么RAM,ROM,总线之类的,不知道您所说的架构是否指的是类似于这些知识?
答:关于这问题可以先看我的这篇博文:http://blog.chinaaet.com/molf/p/5100052470
以及我写的CS大法好系列:http://blog.chinaaet.com/molf/p/5100051577
单片机这种课程,本质上是在讲应用而不是在讲原理,讲的实际上是一种按照计算机理论框架设计出来的单片化计算机以及它的应用方法而已而已。计算机专业是通过很多门课程以及多个实验/实践环节配合,最终才把计算机系统的软硬件知识介绍清楚了。目前,电子信息类专业这方面的教育差得很。
更多的内容可以参考:
http://blog.chinaaet.com/molf/p/5100052470
以单片机形式来学习计算机系统架构的知识好不好呢?其实是分两面来看的。一方面在学时比较短的情况下“以案例讲理论”是一个比较快捷的方法,学生看着实际的东西学比较容易理解。但另外一方面的缺点就是会在学生认知和知识体系构建上造成不良影响,形成知识局限。这个问题其实也挺难解决的,目前我还在尝试找到更好的办法。
1.6如果问题1.5中我的猜想成立,则,烦请回答一下,为什么感觉微处理器架构和理论计算机之间的界限模糊了?或者我自己的想法有错误?
答:你的理解是错误的,颠倒了因果顺序和主从关系。计算机体系结构这门课程是一门指导如何去分析和改进计算机硬件设计的课程。其核心在于介绍计算机中各个部件如何影响了计算机的整体性能,如何去量化分析这种影响,在分析出来这些影响以后应该如何改进。而微处理器只不过是计算机系统中的一个核心部件。因此是在计算机体系结构的框架下,确定出微处理器架构的改进路线,再去研究微处理器架构的具体改进方式。
这些本来就是一体的,而不是分割开的。产生这种印象可能是因为你在计算机方向的知识过少,没有形成完整的知识体系。
电子工程的出现远远早于计算机和互联网,自然,电子工程也比计算机和互联网发展的更加成熟。从早期的电子管再到晶体管再到分立元器件(大哥大时代),再到集成电路,随着集成电路工艺的不断进步,元器件做的也原来越小,元器件之间的尺寸越来越小,芯片的层级也越来越多。总之半导体工艺技术的进步让芯片的性能越来强悍,面积却越来越小(摩尔定律)。其实,我个人觉得,电子工程发展到如今,设计上已经非常成熟了,(我没有学过半导体工艺,不太了解工艺,感觉半导体工艺应该划到半导体物理或者固体物理之类的专业稍微好一些,和纯粹的电子工程其实关系不大的,不知道制造工艺是否也发展的非常成熟了)。 一个产品的开发,主要的精力真的是放在了软件开发上了,电子工程师的(这里指的是纯粹的模拟电路工程师和EMI工程这些纯电路部分)用武之地真的非常小了。FPGA我个人一直把他规划在软件开发里面。(或许您不赞同)。
答:不知道你听说过“电路与系统”这个学科没有。其实电子工程最最对应的研究生学科方向就是“电路与系统”这个方向,是利用电子元器件的各种电气特性类搭建不同的电路,最终实现一个完整的系统。我这里有一个博文是讲我去IEEE国际电路与系统年会开会的经历的:http://blog.chinaaet.com/molf/p/5100051679
其实IEEE电路与系统分会的“没落”是传统电子工程没落的写照。传统的电子工程用元器件搭电路最终实现系统功能这种做法其实受到了两个方向的挤压。第一是作为元器件中的一种特殊元器件发展起来成为了主角,这种器件就是大规模集成电路。所以才有了IEEE固体电路学会这么一个机构。第二是随着大规模集成电路的发展,让计算机能够以高度集成化的形式存在,所以使得嵌入式软件能够越来越复杂并完成大量的功能。以前,“电路与系统”这个学科的名字叫“信号、电路与系统”。说明信号处理实际上主要是依靠电路来实现的,电路就是信号处理的载体。但后来信号独立出去变成了“信号与信息处理”这个学科。这是因为现在的信号处理已经大量的依靠软件计算而非电路实体,搞信号处理不一定需要电路作为基础了。这两个方向的挤压使得传统的“电路与系统”这个学科的一些知识和设计方法基本上都被边缘化了。
现在还在坚持比较传统的“电路与系统”的设计方法是在哪个领域呢?其实主要是在集中在了微波电路领域。在这个领域还大量使用分立元件、无源器件,我看到很多搞这个的老师还做什么腔体滤波器这种非常“古老”的东西。所以目前在中国“电路与系统”这个学科里面,一多半是搞微波电路的。还有一部分,这个就不好说了,说多了影响团结。
2.关于模拟电路和射频电路部分
您本身是做数字电路逻辑设计的,冒昧的问一下,您各人对模拟和射频电路(就是纯电路部分)的造诣是否深入?就我各人而言,虽然一直在做数字逻辑的FPGA开发,但是我个人对射频电路和微波无线电通信部分是非常感兴趣的,但是受限于大学的实验条件和工作后的机会,再也没有机会接触射频电路部分了,不知道您是如何看待模拟尤其是射频电路领域的?现在发展到什么程度了?还有哪些问题没有解决?整体的方向是什么?
答:术业有专攻,我这方面不是很熟悉,就不随便作答了。
据说射频部分对实验仪器和经验要求尤其高,很多时候书上的结论和实际相差很大,甚至连仿真软件都无法相信,是否如此?
答:从我们实验室搞模拟的那些老师的研究情况来看,是这样的。最终的结果有赖于测试。甚至他们很多时候为了改进测试方法,都要消耗一两个月的时间。射频对于这方面的要求更加严苛。为了让测试出来的指标更“好看”,又不能去造假,有的老师要花重金去买非常高档的测试设备。仿真软件无法相信的原因在于集成电路本身的工艺误差、模型存在不精确的情况、为了节约仿真时间而忽略的一些电路参数。随着电路频率的不断增加,各种寄生参数的影响越发不可忽略,而这些影响很大时候不能被仿真出来。所以土豪一点的做法就是在最开始的实验阶段,同时做N个版本,最后测试出来那个版本好就沿着那个版本继续改进。但是搞射频电路也有好处,就是规模不是很大。一旦路线对头方案定型,后续修改起来工程量不算很大。
是否能够推荐一些模拟和射频方向的书籍和文档给我们看看?
答:不够专业,就不推荐了。
3.关于数学和物理方面的能力
越往后学,越觉得数学和物理的重要性,不知道您的数学和物理能力如何,是否谈谈您的理解,关于如何提高数学建模和物理思考的能力。这里的数学和物理能力指的不是计算能力,而是建模和抽象思维的能力。如何才能把一个实际的工程问题中抽象出物理问题,从而进一步抽象成数学模型?如何根据数学模型写出数学方程式?
答:我觉得你说的这个应该是叫对问题的抽象、总结能力,和数学、物理什么的都没关系。举些例子,一个领导讲完话以后,他的秘书得把领导的讲的这些话总结归纳提炼成一个提纲。一次“头脑风暴”结束,会议记录者需要把刚才大家的发言分门别类的,归纳整理出主要意见,并从中发现大家争论的主要焦点。这些其实和你想要的这种能力本质上都是一样的。
要具备这种能力,首先是需要有足够的背景知识,然后需要吃透基本原理,最后经过反复才能把这个问题抽象出来。这种能力不是靠空泛的培养,而是要靠足够的知识积累和不断的思辨训练才可能达到。如果想训练这种能力,我的建议是找个好点的导师读研究生。一方面老师会现身说法的给出一些指导,另外一方面同组的人会通过质疑和讨论引导你深入思考这些问题。我觉得读研究生最重要的目的就是去训练这种能力,但是奈何现在很多研究生把读研作为技能训练和找工作的跳板。其实啊,读研究生对技能训练的效率还真不如外面的培训班高。如果是在一个很烂的地方读研究生,那就当我没说。
4.关于读书
有时候连书上的推导过程都很难看懂,是否是我的物理知识比较欠缺?
答:这个不好说,有可能是书太垃圾了,也有可能是书的讲法不符合你的阅读习惯和思考方式。比如我就觉得国内很多大学都推崇的奥本海姆那本《信号与系统》不怎么样,我更喜欢西蒙.赫金写的那本书,对我帮助很大。
感觉中文的text book有部分写的真的不好,相互copy,省略,甚至错误。感觉不太像写个一个学习者看的,反而像是写给作者自己看的。 是否应该看英文原版教科书?
答:国人写的教材我一般是不看的,因为好的确实不多,懒得浪费时间了。如果有能力看经典英文原版是最后的。如果没有能力看看翻译版也是不错的,但是有些书翻译的确实不怎么样。其实写书,是非常考验一个人的学术水平和写作功底的。我也写过书,而且现在正在写书。一开始设想和规划都挺好的。但书一旦开写,自己功底不够就很难驾驭得了啦……我自问在高校教师这个圈子里面数字集成电路和FPGA设计方面的研究水平还是可以的,但现在都每每有难以驾驭的感觉。所以那些老师写出来的书嘛……(后面自行脑补吧)。
数学建模和物理方面的能力如何提高?
答:第三点里回答过了。