首先,
SoC的全称叫做:System-on-a-Chip,中文的的意思就是“把系统都做在一个芯片上”,如果在PC时代我们说一个电脑的核心是CPU,那么在智能终端时代,手机的核心就是这个SoC 。
这么说是因为SoC上集成了很多手机上最关键的部件,比如CPU、GPU、内存、也就说虽然它在主板上的存在是一个芯片,但是它里边可是由很多部件封装组成的 。比如通常我们所说的高通801 , Tegra 4 , A6等等都只是系统部件打包封装(SoC)后的总称 。然而各家的打包封装的内容则不尽相同,原因也不尽相同 。

比如高通的SoC集成度往往是较高的,有AP/CPU(Krait),GPU(Adreno) , RAM(运行内存) , Modem(通信模块),ISP(图像处理) , DSP(数字信号处理),Codec(编码器)等等等等 。这么多部分当中,以Modem通信模块高通的优势最大,高通之所以受到欢迎的一个原因就是集成度高,将所有的系统所需功能都在一个芯片当中提供了,手机厂商不需要额外采购(省成本),主板空间也会更加富裕,也有助于降低功耗 。
当然手机厂家在设计终端产品的时候也会根据自己的需求“部分采用”SoC当中集成的功能 。比如SmartisanT1当中并没有采用高通SoC当中自带的ISP(图像处理器),而是在SoC之外单独放置了一颗富士通的ISP 。再比如有些厂家选择不采用高通SoC当中的音频处理模块,而额外的采购Audience作为降噪方案 。再比如Vivo选择在SoC之外外挂一串高端音频芯片,增加Hi-Fi表现,都是这种“部分采用”的案例 。
有SoC供应商,或出于技术障碍,或出于战略需要,则选择在SoC当中集成更多,或者更少的组件 。比如,苹果一直选择将Modem模块放在A系列处理器之外,不封装在SoC里,就或多或少有不希望长期受制于高通的考虑 , 并且有传言说苹果自己也在研发自己的Modem模块,这个思路按照苹果长期垂直大整合的战略来看,非常符合苹果的利益 。
【手机soc的作用】

说到通用性能,有很多说很注重游戏或者视频,但最重要的是平时运行常用软件的速度及流畅度,这就是通用性能 , 而这个通用处理能力,就是所谓cpu的性能,即计算能力,说的通俗点,即一个cpu的运算速率 。
说到通用性能,有很多说很注重游戏或者视频,但最重要的是平时运行常用软件的速度及流畅度,这就是通用性能,而这个通用处理能力 , 就是所谓cpu的性能,即计算能力 , 说的通俗点,即一个cpu的运算速率 。
- ①架构现在主流的CPU架构有大家熟知的性能强大的A72,还有功耗均衡的A53,也有高通自主的Kryo而其实架构是一个和运算量没有太大直接关系的量,但却是最关键的量 , 因为架构能决定主频,核心数,主频,带宽等等和运算量直接相关的量 , 架构落后太多(注意是太多 , 落后的不多,可以通过其他东西弥补),说其他什么都是浮云 。
- ②制程很多人会问,制程到底是什么?总的来说,cpu是由晶体管组成的,制程越低,相同面积下高通封装更多晶体管,这样运算量就越大;同理,相同性能下,制程越高,面积就越小 , 发热小,这就是制程的影响,然而就算制程相同,架构不同也会影响封装面积的大小 , 架构越低,要获得相同性能,封装面积就大,发热就大 , 功耗也会更大 。而据说高通也会在明年推出10nm的830处理器,至于相比较目前的14nm到底有多大进步还需要时间的答案 。
- ③总线位宽打一个比喻,如果运算量相当与马路上的汽车的话,那这个总线位宽就相当于马路的宽 。大小、平时使用,总线位宽不会看出影响 , 而当运算量越大时,即读取大量数据时,总线位宽越大的就能有更高的效率 。而这个总线位宽,单核都是32bit , 双核四核八核大多都是64bit,所以他们读取大数据的能力稍弱,但是平时使用没有太大影响 。
- ④内存 , 缓存我们的cpu读取数据是需要使用内存的,而直接用内存来进行运算运算效率是最低的,这就涉及到缓存,现在来说,一个cpu的缓存分为L1 , L2,即一缓和二缓,现在的高端cpu还有三缓 。运算效率来说,一缓>二缓>三缓>内存 。其中读取平时小型数据,只用到L1,L2承载部分,再多的的大型数据就需要由内存承担 , 所以如果没有L2,多余的部分就会由内存来承担,速度就会变慢,L2太?。诖娉械5木驮蕉?,速度也会变慢 。现在主流CPU , 如Exyons8890是1.5MB的L2,Snapdragon 820则是1MB的L2,两者读取大型数据基本无压力,但是苹果A9已经达到3M,所以在架构制程相同的情况下 , A9比高通强并不是没有原因的 。不过一般来说,其实1MB的L2已经足够了,而且缓存只是辅助原因 , 只能减小同量的流量流动的速度,并不能增大流量 , 所以如果位宽过?。?L2再大也没有意义 。但是值得指出的是,虽然L1 L2比内存运算更有效率,但是光有速度,如果运算量总量太小 , 加速也是有限的,所以还要看内存频率和位宽的影响 。位宽和内存频率影响着总流量的大小 。这里的运算量,我们用带宽来表示,则带宽=内存频率*带宽*倍增系数/8,其中倍增系数同时代产品都是差不多的,频率相差最大不过30%左右,而位宽都是翻倍的,所以位宽的影响是最大的,而这个位宽和上面说的第二点中的总线位宽是相辅相成的 。所以在架构制程相同的情况下,总线位宽可以说是一个cpu运算流量大小最根本的原因 。
- ⑤主频主频存在的意义就如同前面的L2,L2的意义 , 只能增大速度 , 并不能增大水管的粗细,主频越大运算效率越高,在这方面来说,一个cpu的超频能力也是一种优势 。但是频率越高 , 半导体的负载就越大,就容易发热
下面讲解一下视频解码原理 。某种视频解码算法,每次的运算是: OUT = ((A*B+C)*D+E)*F+G 假设一个没有乘法指令的CPU要执行这个算法, 一般会 1.程序会写一个循环,不停的移位,然后做加法 ,实现A*B 2.结果加C 3.重复上面的完成后面的乘法和加法 没有乘法的CPU执行第一步,需要执行几十 条指令 , 优化乘法算法之后会好一些,但还是很 慢 。你可以理解这种方式是所谓最慢的“软解” 假设某个CPU内部加了多媒体加速单元,里面的 乘法器可以执行乘法指令,则 1.直接算A*B 2.结果加C 3.重复上面的完成后面的乘法和加法 假设这条是单周期乘法,第一步只需要一条指令 一个时钟周期,那么这个示例算法就比第一种快 一个数量级了再假设,有一个DSP , 支持乘累加指令 , 可以直 接算A*B+C这种操作 1.直接算A*B+C 2.重复上面的完成后面的乘累加 可以看到,用这种方式,只需要三条指令就能做 完示例算法 , 比上面只有乘法的方法快一倍再假设,有一个硬件电路,能够直接接受ABCDE FG输入,一步算出OUT = ((A*B+C)*D+E)*F+G 1.算出结果 , 然后,没有然后了 这种方式是最快的,这个是理论上的硬件解码之前说了,理论上的硬件解码速度快 , 面积和功 耗成本也最少 , 可是灵活性太差 如果某一天,一种新的编码诞生了,需要算OUT = (A*B+C)*(D*E+F)+G 对于DSP来说,只需要换一下指令的源操作数, 还是可以通过三条成累加实现,但上述最后一种 方法的硬件电路就废了SOC层面上的任何一件事情,都需要做到软硬件配合—硬件上选择性能合适成本合适的DSP<-这里的P指 的是processor,是一个处理器,有自己的指令 集 —软件上,把常用的解码算法程序,编译成DSP支 持的指令,并优化得到最好的性能和code density(高端应用不太关注后者) 这样就可以发挥出“硬解”的真正性能了我们手机上说的硬解 , 应该是以下两种 1.ARM/MIPS在CPU里面附带多媒体加速单元,或协处理器 这个比较典型的就是arm v7架构里面的neon, 能够支持高级SIMD和浮点运算指令(选配的,te gra2就没有),这个可以理解伪部分硬件加速或者2.TI/NV/高通等等厂商在做soc的时候,集成的GPU或者DSP或者其它什么多媒体加速单元 支持通用的或者各家自己的指令集或者接口,这个可以理解为真正的硬解 。视频解码任务的特点是,它没有明显的先后关系,也没有条件判断 , 比如处 理一帧的画面 , 这么多像素点,可以一起解码,不同 的像素点之间没有先后关系 。具有这种特点的任务一 般是科学计算、信号处理或者多媒体 。执行多媒体任 务,处理器需要有强大的并行能力 。硬件上可以专门 针对某种解码算法写单独的硬件ASIC逻辑,不需要将 解码算法分解成加减乘除等运算,速度最快代价最小 ,但是没有通用性 。常用方法是采用数字信号处理器(DSP) 。DSP和CP U一样 , 执行接收到的指令,但相比于偏向于控制的 CPU的指令,DSP指令更偏重于算术运算,支持的数 据宽度更大,运算更复杂 。软件将常见的编解码算法 分解成DSP支持的运算,然后通过DSP执行 。DSP的 常用技术有SIMD(单指令多数据,比如“一次加16个 数据的加法”,这样就可以一次处理16个像素点),VLIW(超长指令字,一条指令包含可以并行执行的 多次运算)等等 。GPU就是一种典型的DSP,比如N V的GPU内置了几十上百个处理单元,能够并行处理 大量的图形图像数据,在这种任务上的性能要高于C PU 。为了增强CPU对于大数据量的并行任务的处理能力,现在流行在处理器里面增加协处理器接口,可以理解 为内部的一个协助CPU的小单元 。协处理器执行浮点 计算和SIMD计算指令,能够部分增强多媒体的性能。这个接口是CPU内部的接口,不在外部总线上,因 此协处理器算CPU内部单元 。ARM的NEON就是协处 理器 。至于软件方面,官方为了用户更好的体验,一 般都做了很多限制 。而用户可以下载很多第三方播放器 , 这些播放器 听朋友说大都是调用系统的解码方案,所以播放 方面没有啥突破,基本和官方播放器差不多 。而少数播放器,开发者貌似重新写了驱动,调用自 己的解码方案,可以做到突破官方播放器的限制 ,达到硬件能支持什么就能播放什么的程度 。
硬解的部分误区:1,不是系统播放器支持播放rmvb就叫硬解 。2,有些名义上的硬解利用到了部分硬件加速特性 。比如联想 , 可能是工程师特别针对dsp写了驱动并内置于system分区,位于/system/lib部分 。而软解,我们可以列举rmvb , 目前还没有哪款手机特配单独解码芯片支持rmvb硬解(寨板不一样),所以解码rmvb可以采用两种方式,一种是利用到部分硬件加速 , 条件有二:一是处理器支持neon加速,二是软件编写驱动(最优算法),调用硬件加速 。常见的diceplayer对rmvb支持极差,mobo最好!另一种方式是纯粹靠cpu去运算,可能有算法优化 , 但是没利用到neon,效率上的差异 , 导致消耗电量的差异 。我们平时说的CPU,如7420,8890 , 810 , 820 ,其实不仅仅包括CPU , 而是指一个手机的SoC,一个手机的SoC,包括GPU,CPU和DSP 。其中GPU是指图形处理核心,和视频没有关系 。这个我下面详细说 。DSP是指视频硬解模块,和硬解主要相关 。而手机CPU包含CPU部分和neon,neon是一个cpu内部的多媒体加速模块,伪硬件加速 。CPU即一个通用处理的东西 , 和手机各种运行速度和效率都有关系 。DSP解码即为硬解 , 效率最高 。手机CPU(不包括neon)纯解码为软解 , 效率最低 。Neon加速模块为软硬解,但是由于还是靠cpu的 , 所以我们平时把它归于软解,所以才有软解主要看neon这种说法 。