在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
查看: 4510|回复: 6

[转贴] Arm Mali GPU 四大微架构概述

[复制链接]
发表于 2020-6-23 14:24:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
对于手机终端来说,GPU图像处理能力是衡量一台手机的性能标杆。首先,是UI流畅性,大家拿到手机都得先划来划去看下UI是否流畅,而UI其实主要还是用GPU渲染的;其次是游戏的流畅性,对于很酷炫的游戏,GPU是目前手机端的唯一高性能3D加速器。在手机端,主流的几个GPU主要是PowerVr,Mali,Adreno。苹果早起使用的就是PowerVr的定制版本,不过随着苹果自研GPU,PowerVr现在基本可以是算卖给了紫光;Mali是鼎鼎大名的安谋半导体arm的图形加速IP;Adreno是高通的图形GPU。当然这里不是要对比这些GPU的性能,而是简单介绍下Mali的GPU系列。

Mali其实是Arm的Mali系列IP核,但是很多现在在很多网上提到Mali其实是直接认为是Mali的GPU。Mali系列其实还有视频,显示控制器,camera等。但是Mali应该算是授权比较多的。而且因为GPU也被更多的非业内人士所熟知。



1、Mali的四大架构之一:Utgard

第一代微架构Utgard(北欧神话人物:乌特加德)。这一代架构出来的比较早,主要是图形加速IP。可以追溯到2007年的mali-200。不过最让人惊讶的是mali-4xx系列,现在很多电视芯片都还在用这个IP。比如小米的智能电视,还有很多是mali-4xx系列的。

Utgard这一代vertex shader和fragment shader是分离的,arm官方支持的Opengl ES也只维护到2.0。所以Opengl ES 3.0及其以上要求的app是跑不了的。并且OpenCL在这一代中也是不支持的,因为这一代主打图形计算,不怎么支持通用计算。

移动端的GPU主要以基于tile的计算为主,mali的全系列(截止目前)都是基于tile的计算。基于tile的计算可以简单的认为,在进行计算的时候一张图会被划分成若干张小矩形,每个矩形可以认为是一个tile,然后对一个tile进行同时计算。

主要系列有:mali-200, mali-400, mali-450, mali-470



2、Mali的四大架构之二:Midgard

第二代微架构Midgard(北欧神话人物:米德加德)。Midgard这一代GPU开始属于同一着色器的架构,也就是上面说的vertex shader和fragment shader已经统一在一起了,相当于同一个shader计算单元可以处理多种着色器。当然也开始支持计算通用计算。特别是对OpenCL的支持,对通用计算有了很大的支持。OpenGLES 3.1虽然引入了compute shader,但是说起通用计算,OpenCL显然更加专业。

这个架构是基于128bit向量的,所以在编程的时候往往用4个float编程了能最大发挥其性能。当然,编译器也会把某些可以进行优化的计算合并成向量进行计算,不过最好在编码阶段自行优化。编译器编译的优化比较难以去把握。当然,也不建议用大于128bit的方式进行编程,最终需要编译器拆成多个数的运算,且每个数的位宽最大为128bit,如果编译器优化不好,反而会导致性能下降。

主要系列有:mali-t6xx, mali-t7xx, mali-t8xx



3、Mali的四大架构之三:Bifrost

第三代微架构Bifrost(北欧神话中连接天宫和大地的:彩虹桥)。由于这一代产品基本在2016年后发布的了,而OpenGLES在2016年后基本稳定了,所以相对于Midgard来说,在大方向上图形计算这块也没有多大的需要调整。

在Bifrost(Bifrost上更像是SIMT的模式,这里用SIMT表述也是我从多个文档资料推敲出来的)上会先把向量拆成标量,然后每个线程跑多维向量的第一维,因此对于三维向量 vec3向量最快只需要3个cycle,对于思维向量vec4最快只需要4个cycle。这里用了最快这个表述是因为并不是所有的指令都是单个cycle的。

当然,虽然bifrost架构是标量运算的,这是针对32bit的位宽来说的,如果是16bit位宽的计算,一个线程是可以在一个cycle内处理一个vec2的16bit数据的。因此在编程的时候,如果是8bit或者16bit的数据,用于应该考虑如何组织代码使得更有效的组合运算,例如16bit位宽的情况,尽量是用vec2,8bit位宽的尽量用vec4。

对于Bifrost,例如G76,一个shader core可以同时运行几十个线程,,从mali的资料显示,shader core一般由三个部分组成,ALU,L/S,TEXTURE三个主要模块。在G76上是8-wide wrap的,一般设置为3个ALU。(其余的型号可能不一样,例如G51/G72是4-wide wrap的,G72同样是3个ALU;G52跟G76一样,不过G52可配置成2个ALU的)

对于AI加速方面,部门系列也有一些指令修改,例如G52和G76都引入了int8 dot指令,该指令针对神经卷积网络的运算做了优化。

主要系列有:mali-g31, mali-g51, mali-g71, mali-g52, mali-g72, mali-g76



4、Mali的四大架构之四:Valhall

第四代微架构Valhall是2019年第二季度推出来的。该系列的是基于超标量实现的。对于G77,使用的时16-wide的wrap,单个shader core集成两个计算引擎。


发表于 2020-6-23 18:40:37 | 显示全部楼层
good~~~~~~~~~~~~~~~~~~~~
 楼主| 发表于 2020-11-11 18:23:17 | 显示全部楼层
有做GPU或者GPGPU的可以添加一下好友
发表于 2021-8-25 21:27:33 | 显示全部楼层
liaojie
发表于 2022-3-8 10:54:31 | 显示全部楼层
very good
发表于 2023-3-2 16:07:01 | 显示全部楼层
Good!
发表于 2023-3-2 16:23:40 | 显示全部楼层
v1vante GCxxxx
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

关闭

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 13:49 , Processed in 0.023548 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表