过去的几年里, 苹果的芯片设计团队一直在架构设计和制造工艺两条路线上稳居业界最前沿, 此番随新一代 iPhone XS 一齐亮相的 A12 处理器同样保持了这份优良传统, 它是业界第一个实现量产应用的 7nm 移动 SoC 芯片.
此前在雷锋网《详细解读 7nm 制程》一文中我们曾介绍过, 一般来说制程的数字越小, 晶体管的 Metal Pitch 和 Gate Pitch 等特征尺寸就越小. 虽然最近几年制程的命名逐渐脱离了与实际物理尺寸之间的关联而转向商业化名称, 但它们仍然代表着晶体管密度的飞跃, 供应商能够在相同的芯片面积中塞入更多晶体管以提升性能.
不久前, 外媒 TechInsights 对 iPhone XS 进行了拆解并为 A12 芯片进行了 X 光扫描, 我们可以借由他们分享的透视图对 A12 进行一波深入的分析和猜想.
A12 的主要性能模块均位于芯片的右方和下方, 其中最右侧是占地面积最大的 GPU 集群, 4 颗核心 2*2 对称排列, 将一小块公用电路夹在中间. 左侧紧挨着 GPU 集群中腰的是 CPU 和 GPU 的共享缓存 (L3 缓存), 下方是低功耗 CPU 核心集群, 左方是的高性能 CPU 核心集群, 最左边则是 8 核 NPU.
GPU 和 CPU 的共享缓存是整个 SoC 缓存体系的一部分, 层级位于内存控制器和独占缓存之间. 由于处理器访问内存要消耗掉大量电力, 使用片上共享缓存可以节能降耗, 且由于数据的局部性, 性能还会有所提升.
从图上可以看出, A12 的共享缓存被划分成了 4 个区块, 而此前自 A7 至 A11 这 5 代处理器均为 2 区块设计. 缓存区块的加倍很有可能代表着缓存性能有了很大提升, 这个在稍后的测试中再见分晓.
最后, NPU 可以说是此次 A12 中进化幅度最大的一个性能模块, 核心数从 A11 的双核激增为 8 核, 实际性能更是从 A11 的 0.6TOP 暴涨至 5TOP, 提升近 9 倍. 需要注意的是, 有传言称此前 A11 的 NPU 使用的是 CEVA 的架构设计, 不过直到现在也没有得到证实, 而此次苹果 A12 的网页上明确提到了 "Apple-designed", 这意味着这次的 NPU 架构的确是出自苹果的自主研发.
纵观 A11 和 A12 中不同模块的面积变化, 可以清晰的看到台积电全新 7nm 制程的优势. 鉴于几乎所有的模块架构都有了变化, 无法计算出 7nm 制程的晶体管密度有多大提升, 不过若以单个 GPU 核心作为参考, 在 A12 中相比 A11 中的面积减小了 37%.
更大的 CPU 和缓存结构
此次 A12 的大核心代号为 "Vortex(旋风)", 相比 A11 的 "Monsoon(季风)" 最大的改进在于 L1 数据缓存和指令缓存双双翻倍, 均从 64KB 增加到了 128KB. 人们一直很想搞清楚的一个问题是, 苹果处理器的缓存体系到底具有怎样的结构, 现在我们可以通过使用不同队列深度测试内存延迟来一窥端倪.
测试结果是, L1 缓存的延迟拐点从 64KB 转移到了 128KB, 这很正常, 但在 L2 缓存的延迟在 3MB~6MB 范围内会一直持续增加, 而这种情况仅在以完全随机的模式访问时发生, 在较小的访问窗口中, L2 缓存的延迟从 3MB 到 6MB 又是一直平坦的.
在队列深度超过 L2 缓存的容量后, Monsoon 核心的延迟曲线会进一步增加 4MB 左右, Vortex 核心的曲线则会一直延续 8MB, 这便是二者的共享缓存容量范围, 再往后便进入了内存的领域. 这与在芯片透视图上实际看到的情况很相符, A12 的共享缓存不仅分区数量加倍, 容量也从 4MB 增加到了 8MB.
而代号为 "Tempest(暴风)" 的小核心这边情况则稍有些复杂, 乍看之下可能会认为 A11 中代号为 "Mistral(干冷的北风)" 的小核心只有 512KB L2 缓存而 A12 则有 1.5MB, 但实际上这只是缓存电源管理策略造成的假象. 通过延迟图表可以看出, Mistral 核心在 768KB 和 1MB 处存在明显的波动, 而 Tempest 核心的类似波动则发生在 2MB 处.
综合以上数据, 可以得出下表中的数据:
A12 的大核心 L2 缓存结构相比 A11 没有任何变化, 两者都有 128 个 SRAM 块, 每个 SRAM 块大小为 48KB. 而 A12 的小核心 L2 缓存容量翻倍, 意味着 SRAM 块数从 16 个增加到了 32 个.
不过, 苹果在 A11 和 A12 上使用的缓存电源管理策略允许在数据粒度较小时只激活部分缓存电路, 在 A11 上这个粒度应该是 256KB, 而在 A12 上这个粒度应该是 512KB. 这也让我们更加有理由认为 A11 的小核心 L2 缓存容量是 1MB,A12 则是 2MB, 这也意味着每个 SRAM 块大小为 64KB.
然而再回过头看大核心, 虽然我们之前认为其容量为 6MB, 不过仔细观察可以发现其曲线在 8MB 处有一些变化. 曲线的变化预示着测试数据的尺寸正在接近缓存容量的边界, 这使我们猜测 A11 和 A12 的大核心实际上有 8MB L2 缓存.
总而言之, 苹果处理器的缓存方面毫不吝惜晶体管的使用, A12 在这方面则更进一步, 整颗 SoC 上的各级缓存超过了 16MB, 这样不惜血本的规模真的足以让高通三星等公司同时期的旗舰产品无比汗颜.
进击的 GPU
在 GPU 方面, 业界普遍对 A12 有着很高的期望, 不仅仅是在性能方面, 同样也在架构方面.
去年, Imagination 发布了一份新闻稿, 称苹果计划在未来 15~24 个月内不再在新产品中使用其知识产权.
撇去 Imagination 股票价格的崩溃以及随后卖身的命运不谈, 尽管苹果确实声称 A11 的 GPU 为自主设计, 但它看起来仍然像是从 Imagination 的 Rogue 架构衍生而来, 依然是基于 TBDR(Tile Base Deffered Rendering,Imagination 的专利渲染技术), 只不过 A11 GPU 一颗核心的规模就相当于 A10 的两颗而已.
而 A12 代号为 "G11P" 的 GPU 仍然与 A11 的 GPU 有着非常明显的相似之处, 各个功能块似乎都位于相同的位置并以类似的方式构造. 苹果表示 A12 GPU 最大的进步是支持显存压缩, 而这也就意味着苹果此前使用的 GPU 都不支持显存压缩 (喵喵喵???), 以及显存压缩可以显著提升 GPU 性能.
所谓显存压缩, 指的是从 GPU 到显存的透明帧缓冲区压缩. PC 端像 NVIDIA 和 AMD 这样的厂商已经应用这一技术 N 多年了, 即使在内存带宽没有增加的情况下, 它也能提高 GPU 的性能. 移动 SoC 的 GPU 也需要内存压缩, 这是因为移动 SoC 的带宽相比桌面级 GPU 更加有限.
ARM 的 AFBC 是移动领域最公开谈论的显存压缩方案, 高通和 Imagination 等其他厂商也都有自己的显存压缩技术. 相比之下苹果在 A12 上刚刚引入这一功能似乎太晚了, 不过这也意味着 A12 将从中获得效率和性能上的显著提升.
Vortex 核心: 大规模内存改进
在谈及 Vortex 核心之前, 首先需要了解一下苹果新 SoC 的频率. 在过去几代中, 苹果一直在稳步提高其大核心的频率, 同时也提升了微架构的 IPC. 下表是 A12 和 A11 的频率表:
A11 和 A12 在单大核心满载时的最高频率分别为 2380MHz 和 2500MHz; 双大核心满载频率分别为 2325MHz 和 2380MHz. 而在小核心加入工作后, A12 的大核心频率仍被设计为稳定在 2380MHz, 而 A11 则会进一步下调至 2083MHz.
与愈发激进的大核心相比, A12 的小核心部分则更显保守. 在只启动一颗小核心时, A11 的频率为 1694MHz, 而 A12 则为 1587MHz; 启动两颗和三颗时 A11 为 1587MHz,A12 为 1562MHz; 而在四颗小核心满载时, A11 仍能保持在 1587MHz, 而 A12 则进一步降至 1538MHz.
正如之前所提到的, 苹果在 A12 的缓存结构和内存子系统上投入了大量的工作. 回到线性延迟图上, 我们看到以下针对大核和小核的完全随机延迟的行为:
大核心方面, 与 A11 的 Monsoon 核心相比, A12 的 Vortex 核心仅有 5% 频率提升, 但 L2 缓存的绝对延迟从约 11.5ns 降至约 8.8ns, 降幅高达 29%, 这意味着 Vortex 核心的 L2 缓存可以在更短的时间内完成读写访问.
小核心方面, A12 的 Tempest 核心与 A11 的 Mistral 核心延迟表现相似, 但 A12 在 L2 分区和电源管理方面又有了很大的变化, 允许访问更大的 L2 物理区块.
这里只进行了 64MB 队列深度的测试, 显然延迟曲线在这个数据集中并没有变得平缓, 但可以看出内存延迟已经有所改善. 当小核心处于活动状态时, 内存控制器 DVFS 的最大频率会提高, 这也是 Tempest 核心的内存访问存在较大的差异的原因: 当大核心上有高负载时, 它们的性能会更好.
A12 的共享缓存也发生了巨大的变化, 虽然缓存带宽相比 A11 有所降低, 但访问延迟得到了很大改善.
指令吞吐量和延迟
由于苹果并没有像 ARM 和三星一样公布其架构设计, 为了比较 Vortex 核心的后端特性, 我们测试了 A12 的指令吞吐量, 其中后端的性能由其执行单元的数量决定, 延迟由其设计质量决定.
Vortex 核心与 Monsoon 核心看起来非常相似, 整数除法和浮点除法的执行延迟都减少了 2 个周期, 浮点吞吐量则是翻了一倍.
从架构的中端和后端来看, Monsoon 核心是一次重要的更新. 此前 A10 处理器的大核心代号为 "Hurricane(飓风)", 其解码宽度为 6, 而 Monsoon 核心解码宽度增加至 7, 同时后端的整数 ALU 单元也从 4 个增加到了 6 个.
Monsoon 核心和 Vortex 核心均有 6 个整数执行单元 (包括 2 个复杂单元),2 个加载 / 存储单元, 2 个分支端口和 3 个浮点 / 矢量流水线, 这样宽裕的后端执行单元规模远远超过三星 M3 和 ARM 即将推出的 Cortex A76.
事实上, 如果没有非典型的共享端口情况的话, 完全可以说苹果的微架构在后端单元方面远远超过其他任何处理器架构, 包括桌面 CPU.
CPU 性能 2 倍于安卓旗舰
SPEC2006 是一个重要的基准测试软件, 它与其他测试软件的区别在于所处理的数据集更大更复杂. 虽然 GeekBench 4 已经成为行业中的热门, 但它的测试项目较小, 工作负载也较轻. 因此使用 SPEC2006 作为基准测试更有代表性, 它可以充分展示微架构的更多细节, 特别是在内存子系统性能方面.
性能测试在一个散热良好的环境中进行, 可以保证在 1~2 小时内完整运行测试套件不会出现问题.
在左侧轴上, 条形图表示给定工作负载下的电能消耗情况, 越长的条形意味着消耗的电能越多. 条形上的文字标注显示的是消耗电能的具体数值 (单位为焦), 以及测试期间的平均功耗 (单位为瓦).
在大多数工作负载下, A12 的大核心频率比 A11 高 5%, 但实际上频率并不是锁死的, 因而在 SPECint2006 中, A12 的表现平均比 A11 好 24%.
其中增幅最小的是 456.hmmer 和 464.h264ref 这两项测试, 这也是 SPECint2006 套件中成为瓶颈最多的测试. 由于 A12 架构方面似乎没有真正的重大变化, 小幅增长主要归功于更高的频率以及缓存结构的改进.
而在 445.gobmk 测试项上 A12 的改进则非常大, 相比 A11 增幅为 27%. 这项测试的负载特征是存储地址事件中的瓶颈以及分支错误预测.
429.mcf,471.omnetpp,473.Astar,483.xalancbmk 以及部分 403.gcc 测试项对内存子系统很敏感, A12 在这几项上取得了 30%~42% 不等的性能提升, 显然新的缓存结构和内存子系统在这方面取得了很大的成效.
在能耗比方面, A12 相比 A11 平均提升了 12%, 但需要注意的是, 这里的能耗比指的是最高性能时的功耗降低了 12%, 而 A12 展示出性能相比 A11 提高了 24%, 两个 SoC 的性能功耗曲线已经大不相同.
不过, 尽管 7nm 制程可以降低能耗, 但在性能提升幅度最大的基准测试中, A12 的功耗相比 A11 不降反升, 平均功率从 3.36 瓦增加到了 3.64 瓦. 也就是说, A12 花在提升性能上的功耗, 要比 7nm 制程降低的功耗更多一些.
接下来是 SPECfp2006 测试, 由于 XCode 中没有 Fortran 编译器且它不是 NDK 的一部分, 要让它在 Android 上工作非常复杂, 因此我们选择 C 和 C++ 基准测试.
SPECfp2006 有更多的内存密集型测试, 在 7 次测试中, 只有 444.namd,447.dealII 和 453.povray 在内存子系统达不到标准时才会看到主要的性能回归. 这对 A12 很有利, 其在 SPECfp 的平均性能增幅为 28%, 提升最大的 433.milc 一项甚至提升了 75%. 同样的分析适用于 450.soplex, 优秀的缓存结构和内存性能带来了 40% 的性能提升.
而 470.lbm 是一项有趣的测试, 它展示了苹果的架构与 ARM 和 Samsung 比起来有哪些性能优势. 470.lbm 的特点最代码中有大量循环, 要求架构中有更大的指令循环缓冲区来优化这样的工作负载, 在循环迭代中, 核心将绕过 decode 阶段并从缓冲区获取指令. 看起来苹果的架构恰好有某种类似的机制, 也有可能是苹果处理器内核的矢量执行性能 Lbm 的热循环大量使用 SIMD, 而高达 3 倍的执行吞吐量优势最终产生了优秀的性能.
(高通的 Kryo 架构由于独特的设计使骁龙 820 在这一项上的表现仍优于最近的安卓阵营处理器.)
与 SPECint 测试类似, A12 在 SPECfp 测试中的能耗比有明显提升, 在所有测试中总能量比 A11 低 10%. 另一方面 A12 的功耗也有所增加, 平均功耗从 3.65 瓦上升至 4.27 瓦, 其中 433.milc 项目的功耗从 2.7 瓦增至 4.2 瓦, 增加了 75%;482.sphinx3 项目的功耗则达到了 A12 所有 SPEC 测试项中的最大值 5.35 瓦.
总体而言, 苹果在 Vortex 核心和内存子系统方面的改进, 使 A12 的实际性能比宣传中的还要强. 与目前最强的安卓阵营 SoC 相比, A12 无论在性能上还是在能耗比上都有将近 2 倍的压倒性优势, 而如果是在正常使用条件下 A12 的优势可能还会更大.
这也让我们对今年发布的三星 M3 架构有了更好的认知, 即只有当功耗在可控范围内时, 更高的功耗才能带来更高的性能 (Exynos 9810 的功耗是苹果上代 A11 的 2 倍, 但其性能却只有 A11 的一半).
GPU 能耗比 1.8 倍于骁龙 845
GPU 的性能提升是此次 A12 的最大亮点之一, 通过 "简单的" 将 GPU 从 3 核扩充为 4 核, 以及引入显存压缩技术, 苹果表示 A12 的 GPU 性能相比 A11 提升了 50%.
在进入基准测试之前必须要知道的是, 在最近两三年里, 苹果开始注重注重峰值性能而忽视长时间运行时的稳定性能, 使用中常常出现过热降频导致性能下降. 因此苹果最新 GPU 的峰值性能和峰值功耗是一个必须关注的大问题.
在 3DMark 物理测试中, iPhone XS 和 A12 相比去年的 iPhone X 取得了很大的进步. 3DMark 物理测试此前一直对苹果的处理器不够友好, 这个境遇在 A11 上才得到了一定的缓解. A12 整体上再次提高了 SoC 的性能和能耗比, 最终在本次测试中胜过了骁龙 845.
在 3DMark 测试的图形部分, iPhone XS 的持续性能比去年的 iPhone X 提高了 41%, 不过一加 6 更加奔放的功耗和温度限制让其性能仍然更胜一筹.
不过就性能峰值而言, iPhone XS 在 3DMark 测试中遇到了大问题, 如果测试时手机的温度比较低, 就会很快在测试中崩溃. 监控显示在低温时处理器的频率很高, 平台瞬时峰值功耗可达约 7.5 瓦, 系统无法提供足够的瞬态电流, 会引起电压下降, 甚至损坏 GPU.
除了 3DMARK 之外, Kishonti 的 GFXBench 多年来一直是行业标准, 新的 Aztec 测试给我们带来了不同的工作量. 不久前 Kishonti 发布了 GFXBench 的 5.0 版本, 这个版本建立在新的渲染引擎上运行, 并引入了 High Tier 和 Normal Tier 模式下的全新测试场景 Aztec Ruins. 新的测试更加考验着色性能, 利用更复杂的效果来强调 GPU 的算术能力.
Normal Tier 模式下的 Aztec Ruins 测试要求相对较低, iPhone XS 的峰值性能相较于去年的 iPhone X 提升了 51%, 持续性能则提升了 61%, 相比一加 6 则提升了 45%. 而在 High Tier 模式下, iPhone XS 的持续性能比 iPhone X 高出 61%, 比一加 6 则高出 31%.
功耗方面, 由于没有时间在各种设备上测量 Aztec, 所以仍然依赖标准的曼哈顿 3.1 和 T-Rex 测试数据.
在曼哈顿 3.1 中, iPhone XS 的性能比 iPhone X 高出 75%. 这里的改进不仅要归功于增加的核心, 还有显存压缩技术降低 RAM 功耗的功劳.
在环境温度 22°C 时, A12 测试曼哈顿 3.1 时的峰值功耗达到 6 瓦. 但即使在这样的峰值功耗下, A12 的效率也超过了所有其他 SoC, 说明苹果对功耗的控制是非常有效的. 在运行测试 3 分钟后功率回落至合理的 3.79 瓦, 而此时处理器的能耗比仅相较峰值功耗时提升了 16%, 证明 A12 的能耗比曲线非常平坦, 6 瓦的峰值功耗仍在芯片本身的可控范围之内, 足见苹果在芯片设计上的功力之强大.
在 T-Rex 测试中, iPhone XS 的持续性能相比 iPhone X 提升了 61%, 而功耗与曼哈顿 3.1 测试时表现相似, 峰值功耗略高于 6 瓦, 数分钟后降至 4W 以下, 能耗比同样提升不大.
那么为什么近两三年的苹果处理器在峰值性能和持续性能之间存在如此大的差异呢? 实际上这种变化是由于日常 GPU 应用场景的变化, 以及苹果将 GPU 用于非 3D 相关应用的加速需求.
苹果对 API 栈的垂直集成和严格控制意味着 GPU 加速成为现实, 而峰值性能是一个重要指标. 苹果大量将 GPU 用于各种其他用途, 例如在应用程序中使用 GPU 进行相机图像处理的硬件加速. 这些应用场景均为事务性工作负载, 需要较高的峰值性能以尽快处理完成.
相比之下, 过去几年里 Android 在 GPU 计算方面一直是一场灾难, 这主要怪没有在 AOSP 中支持 OpenCL-- 这使得供应商对 OpenCL 的支持非常不完善. RenderScript 由于无法保证性能而从未获得太多的关注, Android 设备和 SoC 的碎片化意味着在第三方应用程序基本上无法使用 GPU 计算.
得益于新的 A12 处理器, iPhone XS 和 XS Max 展示了业界领先的性能和效率, 并且目前是最佳的游戏移动平台. 不过苹果还是应该在手机的热量分布上做一些功课, iPhone XS 一如上代 iPhone X 一样热量分布过于集中, 非常影响使用体验.
本文转自雷锋网, 如需转载请至雷锋网官网获取授权.
来源: http://mobile.51cto.com/hot-584659.htm