ARM Mali

processeur graphique d'ARM From Wikipedia, the free encyclopedia

L'architecture Mali est une famille de processeurs graphiques conçue pour les smartphones et les tablettes tactiles ; elle est développée par la société ARM pour les SoC basés sur l'architecture ARM et intégrée sous licence par différents fabricants de microélectronique. Elle a été développée par ARM Norway (anciennement Falanx) à Trondheim[réf. nécessaire]. Les architectures ont des noms scandinaves (Utgard, Midgard, Bifrost et Valhall).

Zoom d'un processeur ARM Cortex A57 A53.

On peut notamment retrouver ces processeurs graphiques dans certains SoC Exynos de Samsung, les A1X de Allwinner Technology, certains SoC WonderMedia de VIA, certains SoC Amlogic ou Rockchip, et notamment dans certains chipset Novathor de STMicroelectronics comme le U8500.

Pilotes

OpenGL ES

Le projet Lima driver a été créé en 2011 pour produire un pilote libre permettant d'accéder aux générations Mali-200 et Mali-400 de l'architecture utgard, puis il a été abandonné entre 2012 et 2013. Il est de nouveau actif depuis et est intégré dans Mesa depuis la version 19, et la partie DRM dans Linux depuis la version 5.2.

Le projet, Panfrost, a pour but de supporter les versions Midgard (T---) and Bifrost (G--) de ces GPU[1],[2]. Du fait qu'il soit basé sur Gallium, certaines fonctions OpenGL pour bureau sont automatiquement traduites en fonctions OpenGL ES, permettant ainsi de faire fonctionner des applications pour bureau sur architecture Midgard, ce qui n'est pas le cas avec le pilote propriétaire[3]. Il est également intégré dans les versions stables de Mesa depuis le version 19, et la partie DRM dans Linux depuis la version 5.2. Il gère un grand nombre de fonctions OpenGL complet (pas que ES), sans atteindre OpenGL 3.0 en .

De nombreux SoC ARM comportent cependant un GPU PowerVR ou plus rarement d'autres processeurs graphiques (Adreno de Qualcomm, Vivante, Nvidia et VideoCore de Broadcom), qui possèdent tous des pilotes pour Linux. Les pilotes 3D sont présents dans Mesa pour Adreno (Freedreno), Vivante (Etnaviv) et VideoCore (vc4 et vc5), ainsi que nvidia (Nouveau).

L'API générique d'accès au GPU MALI compatible EXA/DRI2 libres à sources ouvertes (licences Apache et MIT) est disponible pour les Mali 200, 300, 400 et 600 sur la plateforme Linux[4], mais la partie la plus basse d'accès au processeur, dépendant du constructeur reste fermée.

D'autre part le pilote X11 est minimum et un projet alternatif a démontré qu'il est possible d’accélérer en moyenne 3 fois les performances des opérations 3D et jusqu'à 10 fois les opérations géométriques 2D en ajoutant la gestion de certains composants d'X11[5].

OpenGL

Bien que le pilote officiel d'ARM ne supporte pas OpenGL, par contre, les pilotes sous licence libres pour Linux, Lima et Panfrost, le supportent (voir section OpenGL ES ci-dessus).

OpenCL

Le kit de développement OpenCL, appelé « Mali OpenCL SDK », est mis à disposition par ARM pour les GPU T600 et supérieur, il est compatible Linux et Microsoft Windows. Les sources sont disponibles, mais la licence propriétaire. Il faut une licence d'ARM pour pouvoir redistribuer les sources[6].

Renderscript

Google Android fournit une API Renderscript compatible avec les pilotes Mali T600 et supérieurs[7].

Vulkan

Les processeurs Mali-T760 et supérieur de l'architecture Midgard, ainsi que sur l'ensemble de l'architecture Bifrost, ont des caractéristiques compatibles avec l'API Vulkan 1.0. Les pilotes doivent fonctionner en espace utilisateur, pour Android 7.0 et GNU/Linux, et pour quelques plateformes uniquement[8],[9].

Le développement d'un pilote Vulkan open source pour les familles Midgard et Bifrost (Mali-T--- et Mali-G--) appelé PanVk débute en 2021, au sein du projet Mesa3D[10].

Les séries

Mali-55

Le Mali-55 supporte le calcul matériel des fragments et logiciel seulement des vecteurs. Il est compatible avec OpenGL ES 1.1 et OpenVG 1.0[11]

Utgard - Mali-...

Les processeurs dont le nom comporte l’appellation Mali-... correspondent à l'architecture Utgard.

Série Mali-200

La première série, Mali 200, utilisée dans des processeurs tels que le SoC Telechips TCC890x[12]. Le taux de remplissage est d'un pixel par cœur et par cycle d'horloge avec toutefois une limitation lorsque le compteur de vecteurs est saturé, cela donne par exemple pour 1 cœur à 100 MHz, 100 Mpixels/s[13].

Série Mali-300

La seconde série, Mali-300 ne semble pas avoir été intégrée dans des processeurs commercialisés.

Série Mali-4..

La troisième série, Mali-400 MP, premier processeur graphique mobile à proposer une architecture multi-cœur est proposée sur des processeurs plus haut de gamme, généralement, contenant un CPU Cortex A9, comme le ST-Ericsson U8500[14], comme les Samsung Exynos 4, les Amlogic 8726-M et 8726-MX ou les Rockchip RK3188, mais aussi sur des Soc contenant des Cortex A8 Allwinner A1X. Il peut être utilisé en version 1 à 4 cœurs et indépendamment à des fréquences de 200 à 400 MHz. Pour donner un ordre d'idée, un quadruple cœur à 200 MHz, supporte une vitesse de remplissage de 44 mégatriangles par seconde et 800 mégapixels par seconde, conservant ainsi la vitesse de remplissage brut par cœur et cycle d'horloge des Mali 200.

Le Mali-450 MP offre une puissance deux fois supérieure par cœur à celle du Mali-400 MP pour le rendu d'OpenGL ES 2.0[15] et peut gérer jusqu'à 8 cœurs simultanés. La première implémentation est l'AMLogic AML8726-M8, un SoC fondu en 28 nm par TSMC, contenant 4 cœurs cortex A9 à GHz et 6 cœurs Mali-450 MP et qui devrait être disponible en série à partir du 3e trimestre 2013[16].

En , ARM annonce le Mali-470, orienté vers les périphériques ultra basse consommation d'habillage (montres, puces que l'on peut coudre dans les vêtements, etc.). Il améliore le Mali-450, principalement au niveau de l'efficacité. Il consomme deux fois moins d'énergie que le Mali-400 à un taux de traitement équivalent. Il ajoute par rapport à ses prédécesseurs un processeur vectoriel, et réduit encore le recalcul de blocs qui n'auraient pas été modifiés[17].

Midgard - Mali-T...

Les processeurs dont le nom comporte l’appellation Mali-T... correspondent à l'architecture Midgard.

Série Mali-T6..

La série Mali-T600 est à destination des Cortex A15. Elle équipe notamment la série de Samsung Exynos 5. Le premier modèle a été le Mali-T604[18].

La série des Mali-T600 introduit le calcul flottant 64 bits. Construit sur une conception architecturale multicœur scalable et multi-pipeline et inclus de nombreuses fonctions avancées telles que[19] :

  • opération scalaire et vectorielle native pour les types de données flottantes et entières d'OpenCL (dont les 64 bits).
  • Support pour la compilation statique et dynamique
  • types de données d'image et d'échantillon pour l'accélération matérielle
  • opération atomiques rapides
  • compatibilité avec la précision requise par la norme IEEE754-2008
  • Support d'OpenGL ES 3.0[20]

La série Mali-T6.. apporte également les nouveautés suivantes[21]

  • 256+ thread par cœur au lieu de 128 sur les Mali-400 et deux pipes arithmétiques à faible latence.
  • Un pipeline avec les 3 principales tâches unifiées.
  • L'anticrénelage par suréchantillonnage (MSAA) 4x maintient un taux de remplissage de 90 % et en 16x ne divise que par 4 le taux de remplissage.
  • Une gestion de l'énergie améliorée, l'horloge d'un cœur est immédiatement et automatiquement arrêtée lorsque inutilisée et différentes fréquence possible pouvant être géré en automatique ou par le système et compatible avec le contrôle DVFS (Dynamic Voltage and Frequency Scaling).

ARM annonce le à Shanghai, rendre au groupe Khronos un test complet de conformité « OpenCL 1.1 Full Profile » pour les processeurs graphiques Mali-T604 afin d'en obtenir la certification[19]. Il s'agit du Full profile à l'intention des ordinateurs de calcul de bureau et non uniquement des applications mobiles ou embarquées (Embedded Profile), démontrant la volonté d'ARM de s'imposer dans tous les domaines.

La seconde génération, inclut les Mali-T622, Mali-T624, Mali-T628, Mali-T678?

Série Mali-T7..

La première génération des Mali-T7.., présentée le , est décliné sous deux modèles, tous deux compatibles OpenGL ES 3.0 et DirectX11[22]. Ils sont également compatible OpenCL 1.1 et RenderScript :

  • Mali-T720, destiné à remplacer les Mali-300 et Mali-400 MP, en y apportant le support OpenGL ES 3.0 et des performances 2 fois supérieures au Mali-400 MP. Il comporte 8 processeurs de shaders, ainsi que 2 MMU. Il sera notamment adapté au fonctionnement avec les processeurs ARM Cortex-A17 MPCore.
  • Le Mali-T760 double le nombre de processeurs de shaders des Mali-T604, en les passant de 8 à 16 et comporte une unité de tuillage avancé, permettant de calculer l'image en rectangle séparés et d'améliorer ainsi l'élimination des polygones inutiles (clipping) ou le traçage de surface n'ayant pas changé.

Le Mali-T760 supporte également l'API Vulkan.

Série Mali-T8..

Fin , ARM présente la gamme Mali-T8.., cette nouvelle gamme ajoute le support l'OpenGL ES 3.1, d'OpenCL 1.2 et différentes optimisations rendant le GPU plus efficace au niveau consommation[23]. Le support de l'API Vulkan 1.0 a été ajouté après sa sortie :

  • Le Mali-T820 est optimisé pour les produits entrée de gamme et orienté efficacité énergétique
  • Le Mali-T830 en milieu de gamme avec un balancement entre efficacité énergétique et performances
  • Et enfin, les Mali-T860 et T880 sont surtout orientés vers les performances pures.

Bifrost - Mali-G..

Les processeurs dont le nom comporte l’appellation Mali-G.. correspondent à l'architecture Bifrost.

Mali-G71

ARM annonce en le processeur graphique Mali-G71, utilise l'architecture Bifrost, qui peut être couplé avec le nouveau processeur Cortex-A73 pour des tâches de réalité virtuelle[24]. C'est le premier GPU d'ARM compatible avec l'API Vulkan, l'API étant ensuite porté sur les modèles des séries Mali-T..., mais aucune information n'a été donnée quant au portage sur les Mali[25]-.... Des améliorations ont été faites sur le système de pipeline, sur la granularité des caches, et sur l'élimination des triangles d'une taille inférieur au pixel[25].

Mali-G51

Annoncé en , le Mali-G51 est à destination de la réalité virtuelle et des écrans de résolution plus élevée. Il comporte deux shaders de pixels par cœur graphique, doublant ainsi les taux de texel et pixel par cœur, par rapport au Mali-G71. Il supporte également la compression de tampon d'image ARM (ARM Frame Buffer Compression ou AFBC) 1.2, ainsi que les API Vulkan, OpenGL ES 3.2 et OpenCL 2.0[26].

Mali-G52

Mali-G31

Mali-G72

Annoncé en (seconde génération Bifrost), le Mali-G72 est destiné à succéder au Mali-G71, les performances générales par rapport à son prédécesseur ont été améliorés de 40%, et l'efficacité énergétique améliorée de 25%.

Mali-G76

Annoncé en (troisième génération Bifrost), le Mali-G76 améliore ses performances de 30 % par rapport au G72, et améliore de 2,7 fois l'efficacité en Machine Learning (ML). Il supporte de 4 à 20 cœurs[27]. Chaque cœur comporte trois moteurs et chaque moteur comporte huit voies d’exécution[28].

Valhall - Mali-Gxx

Mali-G77

Mali-G78

Le Mali-G78 est la deuxième génération de l'architecture Valhall.

Mali-G610

Il fait partie de la 10e génération de processeurs graphiques Mali.

Le GPU Mali-G10 est une importante évolution de la gamme, puisqu'il intègre désormais un microcontrôleur Cortex-M7 pour ordonnancer les tâches vers les différentes unités de traitement. On appelle cet ajout le frontal de flux de commande (anglais : Command Stream Frontend, CSF), ce qui est courant sur les processeurs graphiques géométriques haut de gamme. Les développeurs du pilote libre Panfrost ont forké leur code pour intégrer ces changements sous le nom de « PanCSF » pour intégrer ces changements importants de manière indépendante au pilote Panfrost qui continue de supporter les architectures plus anciennes qui utilisaient un plus simple gestionnaire de tâches (anglais : Job Manager)[29].

Modèles

Voici la liste actuelle des modèles de cœurs Mali :

Davantage d’informations Nom, Maxcœurs max. shaders ...
NomMax
cœurs max.
shaders
Max taille Cache niveau 2compatibilité APIArchitectureRéférence
Mali-55 1 - OpenGL ES 1.1, OpenVG 1.0 - [11]
Mali-200 1 - OpenGL ES 1.1 & 2.0, OpenVG 1.1 Utgard[30] [31]
Mali-300 1 Kio OpenGL ES 1.1 & 2.0, OpenVG 1.1 [32]
Mali-400 MP 4 256 Kio OpenGL ES 1.1 & 2.0, OpenVG 1.1 [33]
Mali-450 MP 8 512 Kio OpenGL ES 1.1 et 2.0, OpenVG 1.1 [34]
Mali-470 4 Kio (L1)
256 Kio (L2)
OpenGL ES 1.1 et 2.0, OpenVG 1.1 [35]
Mali-T604 4 256 Kio OpenGL ES 1.1, 2.0 et 3.0[20], OpenVG 1.1,
OpenCL 1.1, DirectX 11, Renderscript
Midgard
1re gén.
[36],[37]
Mali-T622 2 256 Kio par cœur OpenGL ES 1.1, 2.0 et 3.0, OpenVG 1.1,
OpenCL 1.1, DirectX 11, Renderscript
[38]
Mali-T624 4 256 Kio OpenGL ES 1.1, 2.0 et 3.0, OpenVG 1.1,
OpenCL 1.1, DirectX 11, Renderscript
Midgard
2e gén.
[39],[40]
Mali-T628 8 256 Kio OpenGL ES 1.1, 2.0 et 3.0, OpenVG 1.1,
OpenCL 1.1, DirectX 11, Renderscript
[41],[40]
Mali-T658 8 256 Kio OpenGL ES 1.1, 2.0 et 3.0, OpenVG 1.1,
OpenCL 1.1, DirectX 11, Renderscript
[42],[43]
Mali-T678 8 256 Kio OpenGL ES 1.1, 2.0 et 3.0, OpenVG 1.1,
OpenCL 1.1, DirectX 11, Renderscript
[44],[40]
Mali-T720 8 64 Kio à 256 Kio selon
le nombre de processeurs.
OpenGL ES 1.1, 2.0 et 3.0, OpenVG 1.1,
OpenCL 1.1, DirectX 11, Renderscript
Midgard
3e gén.
[45]
Mali-T760 16 256 Kio à Mio (256 à
512 Kio partagé par
groupe de 4 cœurs)
OpenGL ES 1.1, 2.0 et 3.0 à 3.2, OpenVG 1.1,
Vulkan 1.0[8]
OpenCL 1.1, DirectX 11, Renderscript
[46]
Mali-T820 1 à 4 32 Kio à 256 Kio selon
le nombre de processeurs.
OpenGL ES 1.1, 2.0, 3.0 à 3.2,
Vulkan 1.0
OpenCL 1.1/1.2 Full Profile,
DirectX 11 FL9_3, Renderscript
Midgard
4e gén.
[47]
Mali-T830 1 à 4 32 Kio à 256 Kio selon
le nombre de processeurs.
OpenGL ES 1.1, 2.0, 3.0 à 3.2,
Vulkan 1.0
OpenCL 1.1/1.2 Full Profile,
DirectX 11 FL9_3, Renderscript
[47]
Mali-T860 1 à 16 256 Kio à Mio selon
le nombre de processeurs.
OpenGL ES 1.1, 2.0, 3.0 à 3.2,
Vulkan 1.0
OpenCL 1.1/1.2 Full Profile,
DirectX 11 FL9_3, Renderscript
[48]
Mali-T880 1 à 16 256 Kio à Mio selon
le nombre de processeurs
(256 à 512 kio / 4 unités de shaders)
OpenGL ES 1.1, 2.0, 3.0 à 3.2
Vulkan 1.0
OpenCL 1.1/1.2 Full Profile
DirectX 11 FL11_2, Renderscript
[48]
Mali-G31
très basse conso.
1 (simple ou double pixel) 32 Kio à 512 Kio niveau 2 OpenGL ES 1.1, 2.0, 3.0 à 3.2
Vulkan 1.0
OpenCL 1.1/1.2/2.0 Full Profile
Renderscript
Bifrost [49]
Mali-G51 1 à 32 128 Kio à Mio niveau 2 OpenGL ES 1.1, 2.0, 3.0 à 3.2
Vulkan 1.0
OpenCL 1.1/1.2/2.0 Full Profile
DirectX 11 FL11_2, Renderscript
[50]
Mali-G52 1,2,3,4 ou 6 (dual pixel) 32 Kio à 512 Kio niveau 2 OpenGL ES 1.1, 2.0, 3.0 à 3.2
Vulkan 1.0
OpenCL 1.1/1.2/2.0 Full Profile
Renderscript
[51]
Mali-G71 1 à 32 128 Kio à Mio niveau 2 OpenGL ES 1.1, 2.0, 3.0 à 3.2
Vulkan 1.0
OpenCL 1.1/1.2/2.0 Full Profile
DirectX 11 FL11_2, Renderscript
[52],[25]
Mali-G72 1 à 32 128 Kio à Mio niveau 2 OpenGL ES 1.1, 2.0, 3.0 à 3.2
Vulkan 1.0
OpenCL 1.1/1.2/2.0 Full Profile
DirectX 12 FL11_1, Renderscript
[53]
Mali-G76 4 à 20 512 Kio à Mio niveau 2 OpenGL ES 1.1, 2.0, 3.0 à 3.2
Vulkan 1.1
OpenCL 1.1/1.2/2.0 Full Profile
[54]
Mali-G77 7 à 16 512 Kio à Mio niveau 2 OpenGL ES 1.1, 2.0, 3.0 à 3.2
Vulkan 1.1
OpenCL 1.1, 1.2, 2.0 Full Profile
Valhall [55]
Mali-G78 7 à 24 512 Kio à Mio niveau 2 OpenGL ES 1.1, 2.0, 3.0 à 3.2
Vulkan 1.1, 1.2
OpenCL 1.1, 1.2, 2.0 Full Profile
Valhall
2e gén.
[56]
Mali-G610 1 à 6 512 Kio à Mio niveau 2 OpenGL ES 1.1, 2.0, 3.0 à 3.2
Vulkan 1.1, 1.2
OpenCL 1.1, 1.2, 2.0 Full Profile
[57]
Fermer

Implémentations

Les différentes variantes du GPU Mali peuvent être trouvées dans les SoC suivants :

Davantage d’informations Fabricant, nom du SoC ...
Fabricantnom du SoCversion de Mali
Telechips TCC8803, TCC8902, TCC8900, TCC9201 Mali-200[58],[59]
NetLogic Au1380, Au1350 Mali-200[60],[61]
Socle-Tech Leopard-6 Mali-200[62]
STMicroelectronics SPEAr1340 Mali-200[63]
Spreadtrum SC8810, SC6820 Mali-400 MP1[64]
Amlogic 8726-M, 8726-MX Mali-400 MP1/MP2 (1 ou 2 cœurs 400 MHz)[59]
Allwinner A10, A13, R8 Mali-400 MP1 (1 cœur à 300~400 MHz)[59]
Allwinner A20 Mali-400 MP2 (2 cœurs)
Nufront Nusmart 2816 Mali-400 MP
Rockchip RK3188, PX2 Mali-400 MP4 (4 cœurs)[65]
MediaTek MT6572 Mali-400 MP (1 cœur)[66]
Samsung Exynos 4210, 4212, 4412 Mali-400 MP4 (4 cœurs)[67]
Samsung S5P6450 Vega Mali-400 MP[68]
ST-Ericsson NovaThor U9500, U8500, U5500 Mali-400 MP[69]
STMicroelectronics STi7108, STiH416 Mali-400 MP[70],[71]
WonderMedia Prizm WM8850, WM8950 Mali-400 MP[72]
WonderMedia Prizm WM8880, WM8980 Mali-400 MP2
WonderMedia Prizm WM8860 Mali-450 MP
Amlogic S805 Mali-450 MP2 (2 cœurs)[73]
Amlogic AML8726-M8 Mali-450 MP4 (4 cœurs)[74]
Amlogic S802, S812 Mali-450 MP8 (8 cœurs)[73]
Samsung Exynos 5250, 5440 Mali-T604 MP[75]
Samsung Exynos 5260 Mali-T624 MP[76]
HiSilicon Kirin 935 Mali-T628 MP4 (4 cœurs)[77]
Samsung Exynos 5420, 5422, 5800 Mali-T628 MP6 (6 cœurs)[78]
HiSilicon K3V3 (ou Kirin 910) Mali-T658
Samsung Exynos 7580 Mali-T720 MP2 (2 cœurs)
Allwinner H6 V200 et H6 VC200 Mali-T720 Mutli-Core[79],[80]
Rockchip RK3288 Mali-T760 MP4 (4 cœurs)[81]
MediaTek MT6732 Mali-T760[82]
Rockchip RK3399 Mali-T860 MP4 (4 cœurs)
MediaTek Helio P20 Mali-T880 MP2 (2 cœurs)
HiSilicon Kirin 950 Mali-T880 MP4 (4 cœurs)
MediaTek Helio X20 Mali-T880 MP4 (4 cœurs)
MediaTek Helio X25 Mali-T880 MP4 (4 cœurs)
Samsung Exynos 8 Octa 8890 Mali-T880 MP12 (12 cœurs)
HiSilicon Kirin 960 Mali-G71 MP8 (8 cœurs)[83]
Samsung Exynos 8895 Mali-G71 MP20 (20 cœurs)[84]
Allwinner Allwinner H616 Mali-G31 MP2 (2 cœurs)[85]
Rockchip RK3530 Mali-G52
HiSilicon Kirin 970 Mali-G72 MP12 (12 cœurs)
Samsung Exynos 9810 Mali-G72 MP18 (18 cœurs)
HiSilicon Kirin 980 Mali-G76 MP16 (16 cœurs)
Samsung Exynos 9820 Mali-G76 MP12 (12 cœurs)
Samsung Exynos 990 Mali-G77 MP11 (11 cœurs)
Rockchip RK3568 Mali-G52
Rockchip RK3588 Mali-G610 MP4 (4 cœurs)
Fermer

Références

Liens externes

Related Articles

Wikiwand AI