Commentaires : Windows 10 : plus rapide sur un MacBook Pro ARM virtualisé... que sur une Surface Pro X 2

Si les résultats fournis par les utilitaires de benchmarks ne représentent pas les performances en usage réel, ceux récemment enregistrés avec un MacBook Pro ARM et publiés sur Geekbench ont de quoi surprendre… Surtout comparés aux résultats de la Surface Pro X de dernière génération.

2 « J'aime »

À quand un test de Clubic de ces machines avec SoC M1 ?

3 « J'aime »

Comparer les perfs d’une tablette avec un macbook pro… faut oser tout de même! Mais ça permet un titre putaclick, alors « on » va pas se gêner!

1 « J'aime »

C’est VRAIMENT des machines qui font rêver… Et j’ai commencé avec le commodore PET, donc en terme de rêve, je m’y connais !

1 « J'aime »

Bah tu sais l’iPad pro de 2018 était déja plus rapide que cette Surface pro X…

Le DTK étant basé sur le même SoC:

As developer Steve Troughton-Smith points out, the two-year-old A12Z in the ‌Mac mini‌ outperforms Microsoft’s Arm-based Surface Pro X in Geekbench performance, running x86_64 code in emulation faster than the Surface Pro X can run an Arm version natively.

Et le M1 étant en quelque sorte un « A14X » avec prise en charge du thunderbolt, des technos de virtualisation etc…

Je pense que la comparaison est parfaitement legitime.
Surtout que le partenariat Windows on ARM avec Qualcomm a été annoncé en dec 2016 !

EDIT: et n’oublions pas que ce Windows 10 tourne dans un émulateur pour faire tourner des apps x86 qui elles même sont émulé dans Windows 10 on ARM.

Emuception :exploding_head::exploding_head:

3 « J'aime »

En même temps Surface n’a jamais rimé avec performance. J’en possède une pro au taff, c’est une bouse sans parler du chargeur tout le temps entrain de déconner…

2 « J'aime »

Microsoft a anticipé pas mal de chose avec son .Net 5, mais je pense qu’on va avoir des pc sous ARM dans moins de temps que prévu et que linux a un beau coup à jouer.

2 « J'aime »

Ca fait deja des années qu’on a quelques PC sous ARM, maintenant on en a 3 en plus avec ceux d’Apple.

Sous Linux c’est encore pire, ca fait une eternité

1 « J'aime »

Pareil j’ai une surface pro au boulot (un i7 avec 8 Go de ram quand même), c’est bien pour envoyer des email ou sur aller sur Internet mais dès qu’on commencer à vouloir faire des compilations LaTeX ça prend une éternité, Matlab et Ansys sont tout juste utilisables…

1 « J'aime »

On va mettre une mopette Vespa dans la boite d’un gros Ford F150 et dire que la mopette va plus rapidement qu’une mopette Vespa seule… Test qui veut dire.

Le Surface Pro, ce n’est pas une vulgaire tablette Android à 300€, mais un PC Windows à part entière dont le prix dépasse allègrement les 1000€, donc je ne vois pas ce qu’il y a de scandaleux à comparer avec un Mac de même ordre de prix

Je sais bien, mais cela reste une TABLETTE! Va donc loger la puissance d’un macbook pro dans une tablette aussi fine!

C’est pas le même usage!

Je suis certain que Windows ARM tourne beaucoup plus vite sur un iPad avec la puce A14 sur sur la Surface Pro X ! LOL ! MDR

1 « J'aime »

Va donc loger la puissance d’un macbook pro dans une tablette aussi fine!

En fait ce qu’Apple a fait c’est plutôt loger la puissance de l’iPad dans le macbook Pro…

1 « J'aime »

T’as jamais demonté un PC portable alors.
La carte mère c’est très petit et ça rentre sans problème dans une tablette. Juste que ça consomme trop. ARM c’est mieux

La raison du pourquoi n’est pas à chercher dans le code ou dans un meilleur émulateur (recompilateur serait plus correct, c’est un JIT, comme les machines Java) ou dans un CPU meilleur à exécuter du code ARM, mais dans un mode spécial ajouté au CPU.

Ce genre de pseudo-code fonctionne sur CPU x86 mais pas sur ARM :

Thread1:
WriteSomeData(sharedBuffer);
newDataReady = true;

Thread2:
if (newDataReady) {
  ReadData(sharedBuffer);
  newDataReady = false;
}

Parce que sur ARM, le CPU peut réorganiser les écritures mémoire, et g_newDataReady peut être mis à jour avant sharedBuffer.
Sur ARM il faut ajouter des barrières mémoires qui forcent le CPU à finir les écritures précédentes avant de continuer (ce qui ralentit le CPU forcément) :

Thread1:
WriteSomeData(sharedBuffer);
**BarrièreEcritureMémoireSpécifiqueArm**
newDataReady = true;

Thread2:
if (newDataReady {
  ReadData(sharedBuffer);
  **BarrièreLectureMémoireSpécifiqueArm**
  newDataReady = false;
}

Les émulateurs x86 sur ARM ajoutent ce genre de barrière mémoire automatiquement… partout, pour ne pas risquer d’avoir de bugs. Ce qui ralentit fortement leur exécution. Ces barrières mémoire sont comme une vidange de toutes les accès écriture (ou lecture ou les deux, suivant la barrière utilisée) du contrôleur mémoire du CPU.

Ce qu’a fait Apple à la place? Le CPU a un mode spécial d’exécution empêchant le changement d’ordre des accès mémoire, comme sur x86. Ça le ralentit un peu, mais plus besoin de ces barrières mémoire, et l’émulation elle est alors plus simple et rapide.

De même, Apple a rajouté quelques instructions pour accélérer l’exécution de Javascript sur les pages web.

Plus d’info :

1 « J'aime »

Étonnant que chez Clubic on ai pas encore réussi à mettre la main dessus…

1 « J'aime »

Oui je suis tombé sur ce thread il y a peu.

De même, Apple a rajouté quelques instructions pour accélérer l’exécution de Javascript sur les pages web.

Cela fait des années qu’ils font ça sur les puces Ax et maintenant avec le M1. Pourquoi les autres n’en font pas autant ?

1 « J'aime »

Oui on peut le comparer à une tablette ! Car le M1 pourrait être inséré dans une tablette grâce à son refroidissement passif (peut être qu’il sera dans les futures iPad Pro ?)

Ca c’est un commentaire mesuré ? Tu te permets de me dire que je ne suis pas soigneux et en plus tu as l’air de savoir mieux que moi dans quoi je bosse. On va te laisser te rendormir.