嵌入式

指令集、微架构、手机芯片(Soc)及ARM的介绍(偏硬件科普)

2020-05-20  本文已影响0人  Tenloy
- 目录
  - 指令集
    - 概述
    - 常见的指令集
    - 指令的组成
    - 指令的长度
    - 指令的形式:机器码、汇编指令
    - GPU有没有指令集?
  - 微架构
    - 概述
    - 指令与微架构的关系
    - 微架构技术的发展
  - 手机芯片
    - 结构、制造
    - 目前三星、华为、苹果Soc中的技术
  - 与移动端关系密切的ARM(CPU/GPU IP授权)
    - ARM的几种授权模式
    - ARM的发展规模
  - 参考链接

# 指令集


以下摘自维基百科

指令集架构(Instruction Set Architecture,缩写为ISA),又称 指令集指令集体系,有的地方也称为CPU架构。包含了一系列的opcode即操作码(机器语言),以及由特定处理器执行的基本命令。

一台计算机要有较好的性能,必须设计功能齐全、通用性强、内含丰富的指令系统。常接触的指令集内容:

指令集体系与微架构(一套用于执行指令集的微处理器设计方法)不同。使用不同微架构的电脑可以共享一种指令集。例如,Intel的Pentium和AMD的AMD Athlon,两者几乎采用相同版本的x86指令集体系,但是两者在内部设计上有本质的区别。

从现阶段的主流体系结构讲,指令集可分为:

## 常见的指令集

## 指令的组成

在传统的架构上,一条指令包含op code,表示运算的方式,以及零个或是更多的操作数,有些像是操作数的数字可能指的是寄存器的编号,还有存储器位置,或是文字数据。

在超长指令字(VLIW)的结构中,包含了许多微指令,借此将复杂的指令分解为简单的指令。

## 指令的长度

指令长度的范围可以说是相当广泛,从微控制器的4 bit,到VLIW系统的数百bit。在个人电脑,大型机,超级电脑内的处理器,其内部的指令长度介于8到64 bits。在一个指令集架构内,不同的指令可能会有 不同长度。在一些结构,特别是大部分的精简指令集(RISC),指令是 固定的长度,长度对应到结构内一个字的大小。在其他结构,长度则是byte的整数倍或是一个halfword。

## CPU指令集的形式:机器码、汇编指令

一般指令集专利持有者在设计指令集的时候,往往提供指令集对应的机器语言规范。 而为了方便,一般也会提供汇编语言规范(在机器语言的基础上,增加了一些助记符)。
常见的指令集以及汇编语言规范

汇编语言规范,是给汇编程序开发者看的,也是给编译器(重要的是汇编器)看的,目的只有一个:保证汇编程序能通过汇编器转换成CPU兼容执行、实现逻辑功能的指令(二进制码)序列。如果你能编写自己的汇编器,完全可以定义自己的汇编语言规范

所以,汇编语言和机器语言是一一对应的吗?
在同一汇编规范下,它们是一一对应的。如果考虑到不同的汇编语言规范,它们就不是一一对应的了。在多数场合,笼统地说,汇编语言和机器语言是一一对应的。

## GPU有没有指令集?

图形处理器(Graphics Processing Unit,GPU),又称显示核心、视觉处理器、显示芯片或绘图芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上运行绘图运算工作的微处理器。

图形处理器:

发展

GPU不同于传统的CPU,如Intel i5或i7处理器,其内核数量较少,专为通用计算而设计。相反,GPU是一种特殊类型的处理器,具有数百或数千个内核,经过优化,可并行运行大量计算。虽然GPU在游戏中以3D渲染而闻名,但它们对运行分析、深度学习和机器学习算法尤其有用。GPU允许某些计算比传统CPU上运行相同的计算速度快10倍至100倍。

指令集是针对微处理器而言,而由微处理器的解释可知,根据微处理器的用途划分,常见的有CPU、GPU、APU等,按照概念,GPU应该也有相应的指令集及微架构。从GPU的条目中也可以看到指令集的字眼。

# 微架构(微处理器架构)概述


微架构(microarchitecture),也被叫做计算机组织,是一套用于执行某种指令集的微处理器设计方法,即微架构使得指令集架构(ISA)可以在处理器上被运行。

## 微架构的概念

从控制单元、运算单元两方面来简单介绍一下:

## 指令集与微架构的关系

对于兼容ARM指令集的芯片来说,指令集与微架构这两个概念尤其容易混淆:

通常,业界认为只有具备独立的微架构研发能力的企业才算具备了CPU研发能力,而是否使用自行研发的指令集无关紧要。微架构的研发也是IT产业技术含量最高的领域之一。

## 发展

在PC时代,几大主要的CPU研发厂商都只是自己研制微架构自己用。到了智能设备时代,ARM公司的微架构授权模式兴起。ARM自己开发微架构后将它们上架出售,其他厂商可以拿这些核心组装为芯片来使用或销售。由于这种模式对第三方的技术能力要求很低,加上ARM的微架构在低功耗领域表现优异,这种模式获得了广泛成功。如果你发现某款芯片标明使用了Cortex系列核心,则一定是这种模式的产物。
如前所述,仅仅从ARM购买微架构来组装芯片的厂商是不能被称作CPU研发企业的,这些芯片也不能被称为“xx厂商研发的CPU”。典型如华为的海思920、三星Exynos 5430,只能说是“使用ARM Cortex-A15核心的芯片”

但是如果一款兼容ARM指令集的芯片使用了厂商自主研发的微架构情况就不同了。高通骁龙800、苹果A7就是这样的例子--它们分别使用了高通、苹果自主研发的CPU。

那么,现在各家CPU研发厂商选择指令集的标准又是什么呢?一般来说大家倾向于选择软件生态较好的指令集,即支持某种指令集的软件应用越多,这种指令集也就越有市场优势。新开发的微架构只需要兼容某种指令集,那么就可以很容易运行大量为其开发的软件。早年因为微软的强势与Wintel联盟的推动,x86指令集成了最受欢迎的角色,帮助Intel用彼时性能相对落后的微架构在PC平台挤跑了一众对手。后PC时代由于苹果谷歌的两大操作系统平台的推动,ARM指令集又取得了绝对的市场优势。

但对于新的CPU研发单位来说,他们想获得热门指令集的兼容授权是很困难的事情。

数年前国产龙芯CPU获得MIPS授权的消息曾引起一阵风波,龙芯相关负责人还曾出来解释。龙芯是兼容MIPS指令集,微架构部由中科院自主研发的CPU系列。过去中科院资金不足所以没有MIPS指令集授权,但是指令集的实现方式是公开的,因而中科院可以在研发时选择兼容该指令集。待资金充足买下授权后,龙芯就可以合法在市面销售。

从这里我们可以知道,厂商研发CPU时并不需要获得指令集授权就可以获得指令集的相关资料与规范,指令集本身的技术含量并不是很高。获得授权主要是为了避免法律问题。然而微架构的设计细节是各家厂商绝对保密的,而且由于其技术复杂,即便获得相应文档也难以山寨。不同厂商的微架构设计水平也有较大差异,典型如Intel与AMD的对比,前者在最近几年明显技高一筹。

# 手机芯片(Soc)


## 现在常说的芯片非CPU,而是Soc. 如麒麟、晓龙芯片

微架构研发完成,或者说核心研发完成,接下来就是将其组装为芯片了。芯片概念澄清:

关于后续的芯片制造,有两种选择

## 三星、华为、苹果、高通的Soc现状

以Soc中的CPU、GPU、基带芯片这几个核心器件为例:

总结:随着以智能手机为代表的移动市场竞争的进一步升级,为了提升自身手机产品的竞争力,三星、苹果、华为等头部的智能手机厂商继打造自己的手机SoC之后,纷纷加码投入自研CPU、GPU、NPU及基带芯片等核心器件当中。

尤其是华为,自“中兴事件”、美国制裁华为之后,华为便开始进一步加大了对于自研核心芯片的投入。有传闻称,除了自研的手机SoC/基带/NPU,自研CPU/GPU也在进行中

# 与移动端关系密切的ARM(CPU/GPU IP授权)


ARM起初也是卖芯片的,不过业绩平平,在这个情况下,ARM 决定改变他们的产品策略——他们不再生产芯片,转而以授权的方式,将芯片设计方案转让给其他公司,即“Partnership”开放模式。

ARM 所采取的是 IP(Intellectual Property,知识产权)授权的商业模式,收取一次性技术授权费用和版税提成。对于半导体公司来说,一次性技术授权费用在 100 万 -1000 万美元之间,版税提成比例一般在 1%-2%之间。

## ARM的几种授权方式

具体来说,ARM有三种授权方式: 使用层级授权、内核层级授权和架构层级授权。 这三个层级的权限(及价格)是依次上升的。

使用层级授权

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

内核层级授权(也就是常说的IP核授权)

指可以以一个内核为基础然后在加上自己的外设,不能改变原有设计,但可以根据自己的需要调整产品的频率、功耗等。比如USART GPIO SPI ADC等等,最后形成了自己的MCU ,比如三星、德州仪器 (TI)、博通、飞思卡尔、富士通以及Calxeda等,这些公司并没有权限去对内核进行改造。

IP核,全称知识产权核(英语:intellectual property core),是在集成电路的可重用设计方法学中,指某一方提供的、形式为逻辑单元、芯片设计的可重用模组。IP核通常已经通过了设计验证,设计人员以IP核为基础进行设计,可以缩短设计所需的周期。

IP核可以通过协议由一方提供给另一方,或由一方独自占有。IP核的概念源于产品设计的专利证书和源代码的版权等。设计人员能够以IP核为基础进行专用集成电路或现场可编程逻辑门阵列的逻辑设计,以减少设计周期。

IP核分为软核、硬核和固核:

架构/指令集层级授权

是 ARM会授权合作厂商使用自己的架构,且可以对ARM架构进行大幅度改造,甚至可以对ARM指令集进行扩展或缩减,方便其根据自己的需要来设计处理器。例如高通的Krait架构和苹果的Swift架构,就是在取得ARM的授权后根据自己的需求设计完成的。拥有架构级授权的高通和苹果所制造的ARM处理器也总是拥有更低的功耗和更高的性能

注意,某一版本的架构层级授权,通常是永久性的。

比如,假如ARM为了遵循美国禁令,中断了与华为的相关业务,短期内华为不受受到影响,因为华为有ARMv8架构的永久授权,而目前主流处理器的CPU核心基本上基于ARMv8指令集。华为可以直接根据ARMv8的指令集进行大幅度的改造,甚至扩展ARM指令集,实现某些特殊的功能。

华为完全可以自己与ARMv8指令集自行设计处理器而不受授权限制,并且具有完整的知识产权,不受美国禁令的影响。高通骁龙处理器、苹果A系列处理器都是基于ARM指令集授权进行的自主设计。

做个很形象的比喻:假设我写了一篇文章,我只授权了你转发,不能更改,不能添油加醋,便是使用层级授权;我授权你可以在文章中引用我的文章,便是内核级授权;我授权你可以拿去修改、重组我的文章,形成一篇新的论文,便是架构层级授权。

间接授权

需要说明的是,上述三种级别的授权均不允许被授权者再次出售ARM架构授权。而对于半导体工厂而言,ARM通常会对其进行特殊授权。这使得台积电、三星半导体等拥有半导体代工业务的企业不仅能够直接向用户出货拥有ARM内核的芯片,更在一定情况下拥有重置ARM内核的实力和权力。这也就让很多根本无法取得ARM授权的企业能够间接的使用或拥有ARM核心;当然,这种方法所带来的成本通常也比要直接从ARM手中买授权的价格高出数倍。简单的说,芯片代工厂在某种程度上扮演了ARM授权代理商的角色,其存在可以满足某些用户小批量生产以及早期论证和试验的需要。

其他

如果划分得更细一点,ARM的授权模式还包括了:

规模

正是ARM的这种授权模式,极大地降低了自身的研发成本和研发风险。它以风险共担、利益共享的模式,形成了一个以ARM为核心的生态圈,使得低成本创新成为可能。目前ARM在全球拥有大约1000个授权合作、超过300家合作伙伴,但是敢于购买架构授权的,也只有15家。高通Krait、苹果Swift、Marvell都是典型的用户。正是靠着如此众多授权伙伴的支持,ARM处理器才获得了25亿颗的季度出货量,历史总量已经达到500亿颗,可以绕地球12周。

2011年,ARM的客户报告79亿ARM处理器(一般来说,只要是使用ARM指令集架构的处理器,我们都会称之为 ARM 处理器)出货量,占有95%的智能手机、90%的硬盘驱动器、40%的数字电视和机上盒、15%的微控制器、和20%的移动电脑。
简言之:ARM 已经垄断了移动芯片市场。

有人觉得,ARM的成功得益于自身的开放,但实际上它仅仅是在商业模式上开放,在技术上的保守程度超乎大家的想象。ARM架构授权支持芯片厂商修改芯片,但同时必须遵守ARM设置的许多条件。

到现在,获得ARM32授权的公司一只手都能数的过来,ARM64授权虽然多一些,但授权费却异常昂贵。一家基于RISC-V架构的法国创业公司Greenwave表示,如果选择ARM架构,要花掉1500万美元的授权费。而且授权到期后,一切都是未知的,是否继续授权和授权费用都要重新谈判。

为什么像苹果高通这些有能力设计自主架构的公司不能自己设计指令集而非要买ARM的然后再在上面设计架构?
可能是做不出比arm性能更好的指令集了呗,或者性价比太低

# 参考链接

课外读物

上一篇 下一篇

猜你喜欢

热点阅读