cpu设计过程

一款CPU是如何设计出来的?

前面一段,我们了解了芯片的制造过程,也就是如何从沙子中提取硅、把硅切成片,在片上通过离子注入实现PN结、实现各种二极管、三极管、CMOS管、从而实现千万门级大规模集成电路的大致流程。接下来,我们继续了解一下,一款CPU是如何设计出来的。集成电路设计一般分为模拟IC设计、数字IC设计以及数模混合等。而数字IC设计,比如设计一款ARM Soc CPU芯片的基本流程如下:

1)设计芯片规格:根据需求,设计出基本的框架、功能、模块划分。有些复杂的芯片可能还需要建模、使用MATLAB等工具进行仿真。

2)HDL代码实现:使用VHDL或Verilog语言将要实现的硬件功能描述出来、通过EDA工具不断仿真、修改,验证直至逻辑功能完全正确。这种仿真我们一般称为前仿,只验证逻辑功能是否正确,不考虑延时。这个阶段也是最重要的阶段,一般会花费大量的时间、验证工程师不断验证芯片功能的正确性。有时候为提高效率,也会使用硬件仿真,通过FPGA平台进行验证。当然,这也是数字IC验证工程师干得活。

3)逻辑综合:仿真验证通过后,再使用专门的EDA工具将HDL代码转换成逻辑门电路。专业术语叫做将HDL代码翻译成门级网表(netlist)。在综合过程中,需要设定一些约束条件,让综合出来的电路在面积、时序等参数上满足要求。这个阶段的仿真一般称为后仿,要考虑延时等因素,跟实际芯片已经很接近了。

网表文件用来描述电路中元器件之间的连接关系。有数字电路基础的同学可能都会知道,任何一个逻辑关系或运算都可以转化为相应的门级电路来实现。而网表就是用来描述这些门级实现电路的连接信息。

还需要注意的一个地方是:门级电路是由不同的晶圆厂,也就是芯片代工厂以工艺库的形式提供的,比如中芯国际、台积电等。如果你设计的芯片要台积电代工制造,工艺要求是28nm,那么你在设计芯片时,台积电会提供给你28nm级的工艺库,你综合后生成的电路参数跟台积电生产芯片使用的工艺参数是一致的。

4)仿真验证:对生成的门级电路进行各种静态时序分析、验证。通过后,整个前端设计就结束了:从RTL代码到生成门级网表电路。

5)后端设计

通过前端设计,我们已经生成了门级网表电路,但这跟实际的芯片电路还有一段距离,我们还需要对其不断完善和优化,进一步设计成物理版图,也就是代工厂做掩膜需要的版图。后端设计包括很多步骤,一般包括:

DFT:designed for test,可测性设计。芯片内部往往会自带测试电路,在设计中插入扫描链。

布局规划:各个IP模块电路的摆放位置、时钟线综合、普通信号线的布线

版图物理验证:设计规则检查、连线宽度、间距是否符合工艺要求、电气规则简则等等。

物理版图验证ok后,会将这个物理版图以GDSII文件格式交给芯片代工厂(foundry),至此,整个芯片设计仿真验证流程结束,我们称为tap-out。

物理版图是由我们设计的电路转化而成的一系列几何图形,如上图,跟PCB版图类似,也分为好多层。物理版图包含集成电路尺寸大小、各层的拓扑关系等。代工厂会根据这些信息来制造掩模、然后使用光刻机,通过这些掩模在晶元的硅片衬底上开凿出掺杂窗口,接着就对硅片进行离子注入,掺杂不同的三价元素和五价元素,生成PN,进而构成各种元器件、电路。再通过刻蚀等工艺,可以在晶圆硅片上生成多层立体的3D电路结构。

好了,到了这里,我们已经把整个芯片设计、制造的大致流程给大家讲解完了,看起来很简单,其实集成电路设计制造的每个环节,都有极高的技术含量,集成电路行业是一个高度专业分工的行业,每个环节都有不同的行业巨头把守,从芯片设计、制造、各种EDA工具、IP核、光刻机、刻蚀机,每个环节都有非常专业的制造商、服务商、EDA工具商,精确严谨地配合,同时也分享着IC设计产业链上的超额利润。

设计一款CPU到底有多难?

网上很多媒体甚至用表格列举了中国芯片的依赖率及自给率,除了消费电子领域的应用处理器AP外,其它很多领域的自给率都是0%。这也从一个角度说明:我们集成电路发展的空间无比巨大、可以想象的空间很广阔。

差距比较大的地方,主要在模拟、射频、AD转换等领域,这些基本上被欧美一些巨头垄断,更悲催的是,很多核心领域现在已经禁止华人从事这方面的工作,可见美国政府对这些高精尖的领域技术保护非常重视。而在一些消费电子领域,由于ARM的IP授权模式,大大降低了SOC的设计门槛,再加上半导体产业成熟严格的分工体系:设计、代工、封装测试一条龙,所以中国最近几年在消费电子领域SOC设计方面发展迅速,涌现出了很多芯片和公司,比如海思、展讯、联芯、全志、瑞芯微等。从手机基带、RF到AP都慢慢缩小了与国际半导体巨头的差距。比如海思的麒麟系列,对标高通的骁龙系列,性能其实已经不相上下。

在ARM构建的生态和商业模式下,SOC芯片设计企业可以跟这些芯片巨头有同台竞争的机会,至少能参与进来:你牛X,可以拿到ARM的指令集授权,做自己的微架构,我没这个实力,搞个低端领域的,搭个积木还是绰绰有余的。嵌入式市场,不像PC X86一统天下,它是分散的、多需求的、难以垄断的。所以这也就给很多做ARM AP芯片的公司很多机会,你做手机、我做平板、智能电视、网络盒子、游戏机、挖矿机,只要找准一个方向,用低成本优势,就可以活下来,再图技术慢慢积累和发展。所以在ARM AP这一块,你会看到有很多公司,以后还会出现很多公司,这方面应该最快能满足芯片的自给,当然,这也给嵌入式开发者提供大量的工作岗位。

在PC和服务器领域,可能就没这么容易突破了。我们知道,在X86领域,是Intel和AMD的天下设计一款X86架构的芯片,到底难不难呢?其实不算难,国内能找出不少公司可以设计出来。那难的是什么呢?是生态和专利授权。Intel在X86领域可以说是一家独大,在它的专利保护下,基本上就封死了你想自己设计X86架构CPU的道路,钱再多也不让你做,不给你专利授权。AMD公司还是美国为了防止垄断,才促使Intel跟其专利交叉授权,达到一个平衡,不过AMD现在貌似也过得不轻松,在CPU这块被Intel压得也是步履维艰。除此之外,还有一家公司,台湾的威盛电子:VIA,就是电脑一开机显示VIA标志的,VIA也有一些X86专利,也获得Intel专利授权,但是做CPU貌似也很艰难,在芯片方面的盈利还不如旗下的酒店业务赚得钱多。其实这也没办法,赢者通吃,后面的可能连汤都喝不到。看网上的新闻好像跟上海国资合股成立兆芯,研究X86 CPU和显卡,国家砸了不少钱,不知道能不能趟出一条路来。

跟兆芯对标的国内芯片公司,有一家比较有名:龙芯。龙芯走的是MIPS路线。MIPS跟ARM、X86一样,也是一种指令集,也是当前世界上还在存活状态的指令集,跟ARM、X86可以说是三足鼎力吧。据说,龙芯当年500万拿到MIPS指令集的永久授权,然后自己不断添加、完善指令集,形成了自己的指令集。龙芯的优势是MIPS有了一定的生态市场,可以不必从零开始搭建自己的生态,有利于自己CPU的推广。最新研发的微架构GS464E根据网上的相关资料,已经超越Intel的i3架构,跟i5稍有差距,但同时已经超越了同时期的Intel Atom、VIA Nano、ARM Cortex-A57等低功耗架构。

这里得给大家普及一下什么是指令集和微架构。指令集,大家学过汇编语言的可能都知道一些汇编指令,这些汇编指令其实就是指令集的助记符,我们设计一个CPU架构,肯定要设计一系列指令,这些指令集可以看做是一个标准,我们在设计CPU硬件电路时就是根据这些指令集,去设计一些指令译码(译码电路)、执行电路,执行我们的指令集(根据指令集去设计相关电路例如0010表示将数据存放到寄存器A中就需要设计在指令寄存器中有0010指令时寄存器A打开可以存数据其他寄存器处于“关闭”状态)。那这个根据指令集设计的CPU硬件电路就是微架构。不同的CPU架构,指令集是不一样的,这就导致了,不同的CPU架构,需要的编译环境、开发环境是不一样的。比如ARM架构,我们需要开发一个编译器,将我们的C语言程序翻译成ARM的指令集,然后才能在ARM架构的CPU上运行。而对于X86平台,我们需要开发另外一个编译器,将C语言程序翻译成X86指令,然后才能在X86平台上运行。为什么在X86平台上不能运行ARM指令呢?很简单,因为CPU硬件电路在设计时是根据X86指令集设计的,只支持X86指令的运行,不支持ARM指令,无法运行。

由此,我们可以看到,不同的指令集,不同的CPU架构,就需要不同的编译器和开发环境,由此也就形成了不同的软件生态。对于很多芯片设计者来说,开发一个指令集并不难,现在国外甚至已经有开源的了,大家到Linux内核源码的arch目录下面可以看看,有太多的架构了。根据这些指令集设计一个微架构,设计出一个CPU也不难。难的是什么呢?难的是你要构建出跟你的CPU配套的一系列生态,比如编译器,你要自己开发,大量的应用软件你也要自己开发,否则谁会用你的CPU呢?这天大的工作量根本不是一个公司或团队能完成的,需要一个产业链的完美配合。所以,我们可以看到,就算你研发出了自己的CPU,要想推广起来,构建自己的生态,非常困难。推广困难就难以盈利,难以盈利就很难继续迭代下一代的产品,由此形成负反馈,如果没有背后资金或者国家支持,真的很难坚持下去。比如以前在学校曾参与过一个项目:设计一款基于某种自主架构的SOC。那这个项目需要多少人配合呢?芯片设计这方面的人不说,光软件方面就需要不少:编译器工具需要自己开发,这个工作量就忒巨大,芯片流片成功后,Linux内核、android系统需要自己移植,各种库,比如C库也需要自己移植,包括上面的应该程序、Java虚拟机等等,工作量巨大。后期系统软件,从驱动层、中间层到应用层,还需要不断针对这种架构进行优化。就算优化完美,没有大问题,还要推广,如果没有很多日常的应用加持,构建生态也很难。赚不到钱,性价比不划算,别人跟着一起构建生态的欲望也就不大。

综上,我们可以看到,设计一个CPU,从技术上讲并不难。但从商业或者说生态上想成功就很难:别人已经构建好的生态红利,会通过专利壁垒不让你进;而你从零开始构建全新的生态,没有了这种先发优势,很难很难。折中之策就是你想办法兼容这个生态。比如android手机,现在绝大多数APP都是基于ARM平台,Intel想推广自己的atom平台,那就需要大量的APP可以运行到自己的atom平台上,这就需要它自己的X86平台去兼容这些app。包括前几年,Intel这么牛逼的行业巨头也肯放下高贵的身姿跟深圳的一些白牌、山寨厂商打成一片,主要原因就是,Intel对ARM构建的生态也是无从下手,深挖洞、广积粮、树技术壁垒、单打独干已不适应行业玩法,也想自己构建这个生态,市场效果如何,还有待时间检验。

设计一款CPU,除了后续推广、生态构建比较艰难外,在设计过程中,其实很多核心IP、技术模块、EDA开发环境也需要外援,比如设计一款手机芯片,CPU需要向ARM公司授权,各种控制器IP如果自己研发不了,也需要购买,这些研发IP的公司一般分布在北美、欧洲、以色列等国家,而中国、台湾和韩国的主要厂家主要基于ARM架构和各种IP搭建应用处理器SOC,所以搞嵌入式的往往会看到,很多处理器都是东亚国家、美国设计,但是其实那些背后卖IP的公司倒赚了不少,因为很多做SOC设计的购买IP授权其实要交很多钱,它们只是赚了一些“组装费”。这还不算,在设计CPU的过程中,各种仿真设计、包括前端、后端设计、前仿后仿、都需要EDA开发环境支持,都需要花钱购买,或者花钱买培训。以前工作过的一家公司,貌似什么后端设计还是后端仿真的一款EDA软件,使用的是欧洲一家公司开发的,光软件版权费不说,他们过来培训,一个小时就是3000欧元,吃饭时间也要算在内,就这么刁,没办法。就此一家,不买拉倒。由此可以看到,芯片行业我们现在还相当于富士康阶段,赚取一个“加工费”而已,后面的道路,再加上各大芯片巨头的技术壁垒和封锁,任重而道远。

与此同时,半导体行业也是一个忒烧钱的行业,不像搞互联网,一台电脑一根网线,就可以开干。芯片行业处处都需要钱、各种仪器、设备、EDA软件、流片、封装测试都需要大把的钱,而且流片风险很大,很多芯片前几次流片还不一定成功,需要不断修改bug,不断完善。而流一次片就需要几百万,所以对于很多小公司来说,如果没有足够的资金支持,前几次流片不成功的话,基本上就黄了。所以,这也是为什么除了国家大基金,很多民间资本不愿意进入的原因:投资周期长、风险大。不如投资互联网、金融P2P,共享单车,搞搞外卖:风险小、收益快、容易割韭菜、容易收割各种智商税。然而,对于一个国家来说,如果人人都想短平快,搞金融,玩庞氏资本游戏,不肯投入时间、精力和资本去从事基础领域的研究,那未来会有更多的地方被卡脖子,就像中兴一样,一剑封喉。
————————————————
版权声明:本文为CSDN博主「宅学部落-王利涛」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhaixuebuluo/article/details/80132733

原文地址:https://www.cnblogs.com/zhj868/p/12422398.html

时间: 2024-10-07 00:37:26

cpu设计过程的相关文章

cpu设计-->cpu指令设计与全程逻辑分析

CPU指令设计,除了命名之外,更重要的是分析出指令如何才能够实现.对于图 3 1的CPU结构,如果指令是预先放到irom里的,那么,指令执行时要一条一条地从irom取出来,放到ir指令寄存器中,提供给control进行分析执行.每一条指令如何转变成机器动作,CPU的设计者必须认真地进行分析和规划.这一过程叫指令全程动作分析,简称指令全程分析. 我们针对图 3-1的结构,可以尝试设计一些用符号表示的汇编指令,然后对这些汇编指令如何实现,进行细致地分析.汇编指令的二进制数表示就是机器指令.汇编指令和

浅谈企业应用软件架构设计过程

1.引言 本文不是学术性文章,也不是某些标准化理论的阐述,而是根据所从事J2EE应用软件架构设计工作的经验,谈谈自己对软件架构设计过程的理解,希望能让一些徘徊于门口的同学能对企业应用软件架构设计的目标.价值与方法有个大致概念.文中所举例子及分析方法受个人经验背景约束,可能在一定程度上会存在误导性,软件架构设计过程大同小异,例子主要还是用于辅助说明设计过程. 对于架构设计,如果用建筑来比拟的话,有点类似这样:这是我们将修建一座大教堂,甲方有这样的一些特殊要求,比如大堂要能容纳5000人,中间不能有

多周期CPU设计

------更新一下bug(测试代码有毒)------- 和单周期CPU的设计相同,都是为了实现一系列的指令功能,但需要指出的是何为多周期(注意与前面写道的单周期的区别,这也是设计的关键之处) 多周期CPU指的是将整个CPU的执行过程分成几个阶段,每个阶段用一个时钟去完成,然后开始下一条指令的执行,而每种指令执行时所用的时钟数不尽相同,这就是所谓的多周期CPU. 理解完多周期与单周期的区别后,开始我们的多周期CPU设计之路(可以随时对应单周期的设计,注意联系与区别). 需要设计的指令及格式如下:

从涂鸦到发布——理解API的设计过程(转)

英文原文:From Doodles to Delivery: An API Design Process 要想设计出可以正常运行的Web API,对基于web的应用的基本理解是一个良好的基础.但如果你的目标是创建出优秀的API,那么仅凭这一点还远远不够.设计优秀的API是一个艰难的过程,如果它恰巧是你当前的工作任务,那么你很可能会感到手足无措. 不过,优秀的设计绝对是可以实现的.本文所描述的流程将帮助你获得成功,我们将共同研究什么是优秀的设计,以及迭代式的流程如何帮助我们实现这一目标.我们还将叙

优云CMDB经验分享之 – 剖析CMDB的设计过程

作为IT管理的核心,CMDB逐渐成为系统管理项目实施的热点.在很多的案例中,由于忽视了CMDB的因素,ITIL的深入应用受到了极大的挑战.同时,由于CMDB是IT管理信息的集中,CMDB也是一个重要的工具和手段. 在CMDB落地过程中需要注意的是,CMDB项目不是一个简单的软件安装过程,而是一个咨询.培训.实施.优化密切结合的综合过程,涉及到平台工具采购.咨询服务.实施服务.培训.甚至扩展开发等内容.同时,一个成功的CMDB项目不能一蹴而就,而是一个循序渐进.持续发展的过程,需要企业后续的投入和

OO设计原则 -- OO设计的原则及设计过程的全面总结

这部分增加一点自己的感想,OO设计原则下面讲述的很清晰;看完之后有点感想如果我们在实际开发当中能够把这些原则熟烂于心的话那我们的代码质量和个人能力会有很显著的提神.根据自己的实际经验看很多开发者在开发过程中很多基本的知识确实没有熟烂于心导致开发的时候只有基本的内容.我所在的项目就是代码接口各种乱,可读性和可维护性特别差:当然自己在开发的时候也都没有做到,在后面的工作中尽量避免 前面发表了5篇OO设计原则的文章,在这里我将这个5个原则如何在我们设计过程进行应用进行一下总结, 这是我通过阅读和学习很

面向对象的设计过程的一些原则

程序设计原则: 综合考虑,开发Schedule,质量要求完成架构设计 基本面有(MindSet) 面向接口编程(依赖接口,而非实现) 分层设计,松散耦合. 开闭原则:对修改关闭,对新增开放(具体操作可以通过配置,反射等方法实现) 接口隔离原则(保证接口的单一性,避免大杂烩) 多态替换原则(子类Override父类的方法不能修改其功能,即保持抽象父类和各种子类方法的功能都相同) 考虑程序交互IO(保证特定吞吐量的使用效率) 前期必须考虑程序的扩展性,维护性已经伸缩性 基本类的设计要点: 单一 强内

六大步骤分解产品原型设计过程

本教程将从整体和局部实例两个部分来讲解原型设计的步骤.产品的原型设计一般是基于文档的形式所表达出来的形象设计,想要把产品原型设计做好其实并不容易,想把原型做得比文档好更不容易,这里会结合一些产品原型设计的方法以及技巧来介绍原型设计的步骤,希望可以帮到有需要的朋友. 设计原型也是讲究方法步骤的,一是要提升原型设计的合理性,避免出现头重脚轻的保真程度不一致的情况:二是要减少原型设计所占用的时间,大家各自的工作时间都是很宝贵的,不可能在原型设计上投入过多的时间,因此掌握一些原型设计的方法和技巧相当必要

C++类设计过程中的原则(总结)

一.由编译器生成的成员函数 1)默认的构造函数 默认构造函数定义为没有参数,或者有默认的参数值.当用户自己未定义时,系统可以提供. 自动生成的默认构造函数,会调用继承的基类的默认构造函数来构造派生类的基类部分. 若Star是一个类,则 Star orig; Star array[6];都将需要默认构造函数. 如果自己定义了构造函数,则系统不会再生成默认构造函数,这个时候最好自己要定义一个默认构造函数. 构造函数 -- [确保对象的生成] -- 最好提供显式的默认构造函数,以确保对象能够正确的初始