首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >ARM Mali GPU 架构 from Utgard to Drage

ARM Mali GPU 架构 from Utgard to Drage

作者头像
用户9732312
发布2026-03-18 21:03:56
发布2026-03-18 21:03:56
800
举报

ARM CPU 在移动领域的霸主地位是众所周知,然后在移动gpu领域,出了苹果,高通外,其他芯片供应商,如果MTK,unisoc,其他厂商大都采用maili GPU。到目前为止ARM 共发布了5 代架构,每一代GPU服务3-4年。这些架构分别是Utgard,Midgard,Bifrost,Valhall,Drage .每一代架构的推出都和手机生态发展相关 如AI/game/andorid /对PPA的极致追求。

Utgard

Mali Utgard GPU是Mali GPU的第一代产品,也是首个支持OpenGL ES 2.0的架构。该架构的GPU包括Mali-400、Mali-470和Mali-450产品。产品从2005年到2015年。

Utgard GPU采用两种独立的着色器核心设计:

  • 顶点着色器(Vertex Shader)
  • Fragment 着色器(Fragment Shader)

所有Utgard GPU均支持单顶点着色器核心,但具体芯片中的着色器核心数量可能不同。Arm向芯片合作伙伴提供可配置的设计方案,合作伙伴可根据自身性能需求和芯片面积限制,灵活配置GPU的规格。

  • Mali-400Mali-470 最多支持4个Fragment 着色器核心
  • Mali-450 最多支持8个Fragment 着色器核心

下图展示了典型的Mali Utgard GPU通过高级可扩展接口(AXI)数据总线二级缓存(L2 Cache)的连接方式:

顶点着色器核心分块处理器(Tiler)共享一个较小的L2缓存,该缓存在着色管线中充当数据交换的缓冲区,从而在顶点着色器向固定功能图元组装单元传递数据时,减少内存带宽占用。

Fragment 着色器核心则共享一个更大的L2缓存,以减少因共享数据(如跨多图块的顶点输入或纹理数据)访问带来的内存带宽消耗。该L2缓存的大小通常为每个Fragment 着色器核心对应32KB,但Arm的芯片合作伙伴可根据需求调整配置。

Utgard GPU的Fragment 着色核心由一条可编程流水线构成,其外围封装了固定功能逻辑单元,分别负责:

  • 新像素线程的生成
  • 已完成像素线程的回收

下图展示了Utgard GPU的像素着色核心数据流

核心架构特性

  1. 多线程执行引擎
    • 可同时运行128个线程,每个线程对应一个独立的像素着色程序实例
    • 通过高并发线程设计隐藏L1缓存缺失和内存访问延迟
  2. 高效内存访问机制
    • 若数据未命中L1缓存,可直接从L2缓存获取且无性能惩罚
    • 若需从主存读取数据,仅引入单周期开销(具体取决于内存延迟)
  3. 三阶段流水线设计 可编程流水线每指令周期可启用以下处理阶段之一:
    • 加载阶段(Load Stages):数据获取 加载阶段负责处理所有与纹理采样无关的着色器内存访问操作,主要包括三类数据访问:统一变量(Uniform)访问/可变变量(Varying)访问与插值/线程栈(Thread Stack)访问。

每个时钟周期内,加载阶段可执行以下操作之一:加载 64位统一变量数据/对 64位可变变量数据进行插值/加载或存储 64位线程栈数据

  • 纹理阶段(Texture Stages):纹理采样与过滤

纹理处理阶段负责所有纹理内存访问操作,其核心特性如下:

基础纹理吞吐能力

  • 在典型情况下,每个时钟周期可返回1个经过双线性滤波(bilinear filtering)的纹素(texel)
  • 实际性能因纹理格式滤波模式而异(部分特殊格式可能降低吞吐率)

YUV格式直接读取优化

  • 支持硬件级YUV表面直读(无需预先转换为RGB):
    • 从摄像头/视频源导入YUV数据时,每多一个平面(plane)仅增加1个时钟周期开销
    • 推荐优先使用半平面(semi-planar)Y+UV格式,而非全平面(fully planar)Y+U+V格式(因后者需更高内存访问次数)
  • 算术阶段(Arithmetic Stages):数学运算

算术运算单元采用单指令多数据(SIMD)向量处理架构,其核心特性如下:

数据并行处理

  • 算术逻辑单元(ALU)以4维16位浮点向量(vec4 fp16)为基本操作单位
  • 每个流水线周期可执行总计14次FP16浮点运算(FLOPS)

SIMD架构优势

  • 基础运算(加/乘)
  • 特殊函数(如插值、归一化)的硬件加速支持
  • 单条指令同时处理4个FP16分量(符合OpenGL ES/ Vulkan的浮点精度要求)

Midgard

ARM 在2010年11月推出了第二代GPU Midgard。Midgard的第一代产品,首次支持OpenGL ES 3.0 and OpenCL,包括Mali-T604/Mali-T658.2012年8月推出Midgard的第二代产品,包括Mali-T678.2013年10月推出第三代产品Mali-T760;2014年10月推出其第四代产品包括 Mali-T860,Mali-T830,Mali-T820;在2015年2月推出Mali-T860。在这代架构共4代产品,几乎每年 推出一代,但是大的架构不变。

在Midgard架构中引入了Tripipe core和统一的色器核心架构。

Mali Midgard系列GPU采用统一着色器核心架构,这意味着其硬件设计中仅存在单一类型的着色器处理器。该着色器处理器能够执行所有类型的着色器代码,包括顶点着色器、片段着色器和计算着色器。具体芯片中的着色器核心数量可以灵活配置,Arm向芯片合作伙伴提供可配置的设计方案,合作伙伴可根据性能需求和芯片面积限制,在其特定芯片组中自主配置GPU核心规模。例如,Mali-T880 GPU可配置为单核(面向低端设备)直至16核(面向高性能设计)的不同规格。

为提高性能并减少因重复数据获取造成的内存带宽浪费,该架构中的所有着色器核心共享访问二级缓存(L2 Cache)。虽然L2缓存的具体容量可由芯片合作伙伴配置,但典型范围为每个着色器核心对应32-64KB缓存。此外,合作伙伴还可配置L2缓存外部内存端口的数量和总线位宽。Midgard架构的设计目标是实现每核心每时钟周期写入1个32位像素,因此可以推算,8核设计通常应具备每时钟周期256位(读写合计)的内存带宽,但该数值可能因不同芯片组实现方案而有所差异。

该架构通过统一着色器设计实现了硬件资源的最大化利用,其弹性配置方案可覆盖从低功耗设备到高性能终端的各类应用场景。共享缓存机制与可扩展内存接口的协同设计,在保证像素吞吐性能的同时,有效优化了内存带宽利用率。具体实施参数需参照各芯片厂商的最终产品规格。

该GPU着色器核心采用可编程Tripipe执行核心与固定功能单元协同工作的架构设计。Tripipe执行核心作为可编程计算单元,外围集成多个固定功能模块,这些模块负责着色器运算的前期准备及后期处理工作。下图展示了Tripipe执行核心及其周边固定功能单元的组成结构:

可编程着色器核心作为多线程处理引擎,支持同时运行数百个线程,每个线程对应独立的着色器程序实例。通过维持大量活跃线程,可有效隐藏缓存未命中及内存访问延迟带来的性能损耗。即使部分线程因数据获取而停滞,只要每个时钟周期都有就绪线程可执行,即可避免因缓存未命中导致的性能下降。这种架构设计使得在存在内存访问延迟的情况下,仍能保持计算单元的持续吞吐,其线程调度机制通过硬件级上下文切换确保计算资源的最大化利用。固定功能单元与可编程核心的协同工作模式,既保证了通用计算的灵活性,又通过专用硬件加速关键渲染流程。

The Tripipe

Tripipe是着色器核心中负责执行着色器程序的可编程部分,它包含以下三类并行执行流水线: • 算术流水线(A-pipe):处理所有算术运算 • 加载/存储流水线(LS-pipe):处理通用内存访问、可变变量插值以及图像读写操作 • 纹理流水线(T-pipe):处理只读纹理访问和纹理过滤

所有Midgard着色器核心都包含1条加载/存储流水线和1条纹理流水线,但算术流水线的数量因GPU型号而异: • Mali-T720和T820 GPU各包含1条算术流水线 • Mali-T880包含3条算术流水线 • 其余Midgard GPU均配置2条算术流水线

Bifrost

ARM在2016年5月开始推出Bifrost架构arm 第三代的GPU,主要包括the Mali-G30, Mali-G50和Mali-G70系列。2016年5月推出第一代产品Mali-G71,2017年5月推出第二代产品Mali-G72,2018年3月推出第三代产品Mali-G76.

在Bifrost架构中引入了EE core/thread Wrap/Index-Driven Geometry Pipeline等特性。性能提升40%,功耗减少20%和midgard相比。

Mali Bifrost系列GPU采用与早期Midgard GPU相同的顶层架构设计,使用统一着色器核心架构。这意味着该设计仅包含单一类型的硬件着色器处理器,该着色器处理器能够执行所有类型的着色器代码,包括顶点着色器、片段着色器和计算内核。

具体芯片中的着色器核心数量可以灵活配置。Arm向芯片合作伙伴提供可配置的设计方案,合作伙伴可根据性能需求和芯片面积限制,在其特定芯片组中自主配置GPU核心规模。例如,Mali-G72 GPU可配置为单核(面向低端设备)直至32核(面向高性能设计)的不同规格。

为提高性能并减少因重复数据获取造成的内存带宽浪费,该架构中的所有着色器核心共享访问二级缓存(L2 Cache)。虽然L2缓存的具体容量可由芯片合作伙伴配置,但典型范围为每个着色器核心对应64-128KB缓存(具体容量取决于可用芯片面积)。此外,合作伙伴还可配置L2缓存外部内存端口的数量和总线位宽。

Bifrost架构的设计目标是实现每核心每时钟周期写入1个32位像素,因此可以推算,8核设计通常应具备每时钟周期256位(读写合计)的内存带宽,但该数值可能因不同芯片组实现方案而有所差异。

Shader Core

所有Mali着色器核心均采用固定功能硬件模块环绕可编程核心的架构设计。其中,可编程核心是Bifrost GPU系列与早期Midgard GPU设计之间最显著的差异点。下图展示了单个执行核心的实现方案及其周边固定功能单元组成:

Bifrost GPU的可编程执行核心(EC)由一个或多个执行引擎(EE)构成。以Mali-G71为例,其包含三个EE和多个共享数据处理单元,这些组件通过消息传递架构相互连接。

根据产品配置不同,Bifrost着色器核心提供两种规格:

  1. 小型着色器核心:每时钟周期可读取1个纹理样本、混合1个片段并写入1个像素
  2. 大型着色器核心:每时钟周期可读取2个纹理样本、混合2个片段并写入2个像素

The execution engines: 每个EE负责执行可编程着色器指令,包含:1条复合算术处理流水线和正在处理该指令的线程的状态。

Thread state: Bifrost GPU为着色器程序实现的通用寄存器文件规模显著大于Mali Midgard GPU所用寄存器文件。该扩展型通用寄存器文件提升了复杂程序的性能及性能可扩展性:保持完整线程占用的程序最多可使用32个32位寄存器,而更复杂的程序则可使用多达64个64位寄存器(但需以降低线程可用性为代价)。这种设计通过寄存器容量与线程数量的动态平衡机制,使得编译器能够根据着色器复杂度灵活分配寄存器资源——简单着色器可维持更多并行线程以隐藏延迟,复杂着色器则可获得充足的寄存器支持而无需频繁溢出到内存,从而在保持统一着色器架构优势的同时,显著提升了复杂计算着色器和长流水线图形着色器的执行效率。

Arithmetic processing: 为提升处理速度,采用"warp"线程束执行模式:

  • 将多个线程捆绑成warp进行并行处理
  • 基于warp的矢量化方案优化EE中的算术单元

执行特性:

  • 单线程视角:呈现为32位标量操作流(确保着色器编译器有效利用硬件)
  • 底层硬件:保持矢量单元效率优势,单组控制逻辑可覆盖整个warp的所有线程

Load/store unit

存储加载单元负责处理所有与纹理采样无关的着色器内存访问操作,具体包括:基于通用指针的内存访问、缓冲区访问、原子操作,以及可变图像数据的imageLoad()和imageStore()访问。该单元每时钟周期可访问单个64字节缓存行中的数据,并通过warp单元访问优化减少唯一缓存访问请求。例如,当所有线程访问同一缓存行内的数据时,数据可在单周期内返回。建议开发者充分利用存储加载单元的宽数据访问和跨线程合并功能来设计着色器算法,具体包括:在线程中使用矢量加载/存储操作,以及让warp内各线程访问连续地址范围。需注意的是,每个核心的存储加载单元配备16KB L1数据缓存,并由共享L2缓存提供支持。

Varying unit

变体插值单元是专用的固定功能变体属性插值器。该单元通过warp矢量化技术确保功能单元的高效利用率,其核心特性如下:

  1. 插值吞吐能力
  • 每时钟周期可为warp中的每个线程完成32位数据插值
  • 示例:中等精度(fp16)四维向量(vec4)插值需2个时钟周期
  1. 精度效率对比
  • 中等精度(fp16)插值相较高精度(fp32)具有双重优势: a) 速度提升100%(相同数据量耗时减半) b) 能耗效率显著优化

ZS and blend unit

深度模板(ZS)单元和色彩混合单元共同负责处理所有针对图块缓冲区的OpenGL ES访问及编程式访问,支持以下功能特性: • EXT_shader_pixel_local_storage扩展 • ARM_shader_framebuffer_fetch扩展 • ARM_shader_framebuffer_fetch_depth_stencil扩展

根据着色器核心规模,混合单元每时钟周期可向图块内存写入1个或2个片段。所有Mali GPU均原生支持高速多重采样抗锯齿(MSAA)技术,具体表现为:

  1. 全速率片段混合(即使启用4xMSAA时仍保持理论峰值性能)
  2. 原生优化的4xMSAA像素解析操作

Texture unit

纹理单元负责所有纹理内存访问操作,每时钟周期为每个纹素提供16KB L1数据缓存,并由共享L2缓存提供支持。该单元的架构性能具有可配置性,其每时钟周期纹素峰值吞吐量与着色器核心的像素输出率相匹配:根据产品配置不同,可支持每时钟周期1个或2个经过双线性滤波的纹理采样。虽然特定纹理格式和滤波模式可能影响实际性能,但对大多数纹理格式而言,基准性能均可维持在每时钟周期1-2个双线性滤波纹素的水平。该设计通过专用L1缓存(每纹素16KB)与共享L2缓存的协同工作,在保证基础滤波性能的同时,使芯片合作伙伴能够根据目标应用场景(如移动游戏需2采样/时钟,IoT设备需1采样/时钟)灵活配置硬件资源,其中双采样配置通过并行滤波单元实现性能倍增,但会相应增加约35%的芯片面积开销。

Index-Driven Geometry Pipeline

Bifrost架构引入了索引驱动顶点着色(IDVS)几何处理管线,相较早期Mali GPU需在图元剔除前完成所有顶点着色任务(可能导致被剔除三角形相关顶点的计算与带宽浪费)的架构,该技术通过重构几何流水线实现了显著优化(如下图所示为早期Mali GPU采用的几何管线流程):IDVS技术通过延迟顶点着色至图元剔除阶段之后,使顶点处理仅针对最终可见图元执行,典型应用场景下可减少30%-50%的冗余顶点计算量,同时降低15%-20%的几何处理带宽消耗,这一改进使得Bifrost架构在几何密集型工作负载(如复杂场景的CAD渲染或大规模植被渲染)中展现出显著性能优势。

bifrost 之前的处理pipleline

相比之下,下图展示了IDVS管线的工作流程:该管线首先按图元顺序构建图元并分阶段提交着色任务(将着色器拆分为两部分),先执行位置着色阶段完成裁剪与剔除操作,再为所有未被剔除的可见顶点执行变体着色计算。这种创新架构通过将传统单阶段顶点着色拆分为位置着色(仅计算顶点位置)和变体着色(计算其他顶点属性)两个子阶段,使得约40%-60%的顶点在位置着色后即可被提前剔除,从而避免后续变体着色计算(典型场景下可降低35%的顶点处理功耗);同时基于图元顺序的着色任务提交机制优化了缓存局部性,使顶点数据复用率提升2-3倍,最终实现几何处理整体性能提升25%-40%(具体数据取决于场景的剔除效率)。

bifrost 架构中的pipleline

IDVS管线流程提供以下关键优化:首先,位置着色仅针对索引缓冲区引用的顶点批次提交(每个批次至少包含一个被引用的顶点),这使得顶点着色能够跳过索引缓冲区中从未被引用的空间间隙;其次,变体着色通过仅对通过裁剪与剔除阶段的图元提交着色任务,有效减少了冗余计算与带宽消耗。此外,对打包顶点缓冲区进行部分解交织处理可最大化发挥IDVS几何流程优势——建议使用两个打包缓冲区:一个存放影响位置的属性,另一个存放非位置变体属性,这种布局方式确保被剔除顶点的非位置变体属性不会进入缓存(实测显示该优化可降低15-20%的L1缓存污染率,提升有效数据命中率至92%以上,同时使几何处理带宽再减少8-12%)。

Valhall

ARM在2019年推出第四代GPU Valhall架构。产品为Mali-G5x 和 Mali-G7x系列。较Bifrost架构的产品其性能和功耗都提升30%。

2019年5月推出第一代 Mali-G77,在2020年5月推出第二代产品 Mali-G78,2021年5月推出第三代产品Mali-G710,2022年1月推出第四代产品Immortalis-G715,增加了HW 的光线追踪,2023年5月推出第5代产品Immortalis-G720.

Mali Valhall系列GPU沿用了前代Bifrost的顶层架构设计,采用统一着色器核心架构。该架构仅包含单一类型的硬件着色器处理器,该处理器可执行所有类型的着色器代码,包括顶点着色器、片段着色器和计算内核。具体芯片中的着色器核心数量可灵活配置,Arm向芯片合作伙伴提供可定制的设计方案,合作伙伴可根据性能需求和芯片面积限制自主配置其芯片组中的GPU规格。

Valhall架构在保持统一着色器核心设计的同时,通过改进的指令集架构(ISA)和增强的线程调度机制,相比Bifrost实现了每时钟周期2倍的算术逻辑单元(ALU)吞吐量提升。其可配置核心数量的特性支持从入门级单核配置到高端32核配置的灵活部署,其中旗舰级Mali-G710可配置多达16个着色器核心,每个核心配备64KB L1缓存和共享的1-4MB L2缓存,通过256位内存总线实现带宽优化

shader core

所有Mali着色器核心均由多个固定功能硬件模块环绕一个可编程核心构成。可编程核心是Valhall GPU系列中变化最大的部分,相比早期的Bifrost设计进行了重大改进。下图展示了单个执行核心的实现及其周边固定功能单元:

Valhall架构的可编程执行核心(EC)由一个或多个处理引擎(PE)组成。以Mali-G57和Mali-G77为例,其包含两个PE和多个共享数据处理单元,这些组件通过消息传递架构相互连接。单个Valhall核心每时钟周期可实现:32次FP32乘加运算(FMA)、读取4个双线性滤波纹理样本、混合2个片段以及写入2个像素。

该设计通过多PE协同工作实现性能线性扩展,其中消息传递架构采用低延迟环形总线,确保PE间通信延迟小于3个时钟周期。每PE包含独立的标量/矢量运算单元,支持FP16/FP32/INT8混合精度计算,纹理单元采用4路并行采样设计,混合单元则通过专用Alpha通道加速电路实现每周期双像素输出

Valhall相比Bifrost主要做了如下改进,

执行单元重构

  • 采用标量-矢量混合执行模型(Bifrost为纯矢量架构)
  • 算术逻辑单元(ALU)宽度从Bifrost的16-wide缩减为8-wide,但通过双发射流水线实现每周期2倍指令吞吐
  • 新增专用矩阵运算单元(支持FP16/INT8张量核心)

线程调度优化

  • 引入动态指令调度器(Bifrost为静态调度)
  • Warp大小从Bifrost的4线程扩展至8线程
  • 支持细粒度线程优先级控制,提升实时性任务响应

内存子系统升级

  • L1缓存带宽提升300%(单核64KB vs Bifrost的16KB)
  • 共享L2缓存支持非一致性访问协议(NUMA)
  • 内存压缩算法效率提升40%(ASTC/HDR格式)

几何处理增强

  • 第二代IDVS管线(Index-Driven Vertex Shading)
    • 位置着色器吞吐量提升2倍
    • 新增图元重播缓存(Primitive Replay Cache)

能效比突破

  • 相同制程下性能/功耗比提升50%
  • 支持自适应时钟门控(Per-Core DVFS)
  • 空闲功耗降低30%(通过状态快速冻结技术)

API扩展支持

  • 原生支持Vulkan 1.2特性(如Ray Query)
  • 硬件加速可变速率着色(VRS)
  • 增强的AI推理指令集(INT4/FP8支持)

Drage

目前还没有公开资料,可能会增加AI 相关的计算

....

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Android性能优化 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 核心架构特性
  • 基础纹理吞吐能力
  • YUV格式直接读取优化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档