APP下载

出击顶级市场 谷歌TensorSoC架构和性能一览

2021-01-21张平

微型计算机 2021年23期
关键词:功耗三星架构

张平

如今的移动SoC市场,除了高通、苹果和三星之外,其他厂商在旗舰级产品上总是感觉差点意思,不是工艺有点问题,就是架构不够新。在Android移动设备市场中,三星Exynos大多用于自家产品上,各品牌旗舰产品可选的SoC只有高通骁龙—考虑到全球大量的智能手机品牌,这样的不平衡迟早会出现变化。2021年11月初,谷歌发布了全新的Pixel 6系列手机,并搭载自研的Tensor系列SoC。那么,这款芯片的架构、设计有什么值得关注的内容呢?

对旗舰级移动设备来说,硬件配置中最核心的部分莫过于其使用的SoC。在目前的Android移动设备市场中,能够对外提供旗舰级SoC的厂商实际上只有高通一家,因此市场上大量的旗舰手机、平板电脑在发布时都采用了完全一样的高通旗舰芯片,比如2021年的旗舰级移动设备绝大部分都使用的是骁龙888系列。这样的情况使得市场上的产品趋同现象逐渐明显。为了改变这样的情况,全球很多企业开始寻求新的发展和突破,尤其是上游芯片厂商或者垂直领域的巨头,都在试图进入顶级移动SoC市场。

谷歌作为垂直领域的巨头,一直在芯片领域跃跃欲试。对谷歌来说,通过自研SoC,不但可以提供具有竞争力、差异化的产品,还可以进一步加高自己的技术壁垒,增强技术竞争优势,形成企业内部循环系统,甚至进一步降低成本,提高整体利润率。有这么多好处,谷歌自然全力而为。2021年11月,谷歌全新的Pixel 6系列手机正式发布。这一次,人们发现谷歌放弃了之前一直选用的第三方SoC(主要是高通),转而采用了全新的、加入了大量自研技术的TensorSoC。谷歌的新产品采用了一个数学名词“张量”作为名称,一方面显示了自己产品的独特性,另一方面让人不得不联想这款SoC和AI计算的关系。这样的Tensor ,当然值得一看。

扑朔迷离:谷歌Tensor和三星Exynos 2100的关系

首先我们来研究一下Tensor的设计来源。众所周知,谷歌虽然之前在芯片设计、量子芯片方面有不少技术积累,但是在移动SoC上还是业内新手。对芯片行业来说,不同类型、需求的芯片其设计导向和所需要的知识产权差别巨大,一次就成功拿出旗舰级产品的可能性不是很高。因此,在Tensor上,谷歌选择了业内一家厂商作为合作伙伴(或者说和合作伙伴一起定制研发),那么这个合作伙伴是谁呢?

研发代号往往会泄露不少信息。Tensor在内部被称为GS101,GS的意思可能是“Google SoC”或“GoogleSilicon”,“101”应该是初代首款芯片的数字码。这样看起来倒也很正常。但是,这款产品还有另一个代号,芯片上标明其ID为“0x09845000”—我们知道,三星Exynos 2100的研发代号是S5P9845。一般来说,业内两款同期推出的芯片之間的研发代号基本相同的可能性是非常小的,各个厂商都有自己的命名方式和数字代码,因此这个代号显示出Tensor和Exynos2100之间可能的关系。

其实从2020年开始,三星就不断地推广自己的半定制芯片方案,和思科、谷歌等企业的合作新闻屡见报端。比如2020年8月的消息显示三星获得了一个谷歌定制芯片的订单,不过并非移动SoC,而是传感器产品,但是同时也有一些消息显示三星正在不断扩大自己的半定制业务版图。一种猜测是,三星和谷歌在半定制芯片产业上存在更多的合作,三星深度参与了Tensor的设计过程。

如今随着Tensor的发布,我们可以更为清晰地对比这两款SoC之间的差别了。谷歌公布了Tensor的配置方案,我们使用Exynos 2100进行对比,来了解其中的差异。

从配置方案的对比可以看出,Tensor和Exynos 2100有很深的渊源。两者的基本架构相似度非常高,其中GPU的型号选择、内存方案、ISP、多媒体核心和Modem、工艺基本相同,在CPU核心、GPU性能、缓存配置以及AI核心方面则存在显著差异。

另外,在表中未能呈现的内容中,目前已知的是这两款SoC在一些底层架构,比如时钟管理架构、电源管理架构方面是完全一样的,更上层的部分比如存储控制器、PHYIP、结构IP等,两者也基本相似。在CPU集群方面,Exynos采用的是相干互联方式,Tensor则采用了不同的CC I集群。内存方面,Exynos单独为部分IP单元设置了独立的内存总线,Tensor则不是很清楚如何处理这部分内容。总的来说,在设计和宏观架构层面,Tensor更像是在三星给出的方案中进行了大量的自定义设计。用食物来比喻的话,谷歌使用了三星的厨房甚至厨师,但是更换了主要的菜品甚至口味。

CPU部分: 两颗Cortex-X1的方案和“2+2+4”的独特设计

要更进一步了解Tensor,让我们先从CPU部分开始。

谷歌为Tensor选择了目前业内都不常见的一种方案,那就是“高性能核心+性能核心+节能核心”的“2+2+4”方案。一般来说,在进入Cortex-X1世代以后,像高通、三星等厂商往往会选择“1+3+4”的方案,也就是1个频率尽可能高的高性能核心来提高单线程性能,再搭配3个性能核心和4个节能核心来提高多线程性能,三星Exynos 2100采用的就是后者。Tensor的设计有点类似三星之前的Exynos 990或Exynos 9820,在这两款SoC上,三星采用了“2+2+4”的方案,也就是一个自研的M5或者M4高性能核心,搭配Cortex-A76等高性能核心,再搭配4个Cortex-A55,这种方案仅限于ARM推出Cortex-X1之前。从这个角度来看,Tensor的CPU架构设计是独一无二的。这种设计的优势在于,在那些需要重度使用双线程的场合下,Tensor可能会具有一定的性能优势。

在性能核心的架构上,Tensor选择的是Cortex-A76。相比目前的Cortex-A78而言,Cortex-A76实际上并不占优。考虑到三星Exynos 990选择了Cortex-A76,有一种可能是在Tensor选择CPU架构的时候,三星尚未准备好集成新的Cortex-A78,因此才使用了比较老的Cortex-A76。

在频率方面,我们看到Tensor的高性能核心Cortex-X1频率为2.8GHz,相比Exynos 2100的2.91GHz略低,也比骁龙888的2.86GHz略低,但幅度并不大。此外,Tensor的性能核心Cortex-A76和节能核心Cortex-A55的频率比Exynos 2100都更低一些。因此在单线程、双线程性能方面,Tensor的表现可能会更为优异,更多线程性能方面则可能存在一定的劣势。

Tensor的缓存设计是比较独特的。对于高性能核心Cortex-X1而言,Tensor为其配备了1MB L2缓存,相比Exynos 2100容量翻倍。值得一提的是,骁龙888也采用了1MB缓存的设计。对移动SoC来说,缓存将占据大量的芯片面积,因此设计厂商需要非常谨慎地在面积、性能和功耗之间平衡。Tensor在这里使用了1MB的 L2缓存和2个高性能核心,显然是非常看重2个线程以内的性能运行情况。与此相反的是,Tensor的性能核心缓存容量减半且频率较低,这意味着其性能表现不会特别出色。但是Tensor为节能核心配置了128KB L2缓存,而不是Exynos 2100的64KB,这使得SoC在大部分轻负载状态下也具有较好的性能表现。另外,谷歌将整个集群的L3缓存和Cortex-A55放置在一个时钟平面上,这样的设计可能会在一定程度上影响延迟和功耗,相比之下,Exynos 2100则并没有这样做。

总的来说,Tensor的CPU部分在设计和规格上是有别于其他厂商的方案的,它采用了“2+2+4”的设计,在进入Cortex-X系列高性能核心时代后就已经不多见了。尤其是Tensor的2个高频率的高性能核心、大缓存方案搭配2个频率较低、缓存容量较少的性能核心,可能是综合考虑了性能和面积、成本等因素后才做出的调整。Tensor这种特别看中2个高性能核心的设计方案在其他的产品中从未出现过,属于独树一帜的设计。

GPU部分:高频率的Mali-G78 MP20

GPU部分也是Tensor的设计重点。在这里谷歌采用的是Mali-G78作为基础架构。Mali-G78是Mali GPU上一代性能最强的架构,MP20也就是20核心的设计方案也使得Tensor成为仅次于华为麒麟9000之后第二大Mali-G78 GPU。

需要注意的是,在GPU规模上,很多SoC设计时会在规模和频率中二选一,也就是要么大规模,要么高频率。但是在Tensor上,谷歌选择了二者兼得。Tensor的GPU部分能够在Shader模式下运行在848MHz,在Tiler或者L2模式下运行在高达996MHz。如此巨大的规模和如此高的频率,意味着Tensor的GPU部分功耗和发热可能会很惊人。

相比之下,Exynos 2100的GPU规模要小得多,三星同样采用的是Mali-G78,但是僅仅采用了MP14的方案,运行频率最高也仅为854MHz。Tensor的GPU规模要比Exynos 2100大42%,且频率基本相同。这意味着在全速状态下,仅仅是GPU部分的功耗,Tensor将显著高于Exynos 2100。

Tensor的AI处理单元:edgeTPU

在CPU和GPU部分之后,则是Tensor的AI处理单元。在之前的内容中,本文曾提到Tensor的“Tensor”是A I加速计算中常用到的数值格式,Tensor的命名也意味着谷歌希望这款SoC在AI性能方面有所超越。

谷歌在AI加速处理器上是有相当深厚的功底的,之前谷歌曾推出过数代TPU产品,并且已经实际使用在设备中,取得了不错的效果。在Tensor上,谷歌将集成的A I加速单元称之为edgeTPU,这实际上是在暗示集成的A I加速单元的功能和技术来源,“edge”表示其用途和边缘计算有关,所谓边缘计算,是指在设备端和应用端的加速计算,它的性能往往不如超级计算机或者服务器那样强大,但是由于更靠近终端,因此更为“边缘”,这也是“edge”的来源。另外,Tensor的AI加速单元的技术显然是之前TPU的简化版本,谷歌将其做了适配移动SoC的一些简化(或者优化)。更早一些的信息显示,2018年的时候,谷歌就展示了4Tops计算能力的TPU模块,功耗为2W。在目前的Tensor上,谷歌没有给出任何信息和功耗方面的内容,但是一些数据显示其最高可达5W。考虑到2018年的工艺和2021年的工艺存在显著的落后,如果之前的消息可靠的话,那么Tensor的AI计算能力是相当值得期待的。

谷歌没有给出edgeTPU太多的细节内容,但是谷歌宣称目前的版本已经采用了最新的ML架构,并且针对目前的机器学习进行了充分的优化,支持开辟新的用例。另外,edgeTPU似乎还包含了一个四核心Cortex-A32处理器模块,这个模块用于控制和操作edgeTPU—谷歌目前对这个信息并未予以证实。

Tensor的内存、SLC、ISP和媒体单元

在其他的一些单元方面,比如内存单元,Tensor的内存单元和Exynos2100一样,都采用了4通道LPDDR5的方案,总的峰值理论带宽为51.2GB/s。

在这里需要额外提及的是Tensor的系统级缓存。目前系统级缓存正在成为SoC设计的一个非常重要的特征,大量性能取向的SoC都在末端集成了系统级缓存,比如苹果,三星以及今天我们看到的Tensor。Tensor拥有8MB的SLC,容量数据和三星的Exynos 2100相同,但是在使用方面两者可能存在显著差异。谷歌宣称他们将非常广泛地在各大功能模块中使用SLC来提高性能,包括谷歌的自定义模块。另外,Tensor的SLC还可以进行分区操作以对应不同的需求,部分区域还可以专用于部分特定的功能模块,这些功能模块也能够在特定的情况下独占全部或者部分SLC。

另外则是Tensor的ISP,这也是Tensor和Exynos 2100的一个显著差异。一般人们会认为ISP是一个整体的功能模块,但实际上ISP是很多功能的组合,不同的功能会使用不同的处理管线。谷歌在这里做了一些特别的操作,他们将三星Exynos上使用的ISP进行了重新组合,并结合了谷歌的部分内容,最终形成了在Tensor上使用的ISP。

这个新的ISP在图像处理部分使用了大量在Exynos上已有的功能,包括像素相位检测处理单元、对比度自动对焦处理单元、图像缩放器、失真校正处理以及依赖视图的纹理遮挡处理等。由于三星经常使用后处理,因此这里缺乏了一些功能模块。因此,谷歌添加了不少的功能模块,包括自动曝光、自动白平衡、自动对焦以及定制的时间性降噪等,另外还拥有对齐和合并图像的功能模块。不仅如此,考虑到谷歌Pixel系列在计算摄影技术上的优势,ISP方面谷歌还应该加入了额外的功能(但是谷歌没有太多信息披露)以满足计算摄影算法的需求。

测试结果一览:强悍但弱点明显的产品

有关Tensor的性能,国外anandtech网站做了详细的测试。在这一部分,本文引用他们的一些内容进行解读。

CPU方面,Tensor在大部分测试项目中的表现和Exynos 2100以及骁龙888表现相似,但是问题出现在有关内存的延迟负载相关的测试上中,这部分结果显示Tensor显著落后于Exynos 2100和骁龙888,比如531.deepsjeng、557.xz_r等项目,并且由于效率较低,其最终性能功耗比表现也不是很乐观。另外,在计算性能方面,Tensor的表现还是比较令人满意的,甚至部分测试中Tensor体现了更为优秀的性能功耗比。最终的总评成绩显示,Tensor比Exynos 2100稍许落后,大约落后骁龙888 12.2%。另外值得一提的是,Tensor在實际测试中出现高热降频的现象,测试人员将其在室温11℃下测试时,性能要比室温23℃测试时更高,尤其是在浮点计算测试中。

在这里有个重要的问题需要提及,那就是前文也说过的有关2个Cortex-A76核心,这两个核心频率低、缓存也比较小,虽然相比较老的Exynos 990其能耗比表现更为出色,但是和骁龙888的Co r tex-A78比较的话,性能差距高达46%,虽然从频率、IPC方面来说这个差距是合理的,但实际上谷歌完全可以选择频率低一点但是显然更先进的Cortex-A78来实现2个性能核心。因此在这里很难解释为什么谷歌这样做。对4个Cortex-A55节能核心来说,谷歌为其配置了更大的缓存,但是最终的效率表现却不是那么出色,这里的问题和三星在Exynos上所发生的是一样的,这也在很大程度上显示了两款SoC的关系。

GPU方面,由于Tensor的GPU规模更大,因此在测试中展示出了更强的性能,不过相比其46%的规模增加,性能增加的21%显然不成比例。实际上出现这个情况的原因可能并不是谷歌的锅,ARM的GPU目前设计实际上遇到了架构的瓶颈,在规模进一步扩大后,边际效应愈发明显,导致性能提升并没有想象中的那么令人满意。实际上,ARM到现在也没有很好地解决GPU规模和性能的问题。另外,Tensor的GPU由于规模较大,峰值功耗也是非常夸张的,甚至达到10W的水平,这使得GPU很快受到功率限制而降低性能。在这种情况下,整个G P U的持续性能表现甚至不会比Exynos 2100更好,并且GPU部分在持续运行中似乎受到了3W功耗墙的限制,性能输出就显得更低了。对这个问题,一种解释是谷歌可能更强于将这个SoC应用在计算市场,而不是在游戏市场中。

最后再来看看有关Tensor的edgeTPU部分。从实际测试来看,在经过谷歌的优化后,Tensor在机器学习相关测试方面取得了相对很不错的成绩。比如在图像分类、对象检测和图像分割测试中,Tensor都能完胜Exynos 2100,在语言相关测试中,Tensor则能够以数倍性能优势大胜包括骁龙888在内的所有SoC—这是谷歌在Pixel 6系列手机销售时的宣传重点,也就是实施转录语言和实时翻译。在GeekBench ML测试中,Tensor也仅次于苹果A15,领先于其他一众SoC。总而言之,Tensor的edgeTPU在很大程度上是相当成功的,它也体现了谷歌在设计Tensor和Piexl 6系列手机时的初衷,那就是更为优秀的AI计算能力。

小结

最后我们来总结一下这款Tensor的相关特性。在他的CPU部分,谷歌采用了非常独特的“2+2+4”的方案,目前看起来其整体性能尚可但是存在一些问题,比如内存性能较差、性能核心和节能核心表现不佳等。GPU方面这款SoC拥有非常大的规模,不过性能提升幅度和规模不成正比,并且和CPU部分一样,都很难长期运行在最高频率下,因此整体性能输出存在一些问题。Tensor的亮点在于其AI计算部分使用的edgeTPU,整体性能表现不错,尤其在语言类测试中以数倍优势力压所有竞争对手的产品(包括苹果),这可能也是谷歌针对Tensor的最重要需求,从这个角度来说,Tensor很好地完成了这个工作。

Tensor在很大程度上算是一款水准之上的移动SoC产品,但是它的缺点也暴露出谷歌在移动SoC上还缺乏经验,尤其是需要功耗控制的场合,高通、苹果等厂商表现得更为驾轻就熟,能够很好地在面积、性能和功耗之间平衡,谷歌目前做得还不够好,可能未来下一代Tensor将表现得更为出色吧。

猜你喜欢

功耗三星架构
基于FPGA的RNN硬件加速架构
功能架构在电子电气架构开发中的应用和实践
三星Galaxy Note 20 Ultra 5G
“三星”惊现
LSN DCI EVPN VxLAN组网架构研究及实现
揭开GPU功耗的面纱
数字电路功耗的分析及优化
“功耗”说了算 MCU Cortex-M系列占优
IGBT模型优化及其在Buck变换器中的功耗分析
一种基于FPGA+ARM架构的μPMU实现