Pour les articles homonymes, voirMali (homonymie).
L'architectureMali est une famille deprocesseurs graphiques conçue pour lessmartphones et lestablettes tactiles ; elle est développée par la sociétéARM pour lesSoC basés sur l'architecture ARM et intégrée sous licence par différents fabricants demicroélectronique.Elle a été développée parARM Norway (anciennement Falanx) àTrondheim[réf. nécessaire]. Les architectures ont des noms scandinaves (Utgard, Midgard, Bifrost et Valhall).
On peut notamment retrouver ces processeurs graphiques dans certains SoCExynos deSamsung, les A1X deAllwinner Technology, certains SoCWonderMedia deVIA, certains SoCAmlogic ouRockchip, et notamment dans certainschipset Novathor deSTMicroelectronics comme le U8500.
Le projetLima driver a été créé en 2011 pour produire un pilotelibre 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 GPUPowerVR ou plus rarement d'autres processeurs graphiques (Adreno deQualcomm,Vivante,Nvidia etVideoCore deBroadcom), 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/DRI2libres à sources ouvertes (licencesApache etMIT) 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].
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).
Lekit de développementOpenCL, appelé « Mali OpenCL SDK », est mis à disposition par ARM pour les GPU T600 et supérieur, il est compatible Linux etMicrosoft Windows. Les sources sont disponibles, mais la licence propriétaire. Il faut une licence d'ARM pour pouvoir redistribuer les sources[6].
GoogleAndroid fournit une APIRenderscript compatible avec les pilotes Mali T600 et supérieurs[7].
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'APIVulkan 1.0. Les pilotes doivent fonctionner enespace utilisateur, pourAndroid 7.0 etGNU/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].
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]
Les processeurs dont le nom comporte l’appellation Mali-... correspondent à l'architectureUtgard.
La première série, Mali 200, utilisée dans des processeurs tels que le SoCTelechips TCC890x[12]. Letaux 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].
La seconde série, Mali-300 ne semble pas avoir été intégrée dans des processeurs commercialisés.
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 leST-Ericsson U8500[14], comme les SamsungExynos 4, lesAmlogic 8726-M et 8726-MX ou lesRockchip RK3188, mais aussi sur des Soc contenant des Cortex A8Allwinner 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 parTSMC, contenant 4 cœurs cortex A9 à 2 GHz et 6 cœurs Mali-450 MP et qui devrait être disponible en série à partir du3e 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 unprocesseur vectoriel, et réduit encore le recalcul de blocs qui n'auraient pas été modifiés[17].
Les processeurs dont le nom comporte l’appellation Mali-T... correspondent à l'architectureMidgard.
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] :
La série Mali-T6.. apporte également les nouveautés suivantes[21]
ARM annonce le àShanghai, rendre augroupe 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 duFull 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?
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 :
Le Mali-T760 supporte également l'APIVulkan.
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 :
Les processeurs dont le nom comporte l’appellation Mali-G.. correspondent à l'architectureBifrost.
ARM annonce en le processeur graphique Mali-G71, utilise l'architecture Bifrost, qui peut être couplé avec le nouveau processeurCortex-A73 pour des tâches deré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].
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].
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%.
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].
Le Mali-G78 est la deuxième génération de l'architecture Valhall.
Il fait partie de la10e 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ôleurCortex-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].
Voici la liste actuelle des modèles de cœurs Mali :
Nom | Max cœurs max. shaders | Max tailleCache niveau 2 | compatibilité API | Architecture | Ré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 | 8 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 | 8 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 à 2 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 à 2 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 à 2 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 à 2 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 à 2 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 à 2 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 à 4 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 à 4 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 à 2 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 à 2 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] |
Les différentes variantes du GPU Mali peuvent être trouvées dans les SoC suivants :
Fabricant | nom du SoC | version 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) |
CPU |
| ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GPU | |||||||||||||||
VPU | |||||||||||||||
SoC |
| ||||||||||||||
Bus |
| ||||||||||||||
Systèmes d'exploitation |
|