Avec macOS Sequoia, Apple a ajouté une fonction à Rosetta 2, comme le note Longhorn sur X. En effet, l'émulateur d'Apple prend en charge les instructions x86 AVX2 et c'est une nouveauté importante pour les joueurs.
Nous n'allons pas vous réexpliquer ce qu'est une extension d'un jeu d'instructions, notre dossier sur le SME et le SVE est là pour ça, mais voici un résumé rapide. L'AVX2 est une extension du x86-64 lancée par Intel en 2013, avec les processeurs de la famille Haswell (Core de 4e génération). Les instructions permettent d'accélérer les traitements sur les vecteurs. L'idée est de placer plusieurs données codées sur 32 bits (par exemple) dans un vecteur de 256 bits, et d'effectuer la même manipulation sur toutes les valeurs en une seule instruction, avec une accélération importante à la clé.
Pour le moment, Rosetta 2 ne prend pas en charge l'AVX2, ce qui amène deux possibilités. La première, courante avec les applications macOS, est simple : Rosetta 2 va exécuter une variante de l'application prévue pour les CPU qui ne gèrent pas l'AVX2. Les binaires universels d'Apple le permettent : ils peuvent contenir une version x86-64 classique et une version x86-64 optimisée, x86-64h1. Dans la majorité des cas, Rosetta 2 lancera donc le programme… mais dans une version qui n'est pas forcément optimisée.
Le second cas est rare sous macOS mais courant dans les jeux sous Windows : la prise en charge de l'AVX2 est la seule voie possible. Actuellement, les programmes compilés uniquement pour les puces compatibles AVX2 ne fonctionnent donc pas avec Rosetta 2. Ce point va changer sous macOS Sequoia et les joueurs vont en profiter : de plus en plus de jeux Windows imposent la présence de l'AVX2. Il devrait donc être possible de lancer des titres Windows plus facilement avec le Game Porting Toolkit, et probablement avec de meilleures performances.
Mac Gaming : le Game Porting Toolkit, un outil pour développeurs qui profite aux joueurs
Apple a peut-être même ajouté cette fonction uniquement pour cet usage précis. Longhorn indique dans un autre message que le noyau de la première bêta de macOS Sequoia n'est pas encore adapté à cette nouveauté de Rosetta 2.
La dernière inconnue est évidemment la façon dont Rosetta 2 va émuler l'AVX2. Sur les puces déjà disponibles (M1 à M3), Apple va probablement simplement convertir le code AVX2 en code ARM classique, mais sur les futurs Mac équipés d'une puce M4, il sera peut-être possible de passer directement par les instructions SVE, une sorte d'équivalent ARM de l'AVX, avec un possible gros gain de performances à la clé.
L'Apple M4 est plus qu'une mise à jour mineure, grâce aux instructions SME et SVE
-
Le
h
est probablement là pour Haswell. ↩︎