译文|Tensor 之意不在“酒”:Google Silicon 团队专访,为你揭开定制芯片的秘密

编注:本文首发于 Ars Technica,原文The "Google Silicon" team gives us a tour of the Pixel 6's Tensor SoC,原文作者Ron Amadeo。
少数派经授权翻译、转载,在不影响原文内容前提下,仅对结构进行适当调整。
Pixel 6 终于官宣了!它有着全新的相机模组设计、超乎预期的平实定价以及最新的 Android 12 操作系统。但无论如何,这部手机最值得我们大书特书的部件一定是 Google Tensor 这颗「片上系统」,也就是所谓的 SoC。作为智能手机中首款由 Google 主导的 SoC,这块芯片有着独特的 CPU 核心架构方式,对 AI 任务的处理能力也是十分重视。
不过 Google 究竟是从什么时候开始造芯片的?Tensor SoC 想要达成的目标是什么?它又为何采用了如此独特的设计方式?为了弄清这些问题,我们和一个此前闻所未闻的新团队 —— Google Silicon 聊了聊。
今天我们就请到了 Google Silicon 团队的副总裁兼总经理菲尔·卡马克(Phil Carmack)和团队高级主管莫妮卡 · 古普塔(Monika Gupta),二位将向我们透露更多有关这颗芯片的秘密。
Google Tensor 的独特设计
大多数移动 SoC 供应商都要从 ARM 来获取芯片架构的授权,ARM 同时也会就如何使用其核心进行芯片设计提供一些(非强制的)设计指导。除了 Apple,大多数定制芯片的设计都会遵循 ARM 这套设计指导,比如今年最为常见的设计方案:一颗 ARM Cortex-X1 大核心、三颗 A78 中核心以及 4 个频率更低、功耗更低的用来处理后台任务的 A55 小核心。
现在让我们回想一下 Google 的做法:在 Google Tensor 中,小核心仍然是四颗 A55,但它配备了2 颗频率为 2.8 GHz 的 ARM Cortex-X1 大核心,用于处理前台任务。
至于「中核心」,Google Tensor 采用的 CPU 是 2 颗 2.25 GHz 的 A76(和其它家都在用的 A78 不同,这里采用的是 A76 —— A76 去年往往都被大家用在「大核」上1)。根据 ARM 在向业界引入 A78 设计时的说法,在相同的核心热上限(thermal envelope)条件下,这颗采用 5nm 制程的核心相比采用 7nm 制程的 A76 在持续性能输出上提高了 20%。Google 则在一颗采用 5nm 制程的芯片上采用了 A76 的设计,以 ARM 的描述为基础,Google 这颗 A76 核心发热应该比 A78 更少。
总而言之,Google Tensor 在散热设计上为两颗大核心倾斜了更多资源,中核心上则相对节制了些。
核心的「大」与「小」之争
因此我们向 Google Silicon 团队抛出的第一个问题正是:为什么要用这样的核心设计方案?
卡马克的解释是,Google Tensor 双 X1 架构通过在「中等负载」下运行的方式来提升整体效率。「我们大部分精力都集中在了如何配置运行负载、如何在芯片内部分配能源以及处理器如何在不同的时间点上发挥作用上」卡马克说,「Android 系统往往会在运行负载较为繁重时『倾巢出动』,而这正是我们想要处理得更加灵活的地方。」
这里所说的其实是在大部分移动芯片中都有体现的rush to sleep策略:在处理诸如网页加载这种任务时,处理器往往会将所有可能的资源都投入进去,以此达到快速完成任务、并让设备回归到低功耗状态的目的。
「在那种不急不缓的状态下,比如说 CPU 的负载没那么高、但也不算太轻的时候,两颗 X1 核心同时工作所提供到的性能其实也是最为高效的,」卡马克说。
这里他将相机取景器作为中等负载的例子,卡马克表示,「打开相机后,除了现实世界会被你一并收入屏幕上的实时预览当中,背后也有很多有趣的事情正在同时进行。比如因为 Google Lens 正在进行图像检测这样的任务,那我们就会同时用到图像计算、渲染计算和机器学习(machine learning)计算。这样的使用情景会牵涉到大量的计算任务,这些计算任务也可谓各不相同。」
稍微插一句,这里的「各不相同」(heterogeneous)意思是用到了 SoC 中不止 CPU 的部分进行计算,就以上面的 Google Lens 为例,CPU、GPU、ISP(图像协同处理器)以及 Google 的机器学习协同处理器在这个过程中都有参与。
卡马克继续说,「你也许会想,要是用两颗降频的 X1 来处理岂不是又快又省电,但这样一来负载还是会变得挺重的;相比之下,不如将这种此前一般来说需要两颗 A76 火力全开来处理的任务交给两颗 X1 来处理,同样的负载对后者来说或许只需要轻轻踩下『油门』」。
拍摄的确是一个不错的参考案例,因为之前 Pixel 手机正是在这一项上栽过跟头的。尽管现阶段2我还无法透露更多信息,但 Pixel 5 和 Pixel 5a 确实只消 3 分钟 4K 画质的视频录制就会过热,而在 Pixel 6 上同样画质参数的我进行了 20 分钟的视频录制,并没有遇到过热问题(只拍了 20 分钟是因为我累了)。
图片
图注:手机就长这个样子。
所以说,Google 此举是想用行动向「只用一个大核才是好设计」这一说法表示反对吗?毕竟尺寸巨大的单个「顶级大核心 (prime core)」也是最近才在 ARM 架构中出现的,我们此前常见的方案一般都是 4 个大核心加上 4 个小核心完事。
「一切都与你想达成的目的有关,」卡马克说,「我来告诉你什么情况下一个大核心能比过两个:当你的目标是赢得单线程基准测试的时候,你只需要给这颗大核塞进更多的逻辑门电路就行了。但如果你还需要更灵活的响应速度,用最高效的方式来达到高性能,最快的实现路径恐怕还是得用两颗大核心。」
卡马克警告说这种做法「视效能分配重心在这一代产品和下一代产品升级中的变化,未来也有可能会继续演进,」但就现目前的 X1 来说,Google 还是认为它相比传统的设计方式是更加优秀的。
「相比于我们的上一代产品,Google Tensor 的单核性能快了 80%,GPU 性能则有 370% 的提升。我提到这一点是因为我知道人们会这样问。但对我们来说这其实并不是重点,」卡马克解释说,「我们更希望大家从中明白的一点是,虽然我们是初涉 SoC 领域的团队,但我们知道要如何打造一块设计精密、运行快速同时功能强大的高频率、高性能电路……无论是频率还是每瓦性能(frequency per watt),在这类参数上我们都有非常扎实可靠的实现路径。但这并不是我们打造这块全新 Tensor SoC 的理由。」
硬件加软件,意还在 AI
没错,既然 Google 想要定制 SoC,他们造出来的肯定不是传统意义上的智能手机 SoC。Google 想要将人工智能和机器学习的设备端处理能力再向前推进一步,就芯片设计这件事而言,Google 的出发点自然也是「最有 Google 味」的地方。
「从一家公司的角度来说,Google 希望将 AI 应用到日常生活中的方方面面,」Google Silicon 高级主管莫妮卡 · 古普塔说,「我们自己的咖啡厅菜单说不定就是基于大家的习惯和配方偏好、由 AI 分析并制定的呢。」
我很乐意给你展示一系列数据来说明 Google Tensor 的 AI 处理能力有多强大,但 Google 对 TeraOPS(Tera Operations Per Second,万亿操作每秒)这样的 AI 参数也并不感兴趣。
「在我看来现目前还没有一个特别出色的、可以用来评判机器学习处理器性能的现代化方案——你所看到的大多数基准测试方案都太落后了,」卡马克说。
另外——回到上面提到的那场「各不相同」的计算——从 Google 的开源机器学习库 TensorFlow 到 Google Cloud 业务中用到的 Tensor Processing Units (TPU),Tensor 此前可以说是 Google AI 部门中非常常用的品牌名称了。Google 这块移动芯片依然被命名为 Tensor,正因为这块 SoC 上的每一部分组件都有 Google AI 算法的参与。
Tensor 的价值则将由其带来的新功能所证明,Google 似乎也没在「画饼」。有了 Tensor,Google 采取了一种更垂直的方法来同时设计 AI 硬件和 AI 软件,并且 Google 也说 Pixel 6 的机器学习代码放在旧设备上要么运行得不够快,要么就不够高效。古普塔说,Google 这里「将研发部门最新、最棒的成果拿出来,并且用更加高效的方式呈现在了 Tensor 和 Pixel 6 上。」
更多以往难以想象的新功能
那这些新功能都有什么呢?举个例子吧:多亏了 HDR+ 算法,前几代 Pixel 手机一直都得以用着最过时的传感器、拍着最好看的照片。只需按一下快门,相机就能在半秒内拍摄十张照片,并借助机器学习对其进行曝光堆叠(exposure stacking)和合并。但同样拜过时的相机硬件所赐,Pixel 手机的视频拍摄质量一直以来也很糟糕,毕竟你没办法在视频拍摄中用同样的方法来进行图像堆栈……直到现在!
欢迎来到由 Google Tensor 为您呈现的,视频图像堆叠的世界 ——Pixel 6 可以在 4K60FPS 视频中的每一帧上运行 Google 的 HDR 算法
这个视频版本的 HDR+ 算法叫做 HDR Net,在 Tensor 的图像信号处理器(ISP)中,Google 还特地为这个算法做了一个加速器。古普塔说这样一来「拍视频也能有 Pixel 的味道了」。
上面我不是提到过我们的评测小组用 4K60FPS 拍了一段 20 分钟的视频,在 HDR Net 应用到视频每一帧的情况下都没有遇到过热问题吗?相机好不好我们要评测了才知道,但上面我们讨论过的所有有关可持续的、适中的性能释放,以及那个奇怪的 CPU 架构的用意,到现在似乎开始明晰起来了。我觉得相对于前几代的 Pixel 设备来讲,这的确算是一次实实在在的、称得上是 10 倍的改进,要知道在之前我们用 Pixel 拍 4K 视频只能拍 3 分钟,而且还没有什么「花哨」的图像堆叠呢。
这种能转瞬之间完成数量惊人的机器学习任务的能力,也能引导出一些新鲜有趣的图像技术。这次相机中内置的「消除脸部模糊」的功能也应用了 Google 图像堆叠技术:如果 Pixel 6 相机的取景器检测到一张因为运动而难以拍摄清晰的面部,Pixel 6 就会启动第二颗镜头来同时拍摄两张照片。在这个过程中,主镜头会拍摄一张采用常规曝光的照片用于降低噪点,超广角镜头则会拍摄一张快速曝光的照片来移除运动模糊。之后 Google 对图片进行「对齐合并」,你就得到了一张面部清晰的好照片了。虽然这个功能同样还是得测试了才知道好不好,但经常拍那些活泼多动的孩子时可以少些糊片,这事想想就觉得还挺不错的。
图注:Pixel 6 的许多 AI 功能中的一个。这让电话菜单变得简单多了。
Google 表示 Tensor 同样也让 Google 的语音识别技术取得了长足发展,Pixel 6 就搭载了古普塔所说的「Google 有史以来发布过的、最为先进的语音识别模型。」语音识别现在会基于上下文以及说话的停顿,自动尝试添加逗号和句号这样的标点。它同样还会试着根据你通讯录中的名字以及历史记录来纠正姓名拼写。古普塔说,同上一代相比,Tensor 处理这些事情只需使用一半的功耗,而且「正因为 Tensor 允许我们以更高效的方式来运行算法模型,我们在叠加越来越多的功能的同时,也有了更加富余的施展余地。这种运行的高效性让我们得以捕捉到语言表达中最为细微的差别。」
这套语音识别系统完全在本机运行、完全离线,有麦克风按钮的地方就能用得上,自然也能运行在 Google 智能助理、Gboard、Google 翻译等应用中。比如 Google 翻译现在就有了一大堆由 Tensor 提供支持的功能,包括实时翻译;Google 智能助理的热词检测功能也得到了改进,多亏了更为复杂的机器学习算法,即便在嘈杂环境中它的表现应该也能有所提升。
前面说了这么多,等我们能挤出点时间,真的上手了一台 Pixel 6 之后可得仔细研究研究。详细评测很快就会来啦。
本文著作权归作者所有,并授权少数派独家使用,未经少数派许可,不得转载使用。