Apple travaille depuis des années sur le Dynamic Caching des puces M3

Pierre Dandumont |

Lors de l'annonce des puces M3, Apple a mis en avant une nouvelle fonction de ses GPU, le Dynamic Caching. Et des brevets montrent que l'idée n'est pas totalement nouvelle chez Apple : elle date au moins de 2020.

La gestion de la mémoire vidéo a toujours été un domaine compliqué, spécialement avant la mise en place de la technologie Smart Access Memory (chez AMD) ou Resizable Bar (le nom de la technologie). Avant cette technologie (apparue vers 2020), les transferts entre la mémoire classique et la mémoire vidéo étaient réduits à une fenêtre de 256 Mo dans la mémoire vidéo (c'est-à-dire un espace limité à 256 Mo). Avec le Resizable Bar, cette fenêtre peut être plus grande, ce qui simplifie les transferts dans les jeux et les applications qui doivent accéder à une grande quantité de mémoire vidéo. Apple, avec sa mémoire unifiée, règle en partie ce problème : le CPU et le GPU se partagent le même espace, ce qui réduit les soucis liés aux transferts car ils n'existent pas. Mais même avec cette solution, un problème se pose : la taille des données.

Apple ne donne pas beaucoup de détails mais cet article de Digital Trends tente une explication. Quand un GPU doit exécuter des shaders en parallèle, il doit allouer de la mémoire vidéo à chacun d'entre eux, de façon statique. Un shader peut être vu schématiquement comme un programme qui s'exécute sur le GPU, et si une puce en exécute beaucoup en parallèle — comme un jeu — un problème se pose : une allocation statique peut demander trop de mémoire. Nos confrères expliquent que les programmes doivent partir sur une capacité adaptée au pire cas et qu'il est donc possible de remplir la mémoire vidéo, ce qui a un impact important sur les performances.

Dans un GPU classique, l'allocation statique augmente l'usage de la mémoire.

L'idée de la technologie d'Apple, donc, consiste à laisser le GPU gérer l'allocation de manière dynamique — en s'adaptant aux tâches en cours —, ce qui réduit l'occupation de la mémoire. D'un point de vue pratique, il y a deux effets directs : une occupation plus faible de la mémoire, mais aussi une amélioration des performances, avec la possibilité d'exécuter plus de tâches sans saturer la mémoire.

Comme Apple met en avant le fait que la mémoire unifiée permet d'obtenir une grande quantité de mémoire vidéo (jusqu'à 128 Go dans un MacBook Pro M3 Max), l'idée de réduire son utilisation peut sembler paradoxale, mais elle ne l'est pas. Car en réalité la mémoire unifiée n'est pas nécessairement un avantage. Sur un MacBook Pro 14 pouces M3 doté de seulement 8 Go de RAM — ce qui est une aberration en 2023 —, la quantité de mémoire vidéo disponible est plus faible que sur un PC doté d'un GPU équivalent. En effet, ce dernier a probablement une mémoire vidéo dédiée de 4 Go ou 8 Go, en plus de la RAM du PC lui-même1, alors que le MacBook Pro partage 8 Go entre CPU et GPU.

Apple montre que sa technologie réduit l'usage et c'est intéressant.

Un des autres avantages vient aussi probablement des changements effectués sur le bus mémoire de la puce M3 Pro : en passant de 256 bits à 192 bits, Apple a réduit la bande passante mémoire (de 200 à 150 Go/s environ) et donc les solutions qui permettent de réduire la mémoire utilisée réduisent aussi in fine la bande passante nécessaire.

18, 24 ou 36 Go de RAM : Apple profite de la mémoire non binaire

18, 24 ou 36 Go de RAM : Apple profite de la mémoire non binaire

Dans tous les cas, la technologie devrait permettre à Apple d'utiliser encore un peu plus efficacement les unités de ses GPU, alors même que l'architecture choisie au départ offre déjà une efficacité élevée dans une bonne partie des cas. Et cette nouveauté a l'avantage d'être transparente pour les développeurs, qui ne doivent a priori pas modifier leurs programmes.


  1. Et aucun fabricant n'ose vendre un PC à 2 000 € avec 8 Go de RAM, soyons clairs.  ↩︎

avatar Memo | 

18go de ram devrait etre le minimum, de série. Et vu le prix des machines, 1to de ssd devrait etre le minimum. Si Apple veut promouvoir ses macs pour le gaming, faut au moins ça. Un jeu AAA aujourd’hui c’est au moins 100go d’espace disque…si les éditeurs et developpeurs de AAA veulent bien faire du portage sur mac…

avatar lldjandoll | 

@Memo

Cet techno n’a pas l’air d’être destiné au gaming. En tout cas celui occuper majoritairement par le couple Intel/nvidia/microsoft. Aucune comparaison possible.

avatar fte | 

@lldjandoll

"Cet techno n’a pas l’air d’être destiné au gaming."

Cette techno n’est pas destinée aux GPU performants. Ce n’est pas construit ainsi un GPU performant, pas du tout.

avatar MBagnick | 

Est-ce que l'A17 l'a?

avatar Kwikyyy | 

@MBagnick

Nope

avatar Captain Bumper | 

@Pierre Dandumont : donc est-ce que ce de technique augmentera automatiquement aussi les performances sur des applications non gaming qui utilisent le GPU pour des opérations ; je pense notamment à Lightroom Classic et Photoshop qui reposent en partie sur le GPU (mais c’est pas non plus folichon je trouve avec ma Vega 48)?

Je pense aussi à DxO PhotoLab 6 ou 7 qui utilise le GPU mais leur FAQ indique également que sous Apple Silicon PhotoLab est optimisé pour utiliser le NPU des processeurs (apparemment à la place du GPU) pour le débruitage par IA. Du coup, le NPU, lui quand il est sollicité, il passe au travers du CPU? Accède directement à la mémoire ? Avec du dynamic caching aussi?
Sur ce soft je me suis toujours demandé quelle solution serait la plus efficace : CPU+GPU, GPU seul, NPU seul ou GPU+NPU (si cela est possible)…?

avatar hlemai | 

@Captain Bumper

Pour avoir tester différents modèles CoreML chez Cyme, il n’y a pas photo.
Le Neural engine est au moins 2 a 5 fois plus rapide que le Gpu pour faire une prédiction sur un modèle optimisé.
Imbattable particulièrement sur M2 ou sur iPhone 13 ou plus.
Si par contre on veut faire plein de prédictions différentes et que la consommation d’énergie n’est pas un problème, on peu utiliser le gpu qui lui peut parfois faire plusieurs prédictions en même temps. (Alors que sur le neural engine deux prédictions en même temps prennent deux fois plus de temps qu’une seule).
Sur un mac (pas sur un tel) on peut faire les deux en même temps et on arrive presque à doubler la perf du neural engine. (Au détriment de la consommation d’énergie et de la mémoire disponible)
Je pense que pour DxO DeepPrime le neural engine est le meilleurs, à la fois en consommation bien sûr mais aussi en temps total.
Avec un modèle optimisé c’est vraiment incroyable la vitesse de prédiction vs consommation pour le neural engine.

avatar totoguile | 

J'attends les tests du M3Pro : c'est le SoC qui m'intrigue le plus dans cette gamme. Une promesse de gain par rapport au précédent (même minime) mais avec bcp moins de transistors que le M2Max. On sent qu'Apple a travaillé sur l'optimisation de son architecture.

avatar Captain Bumper | 

@totoguile : le M3 Pro ne donnera pas de performances éclatantes par rapport au M2 Pro : Apple annonçait le M2 Pro comme étant 20% plus rapide que le M1 Pro... Et le M3 Pro a été annoncé comme étant 20% plus rapide que ... le M1 Pro... Donc M2 Pro et M3 Pro auront des performances globalement équivalentes (peut-être que certains tests seront un peu meilleurs mais à la marge).

avatar totoguile | 

@Captain Bumper

Oui effectivement: le 1er test GB6 donne des résultats très légèrement supérieur au M2Pro. C'est donc je trouve une belle prouesse en optimisation de la part d'Apple !

avatar fte | 

"Et aucun fabricant n'ose vendre un PC à 2 000 € avec 8 Go de RAM, soyons clairs. ↩︎"

J’en connais un.

La mémoire unifiée du marketing d’Apple est une arnaque totale. Il n’y a aucun avantage concret dans un scénario où les performances GPU sont exploitées et où la mémoire unifiée est avantageuse. Aucun. La mémoire unifiée résulte en une diminution drastique des performances, parce que la mémoire unifiée est adaptée à des traitements généralistes et non à des traitements graphiques spécialisés, parce que la bande passante est beaucoup plus faible que de la vraie mémoire graphique dédiée, parce que le bus est partagé avec le CPU ce qui réduit d’autant plus la bande passante nécessaire aux traitements performants par le GPU, parce que les caches sont également partagés et les algorithmes de prefetch ne sont pas adaptés aux traitements GPU ni la structure des caches généralistes…

Ça n’a qu’un avantage concret : se passer de mémoire graphique dédiée. Mais c’est compréhensible avec un GPU intégré au CPU. Intel et AMD font pareil depuis bien avant "l’innovation" d’Apple. Pour des raisons pratiques et pragmatiques. Les GPU intégrés sont bien moins performants, donc pourquoi s’emmerder à leur fournir une architecture mémoire spécialisée et adaptée à leur fonctionnement si spécifique et augmenter complexité et coûts ?

On saura sans l’ombre d’un doute le jour où Apple deviendra sérieux avec le GPU. Ce jour le GPU aura bus et mémoire dédiés. Mémoire mesurée en GB. Au pluriel. Je pourrais parler d’AI et de sérieux aussi, mais non, je ne vais pas.

avatar redchou | 

@fte

Il y a quand même un avantage avec la possibilité de travailler sur les données avec le CPU, le GPU ou d’autres circuits spécialisés sans devoir faire de transfert entre la ram/vram..

avatar fte | 

@redchou

"Il y a quand même un avantage avec la possibilité de travailler sur les données avec le CPU, le GPU ou d’autres circuits spécialisés sans devoir faire de transfert entre la ram/vram.."

Ce n’est pas un avantage. La mémoire généraliste bride drastiquement ce qu’un GPU peut faire. Alors oui, il n’y a pas de copie à faire. Manquerait plus que ça ! Si pour toi un avantage c’est quand ça aurait pu être encore pire mais que ça ne l’est pas, c’est juste pire, okay, oui alors, c’est un avantage. Ça aurait pu être encore pire.

Je ne dis pas que ces GPU ne servent à rien, comprenons-nous ! Déjà, il permettent d’afficher sur un écran.

Mais on a quoi ? Une dizaine de cores CPU et une dizaine de cores GPU qui se partagent le même bus mémoire de 192 bits ? Quand on voit l’effet monstrueux de l’ajout de mémoire cache sur les AMD X3D dont les cores CPU ne sont pourtant pas en compétition avec des cores GPU pour l’accès au bus mémoire, on comprend que le bus mémoire est déjà un goulet d’étranglement, même lorsque la mémoire est overclockée. Ajoute les besoins du GPU sur ce même bus déjà saturé. Ça donne quoi ? Un bridage du GPU et une perte de performance du CPU.

Mais il n’y a pas besoin de copier des bouts de mémoire. Yeh !

avatar Kydix | 

« Et aucun fabricant n'ose vendre un PC à 2 000 € avec 8 Go de RAM, soyons clairs »

Non mais il y a encore plein de fabricant qui propose des pc à plus de 1000 euro avec 8 go de ram et 256go de stockage.

Une configuration qui répond à bien des usages

avatar foxot | 

@Kydix

Je serais curieux de savoir lesquels 🤔
J'ai fait la recherche pc portable sur Amazon avec un critère de prix supérieur à 1000€, et à part les macs et la Surface Go 2 sortie en juin 2022 vendue un peu plus de 1000€ dans une config à 8Go de Ram, je j'en ai trouvé aucun dans les premières pages de résultat.
La fait est qu'un ordinateur à 1000€ ou plus proposant 8Go de RAM en 2023 est une exception (et déjà une anomalie de mon avis), mais au double de ce prix comme Apple fait c'est juste aberrant.
Et peut-être que madame et monsieur tout-le-monde n'ont pas forcément besoin de plus de 8Go, mais je suis convaincu qu'ils n'achètent pas de PC à 1000€ ou plus, ce qui mettent ce prix (à part à avoir de l'argent à jeter par les fenêtre) cherchent en général une machine un minimum robuste et performante, et si ils ont 8Go de ram à ce prix c'est qu'ils ont été mal conseillé, se sont fait avoir par le prix ou l'image de marque et vont pester 3 ans après rame pour un rien.

avatar BeePotato | 

@ foxot : « Je serais curieux de savoir lesquels 🤔 »

HP, par exemple.

Mais comme tu l’as fait remarquer, ce n’est tout de même pas 2000 €.

avatar koko256 | 

J'ai 24Go sur ma carte graphique et 64Go de RAM. Il faut quel Mac pour équivaloir ?

avatar Captain Bumper | 

@koko256 : Bah au moins 88 Go (64+24 Go)...

avatar joneskind | 

@Captain Bumper

Alors si je me souviens bien dans la présentation du M1, Apple a expliqué que pour échanger entre eux le CPU et le GPU devaient copier de l'information entre la RAM et la VRAM, ce qui représentait un coût d'énergie et de performance, et que la mémoire partagée résolvait ce problème.

Du coup je pense pas qu'on puisse ajouter les mémoires comme ça.

Par ailleurs, sur une puce Apple Silicon, si tu as 128Go de mémoire pour le CPU tu as aussi 128Go de mémoire pour le GPU (puisqu'elle est partagée) ce qui change tout notamment pour le machine learning (et charger des textures hyper précises sans broncher dans les jeux videos)

Donc le seul moyen de regarder la configuration de koko256 c'est... de bien séparer les mémoires et leur usage.

avatar Captain Bumper | 

@joneskind

Bah pas vraiment, elle est partagée mais elle est séparée dans son usage. Ce qui est pris pour le GPU n’est pas disponible pour le CPU est vice-versa.

avatar fte | 

@koko256

"J'ai 24Go sur ma carte graphique et 64Go de RAM. Il faut quel Mac pour équivaloir ?"

Il n’y a pas. Aucun Mac ne dispose d’un GPU discret doté de sa propre mémoire graphique sur son propre bus, ni ne supporte les API communes du monde graphique / scientifique / calcul haute performance / ludique.

CONNEXION UTILISATEUR