关于通用处理器未来发展的一点思考

来源:互联网 发布:新开淘宝没销量怎么办 编辑:程序博客网 时间:2024/05/13 18:35
有感于Sailing大牛对通用处理器和伴随它而生的传统操作系统向着可定制化、特例化或者说反通用化的方向发展,我也来讲讲自己的想法,做为将来指引自己大方向的标准。我很欣赏所谓“不谋万世者不足谋一时,不谋全局者,不足谋一域”,就像鱼儿需要时常跳出水面看清楚大河的流向才不至于游到支流里。

其实整个电子产业,包括软件硬件的发展最终都是Cost与Profit的考虑,它绝对左右了工业界和学术界的方向,而这个方向就是不断的降低成本的同时获取收益,收益指钱,包括更好的性能,更好的用户体验,更低的功耗。

用一个链式模型来解释,整个IT就是一个链条,总体上从下到上分为三个主要部分:物理层、逻辑层、和应用层。逻辑层可以看做是硬件层,应用层可以看成是软件层。进一步划分:物理层可分为材料层,基础电路层,包括硅基,碳基,之上构筑的各种晶体管,它们用于实现基本的逻辑门。基础单元是物理层和逻辑层的接口。
逻辑层主要是基础逻辑单元(比如寄存器,加法器,多路选择器等)和复杂的IP Core,包括了传统的CPU,各种Accelerator, 存储单元,cache 子系统等等 。之上是系统结构 (Architecture), 它是逻辑层和应用层的接口。应用层可划分为操作系统(包括编译器),和操作系统之上的应用软件(数据库,server,等等)。

有了这样一个链条,就可以用它来分析链条两端的影响:首先越底层,变化就越慢(比如材料层),多样性也越低。越高层变化就越快,多样性也越高。底层的进步会通过链条的传递以恐怖的规模放大,反过来高层的多样性通过链条反向对底层施加压力,原因是因为最顶层的是最接近最终消费者的,要满足他们不断提升的需求和同行之间的竞争,需要不断从底层取得进步的机会。所以顶层和底层同时会受到压力,但却是不同的压力:底层的压力来自于极小的进步会带来恐怖的收益。而最上层是受消费者的需求和成本压力驱使。在链条上任何一个节点的改变都会对链条两端带来影响,什么影响我们已经讨论过了。

接下来我们分析通用性和定制性的问题。所谓通用性其实是因为成本高,依照当前的技术水平,用户对性能(包括功耗等)的需求仍然可以用通用的手段满足。而定制性是因为可定制的成本降低了,同时用户对各种性能的需求已经无法用通用手段去解决了。举个简单的例子,50-60年前,我们想用计算机算一个东西是及其困难的。且不说硬件,就单单软件也只是提供了有限的几种应用,其他的应用需要转化成可以用这些应用表达的方法去使用计算机,除非你是超级客户,可以找硬件公司单独为你开发程序。在这个阶段,软件是统一的,通用的,需要用户自己去实现多样性,因为软件开发的成本很高。之后的几十年,各种编译器,编程模型,操作系统大发展,软件编程本身变得简单,成本降低,到现在,我们每个人都可以自己在家里用PC写程序,编译,当下就可以执行应用。所以目前,通用性是由硬件(主要是通用处理器)来提供,多样性由软件提供。而我们获得了比之前更好的性能,因为我们写的程序是面向我们自己的应用的。

那么下一步会是什么呢?硬件! 我们期望有一天硬件开发生产的成本可以降低到任何小公司甚至每个人都可以在自己家Design, Fabrication, Test 的程度。今天把设计图传过去,当天工厂就可以把生产好的芯片发过来并且测试好。当然我们离这一步还很遥远,可能要20年,可能要50年。目前芯片的设计生产成本太高,没有volume上的优势大规模分摊成本,想有profit是不可能的。当下你对一个软件厂商说我想增加个功能,说不定它可以满足你,但如果你对英特尔说你给我在硬件上增加个什么奇异功能,估计会被bs个狗血喷头。当然大方向一定是向着这里的。因为消费者不断升高的需求在那放着呢,当软件层面已经无法满足这种需要的性能(功耗比如),那么一定需要沿着链条往下走,在下一层上提供多样性。

目前来说硬件设计简单到像写Android APP的程度还很遥远,但目前来看,因为通用处理器基于冯诺依曼结构已经无法根本上解决存储器瓶颈问题了,它开始提供各种各样的Feature来适应不同类的用户需求,。比如我增加图形显示的加速器来满足显示的需求,增加HTML解析的加速器来满足特定的访问网页的需求,有了这些特定用途的加速器,CPU的任务就可以大为减少,功耗也可以降低,同时性能提升了。也许不久的一天,英特尔会在它网站上列出各种各样的加速器,面向不同类应用的客户可以自己勾选需要的加速器或者feature,或者干脆定制CPU,然后生产出来。另一个方法是使用可编程逻辑阵列 (FPGA),这是处于软件和硬件之间的一层,更偏向于硬件。我们已经看到Intel在处理器中开始集成某些Arteral家的可编程区域。这也是在面向硬件可定制化。在IC的成产成本还很高的时候采用的一个过渡方法。

最后畅想下更远的未来,如果有一天自己在家做个IC可以像写个c语言的软件一样轻松。那么到时候什么会是多样性的瓶颈呢?我觉得有可能会是硅芯片,甚至可能会是电信号本身,因为很多我们需要的计算并不需要表示成电信号来处理,再用各种显示方法(如显示器)传递给人。如果某个游戏本身就是光在运行的,我们直接就可以看到,如果需要学习的知识本身就是脑电波形式来记录的,我们或许直接就可以接收而不需要看,读,写。那会是什么样的一个世界呢??
原创粉丝点击