科普:ARM的授权方式

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/baidu_35679960/article/details/78446917

在和同学聊天的时候老是听到IP核这种称呼,不太清楚这个IP核应该怎么理解,是A53、A72这种东西吗?今天专门调研了一下。

IP核是具有知识产权的、功能具体、接口规范的可以在多个集成电路中重复使用的功能模块,是实现系统芯片的基本构件。 你可以简单理解为设计完善的功能模块。(而这里的【设计】是根据完善程度有不同的形式,可分为三类:软核、固核、硬核)

  • 软核:理解为【程序代码】,是用硬件描述语言实现对功能模块进行描述(比如用VHDL编写的一个触发器,是文本形式),不包含任何物理实现信息。(软核特点是对用户来讲可移植性强、设计周期短、成本低。缺点是物理实现性能不定不全面,产权保护不佳)
  • 固核:除了实现功能模块的程序代码之外,还包括门级电路综合和时序仿真等设计环节,一般是以门级电路网表的形式提供给用户。固核可以理解为是不仅包括软核程序代码,还包括【程序员模块设计意图与硬件物理实现之间的规则】。
  • 硬核:基于物理描述,并且已经通过工艺(40ns/28ns等)验证可行的,性能有保证。是以电路物理结构掩模版图和全套工艺文件的形式提供给用户(芯片生产厂家)的。


架构的三种授权方式[1]

在传统PC领域,半导体厂商一般有两种路子可选。首先是Intel那样的,从头到尾自己大包大揽,架构和芯片的设计、生产一律不依靠任何人。这样做是需要极其雄厚、全方位的实力做保障的,得有钱、有人、有技术,特别是在半导体技术日益复杂的今天,能这么做的屈指可数。好处当然也是很明显的,不但能完全自己把握自己的命脉,利润也是极其可观,Intel几乎任何产品都可以享受非常高的利润,想卖多少钱就可以卖多少钱。
另外一种是无工厂模式(Fabless)。NVIDIA就是这样,AMD实在耗不过Intel就也变成了这样。这类企业只是自己设计芯片,制造则交给代工厂,比如台积电、联电、GlobalFoundries、三星电子。好处很明显了,负担很轻,自己只管设计就行了,不用耗费巨资去兴建晶圆厂、开发新工艺,但坏处同样很突出:你设计出来了,能否造出来、即便造出来又是个什么样子你就无法做主了,得看代工伙伴的能耐。这方面的教训当然很多:台积电40/28nm两代工艺最初都很不成熟,产能也是迟迟上不来,让整个行业为之拖累;GlobalFoundries 32nm工艺没有达到AMD的预期水平,第一代FX/APU处理器的频率和电压就跟设计得差很多,28nm工艺吹了那么久直到现在才刚刚上路,迫使AMD一度放弃了整整一代的低功耗APU,不得不重新设计再去找台积电。
ARM就跟他们完全不一样了。它不制造、不销售任何芯片,只是自己设计IP,包括指令集架构、微处理器、图形核心、互连架构,然后谁喜欢就把授权卖给谁。客户拿着ARM的IP可以自己想怎么干就怎么干。ARM的经营之道其实非常简单,以三种不同的模式对外提供授权:[1]

  • 架构/指令集层级授权[1]
指可以对ARM架构进行大幅度改造,甚至可以对ARM指令集进行扩展或缩减,苹果就是一个很好的例子,在使用ARMv7-A架构基础上,扩展出了自己的苹果swift架构 (这儿的swift是类似于A53这样的核,因为其实指令集是很简单的,但是由指令集造出来核是很麻烦的) 指令集应该是公开的,例如X86指令集是公开的,但是指令集的实现方式,即架构却是不一样的。

  • 内核层级授权(也就是你所说的ip核授权)[1]
指可以以一个内核为基础然后在加上自己的外设,比如USART GPIO SPI ADC 等等,最后形成了自己的MCU,这些很多,比如三星、德州仪器(TI)、博通、飞思卡尔、富士通以及Calxeda等等等等。。

  • 使用层级授权(什么是使用层级的授权我也不清楚,难道说是类似于POP IP那样的东西?)[1]
要想使用一款处理器,得到使用层级的授权是最基本的,这就意味着你只能拿别人提供的定义好的ip来嵌入在你的设计中,不能更改人家的ip,也不能借助人家的ip创造自己的基于该ip的封装产品;
作为最低的授权等级,拥有使用授权的用户只能购买已经封装好的ARM处理器核心,而如果想要实现更多功能和特性,则只能通过增加封装之外的DSP核心的形式来实现(当然,也可以通过对芯片的再封装方法来实现)。由于担心对知识产权保护不力,ARM对很多中国背景的企业均采取这一级别的授权。

做个很形象的比喻:假设我写了一篇文章,我告诉甲,你可以拿去修改后使用,便是架构层级授权,我告诉乙,你可以在你的文章中引用我的文章,便是内核级授权,我告诉丙,你只能对我的文章进行转发,不能更改,不能添油加醋,便是使用层级授权。
做个很形象的比喻:假设我写了一篇入党申请书的文件模板,我告诉甲,你可以拿去修改模块(修改文件结构),添加自己的内容后使用,便是架构层级授权,我告诉乙,你要保证文件模板的结构不变,但是你可以加三级及以下的标题及内容,便是内核级授权,我告诉丙,你只能对我的文章进行转发,不能更改,不能添油加醋,便是使用层级授权。

因此,如果华为分别拿到架构授权和ip核授权,那么意味着它可以在ARM指令集基础上根据需要创建出自己的内核架构,并可添加各种片内外设比如通信接口、显示器控制接口、GPIO等等,从而生产出自己的“处理器芯片”。



疑问:

1、什么是架构?

关于架构这个词,存在着指令集架构和内核架构,显然这是两个不同的东西,知乎上面有大神关于计算机体系结构的详细解释[4]:

         首先,我们看一看体系结构领域圣经(Computer Architecture - A Quantitative Approach 5E)的一些关于Architecture的解释:“Several years ago, the term computer architecture often referred only to instruction set design. Other aspects of computer design were called implementation, often insinuating that implementation is uninteresting or less challenging.” 意思是多年以前,体系结构主要指指令集,也就是ISA的设计,而其他的层面都叫做“实现”,那时候认为ISA是最难设计的。然后,文中指出了以前的观点的错误(过时)“We believe this view is incorrect. The architect’s or designer’s job is much more than instruction set design, and the technical hurdles in the other aspects of the project are likely more challenging than those encountered in instruction set design.”,这段话表达的意思是架构/设计和实现的难度是远远大于ISA的。

         ISA大家应该都明白,知道CISC和RISC的都会明白ISA。我们主要关注书中所说的“实现”,也就是implementation:“The implementation of a computer has two components: organization and hardware.”;也就是implementation主要包括组织架构和硬件两部分。

         何为组织架构,“The term microarchitecture is also used instead of organization. For example, two processors with the same instruction set architectures but different organizations are the AMD Opteron and the Intel Core i7. Both processors implement the x86 instruction set, but they have very different pipeline and cache organizations.” 组织结构也就是我们常提前的微架构,文中还举了intel和amd的例子让读者加深理解。AMD和Intel拥有相同的X86指令集,但是却有不同的流水线及缓存结构。何为hardware,“Hardware refers to the specifics of a computer, including the detailed logic design and the packaging technology of the computer.”,主要涉及到详细的逻辑设计以及封装工艺等等。

         所以显而易见,计算机体系结构= ISA + 微架构 + 硬件,“the word architecture covers all three aspects of computer design—instruction set architecture, organization or microarchitecture, andhardware.” 其实现在芯片设计的整个流程也就是按照这个思路来走的,选好了ISA,然后就行逻辑上的设计(最常见的ARM的IP软核就是这个层面,就是verilog/vhdl写的rtl代码),当然你要做soc的话就会逻辑设计过程会和验证交叉耦合的,然后rtl代码freeze后会物理设计就会大张旗鼓的进行了,再之后便是tape out 流片了。(对后端很多东西不了解,只是说个大概,欢迎指正)。

         然后现在可以比较一下龙芯和海思的区别(其实完全没有必要,侧重点完全不同,都不是做一个市场的)。龙芯选择了兼容MIPS的ISA(里面增加了许多自定义的指令),然后从微架构开始一直做到流片前,流片一般是中芯国际和意法半导体吧(最近都在中芯国际),因此,抛去其他因素,龙芯的CPU IP CORE是自己做出来的(和ARM 授权的IP类似)。海思的芯片不是从CORE开始做起的,选用的是ARM 的 IP CORE,基本上从SOC开始做起的。说简单点,一个有CORE,一个没有CORE。当然从SOC做起是很了不起的事情,毕竟芯片不仅仅是一个CORE的。所以两者没有高下之分,只有技术路线的区别。请上面的某些“大V”们不要为黑而黑,为了赞美谁故意贬低谁,留给知乎一片净土,一片没有戾气的氛围吧。海思的芯片不多说,主要就是做智能手机的。而龙芯的芯片主要是主打PC的,奈何在桌面上WINTEL的联盟实在太难打破,所以任重而道远啊,当然龙芯在AQ和JG等方面还是很有建树的,不能宣传,点到为止。有兴趣可以关注最新的北斗的芯片,主要是龙芯的1E和1F,宇航级芯片要通过一系列抗辐照测试等等才能上天。

          上面是一个大神的回答,对于此回答的下面Bert的评论讲的很有重点:现在CPU的设计微架构的实现才是难点吧,ISA不都有吗,有谁见过会把微架构详细公开的,微架构的实现直接影响性能,面积和功耗这些都是需要各种折衷的,千差万别。也没人会把自己芯片的微架构公开的,有了祥细的微架构,就可以直接写RTL了。据说,ARM的CPU才是写RTL综和出来的,其他高性能CPU据说是全定制设计的。这儿讲的微架构的实现,我认为就是说的ARM cortex-Ax的实现,也就是高通自己研制的的Scorpion、Krait、Kryo这些东西,这些东西的实现涉及到流水线的设计,流水的取指、译码等的宽度,是否乱序,乱序的程度等等[5] 。对于苹果的自研机构,Swift(基于ARMv7)、Cyclone、TYphoon、Twister等见下图[6][7]:


















可以看到这不同的自研架构之间最显眼的区别就是流水线参数的不同:发射宽度、重排序缓冲区的大小等的不同。

         对于Bert的评论,迪迦奥特曼解释到:都是写RTL综合出来的,包括Intel在内,只是从综合往后的设计流程里面有多少是工具生成的、有多少是手工做的,这个区别。不使用RTL和EDA工具配合在现在的设计规模下已经不可能了,工作量已经不是人能承受得了的,就跟现在没有人会用纯汇编写windows一样。

           对于Bert的评论,Wayne Zhu补充:IP核分为行为(Behavior)、结构(Structure)和物理(Physical)三级不同程度的设计,对应描述功能行为的不同分为三类,即软核(Soft IP Core)、完成结构描述的固核(Firm IP Core)和基于物理描述并经过工艺验证的硬核(Hard IP Core)。

  • 软核就是我们熟悉的RTL代码;
  • 固核就是指经综合约束,及FPGA验证过的网表;
  • 而硬核就是指指经过验证的设计版图。

ARM还是以软核为主的。直接拿到RTL的。有了RTL代码就有了微架构的实现方式。所以说,给你RTL就相当于给了你ARM cortex-Ax的核心。所以说RTL的授权应该就是cortex-Ax这些核心的授权,虽然给你RTL,但是你不能拿ARM的RTL直接改然后变成自己的微架构,这样是不允许的[3]。给了你RTL你所能改动的东西就是cache的大小,核心的多少配置。如果想弄自己的微架构,只有买指令集授权,然后一点点的慢慢做。

对于ARM cortex-Ax系列的微架构:

  

15+级乱序流水线,128位预取,3宽度解码,每时钟周期可分派最多5个微操,满足最多7个发射队列,进入8个执行流水线。


         A73十分类似A17,因为顺序前端的优化流水线短得多,预取阶段也只有4级深度(A72 5级),整个流水线深度也才11-12级。相比于A17,它将整体最大分配率从4个微操增加到了6个。NEON发射序列仍然是2个微操,但是整数部分翻番到了4个。浮点流水线还是2条,预取监视器也是1个,但是AGU部分可同时执行载入和存储操作。整数流水线则分成了2个复杂的ALU,分别负责乘法和除法。

         A73依然坚持四核心理念,即每个簇可拥有1-4个核心,然后使用SCU单元互联各个簇。二级缓存最多8MB,等同于A17而两倍于A72,但相信多数芯片厂商都会选择1-2MB。
         A15/57/72还肩负着冲击工业、大规模服务器系统的重任,A73就简单了,只针对消费级市场,这让它轻松了不少,比如去掉了AMBA5 CHI接口,仅支持AMBA4 ACE,一级缓存也不再支持ECC。


2、华为的K3V2是什么?

          K3V2是AP,不单单是CPU.AP里面有CPU/GPU和一堆控制器USB/LCD等等。K3V2是一颗4核A9的AP。目前海思绝对是国内最大的AP厂商,但国际大厂差距甚远,国内应该是高通和MTK,占据了8成以上,目前还是自产自销,当然除了CPU还有基带业务,基带也是需要CPU的。其实海思做CPU已经很久了,以前只是给内部供货,或者做基带/数据卡,不为终端消费者所知道而已。最近几年大业务(电信服务器)发展缓慢,经济危机,没升级需求,华为想推自己的品牌做终端,进行转型,才逐渐让消费者知道,实际上海思已经给国内国际大厂贴牌设计过很多年,这也算是积累。业务背景扯完,说点技术的。现在做CPU,不单单是一套指令集的问题了,其实设计一套指令集很简单,大学教材里面都有,至于搞出来有没有人用,那就是另外一回事请了,即使是好东西,也不一定有人用,ARM和MIPS就是很好的例子。这玩意涉及到整个生态系统的构建,比如业界有没有大佬采用你指令集,周边配套是否齐备,你不能指望个一个种水稻的农民给你来份满汉全席,得有个产业配合。所谓指令集,也就是架构IP,现在国内公司只能靠买了,基本都是ARM,毕竟他产业链比较全。好在ARM现在也推出架构授权了(这儿的架构授权,可以认为是指令集架构的授权),不过这玩意价格不菲,但买了就可以改ARM的架构实现(这儿的架构实现,可以认为是cortex-Ax这些东西的实现),高通就是先例,可以搞点创新。买来架构,你还只是个CPU,一个AP需要搭配很多周边器件,GPU,LCD,USB都需要集成,至于集成什么是需要看你产品定位,需要什么功能,把这些东西都买齐了,你可以开始建模了,所谓建模就是把这些东西连起来,验证功能的正确性,然后用FPGA来验证硬件,FPGA没问题了,把生成的网表文件交给台电,中芯去代生产。流片回来之后,开始点芯片,移植操作系统,托Google的福,android已经把90%以上软件工作都已做完,软件生态系统也已经建好,当然你要用其他的操作系统你就得衡量衡量工作量。后面就是用这个AP去搭配外设去生成终端消费产品了。目前流行大厂AP都有自己的独门秘笈,高通强在通信,做手机,特别是3G手机,你绕不开他专利,都得交份子钱,和基带集成好。MTK强在集成,廉价的生态系统,出货快。其他的都是小鱼小虾,宣传的不错,都有自己的卖点,但是量不大。说到完全自主研发芯片,振兴民族产业,个人感觉现在意义不大,喷子喊喊口号而已。完全可以在别人现有的基础上改造创新,一方面企业需要盈利,这样做成功概率比较高,另一方面重复发明轮子对人类贡献也不大,要想骗国家钱那是另外的事情。


3、关于ARM的赚钱模式:

         作为ARM的授权人,有两部分钱是必须交的:前期授权费(up front license fee)、版税(royalty)。其它收费项目还有不少,比如软件工具、技术支持等等,但主要就是这两个,分别占ARM总收入的大约33%、50%。

        前期授权费一般少则100万美元,多则1000万美元(也可能更少或者更多),一次性付清。具体多少取决于所购授权技术的复杂程度,比如古老的ARM11就比最新的Cortex-A57便宜很多。

        版税则是每卖出一颗芯片交一点,通常是售价的1-2%。如果芯片是卖给其它企业或者消费者的,很好计算;如果是内部消化,那就按照应有的市场价来定。


4、MIPS

MIPS收取IP授权要比指令集授权更贵,而且允许添加指令,这就使得大佬们纷纷自行设计MIPS核心、添加指令、发布开发工具,碎片化严重,而ARM反其道行之,指令集授权远远比IP授权要贵,控制了碎片化。当时ARM还极有眼光的设计了全世界最好用、最便宜的USB调试工具,吸引了一批码农,从而构建了巨大的ARM开源软件库[3]。对于MIPS和Imagination之间的关系可以参见[9],MIPS+Imagination的Power VR其实又是一个类似于ARM的CPU+GPU组合。



参考:

[1] ARM介绍2:授权模式(处理器优化包/物理IP包授权(POP)介绍、ARM的收费方式,只收CPU和GPU,总线和接口免费送)

[2] 在CPU IP授权上,ARM 是怎样战胜MIPS的?

[3] 一文看懂ARM公司

[4] 华为海思是完全自主研发么?


[5] 什么是高通处理器krait架构

[6] 苹果自主研发的A7处理器到底如何?数据告诉你

[7]从A4到A10 Fusion处理器大盘点,苹果告诉你核数多真没啥了不起(下)

[8] ARM新杀器,Cortex-A73架构解读


[9] Imagination的GPU太诱人,MIPS和Power VR都是中国需要的

猜你喜欢

转载自blog.csdn.net/a389085918/article/details/79974003