Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/07/2023, à 13:40

Valérie_z

[RESOLU] Assembleur avec Ryzen et Intel - virtualisation Windows

Bonjour à tous,

Je vais devoir réaliser des exercices en langage d'assemblage dans le cadre d'un formation sur les architectures de type x86. Techniquement, je serai amené à travailler sur 2 PC sous Ubuntu 22.04 LTS tous deux dotés de 2 processeurs différents. en principe de la même famille, donc pas de souci théorique pour passer de l'un à l'autre, mais je voulais m'en assurer, d'où ces 2 questions :

- l'architecture d'un i9-12900K de chez Intel et celle d'un Ryzen 9 de chez AMD sont-elles parfaitement équivalentes en tout point, de sorte que les instructions d'un langage d'assemblage s’exécutent de façon identique et produisent le même résultat ?
- Les cours font usage d'outils Windows (MASM 32 pour ne pas le nommer), le plus sage serait donc d'utiliser une VM (j'en ai une sous Win 11) sous Virtualbox, que je pourrais installer indifféremment sur l'une ou l'autre de ces machines.
Du coup, même question sur ces 2 architectures, en passant par l’intermédiaire de la virtualisation d'un Win 11 ? Est-ce que l'intermédiaire d'une VM Windows a un impact sur les processeurs ou l'inverse ? Dans le cas où cette virtualisation peut faire obstacle à l'interchangeabilité de ces 2 machines, l'usage de Wine pour l'installation de MASM produirait-il de meilleurs résultats ?

Merci à vous !

Dernière modification par Valérie_z (Le 01/07/2023, à 22:31)


PC1 : 12e Gen Intel® Core™ i9-12900 x 24 CPU 5.10 GHz - 32.0 Gio de RAM - Sous Ubuntu 22.04.1 LTS (64 bits) - Noyau : 6.2.0-26-generic
PC2 :  Intel® Core™2 CPU 6700 @ 2.66GHz - 3,8 Gio de RAM - Sous Ubuntu 18.04 LTS (64 bits) - Noyau : 4.15.0-197-generic
PC3 : AMD® Ryzen 9 6900HX - 8 coeurs x 4.90 GHz - 32 GO de RAM DDR5 - Sous Ubuntu 22.04.3 LTS (64 bits) - Noyau : 6.4.0-060400-generic

Hors ligne

#2 Le 01/07/2023, à 13:48

Vobul

Re : [RESOLU] Assembleur avec Ryzen et Intel - virtualisation Windows

Valérie_z a écrit :

- l'architecture d'un i9-12900K de chez Intel et celle d'un Ryzen 9 de chez AMD sont-elles parfaitement équivalentes en tout point, de sorte que les instructions d'un langage d'assemblage s’exécutent de façon identique et produisent le même résultat ?
- Les cours font usage d'outils Windows (MASM 32 pour ne pas le nommer), le plus sage serait donc d'utiliser une VM (j'en ai une sous Win 11) sous Virtualbox, que je pourrais installer indifféremment sur l'une ou l'autre de ces machines.

Non, l'architecture d'un processeur Intel i9-12900K et celle d'un processeur AMD Ryzen 9 ne sont pas parfaitement équivalentes en tout point. Ils sont basés sur des architectures différentes et utilisent des conceptions internes distinctes.

L'i9-12900K est basé sur l'architecture Alder Lake d'Intel, qui utilise une combinaison de cœurs de performance "Golden Cove" et de cœurs d'efficacité "Gracemont". Cette approche hybride vise à améliorer les performances en fournissant des cœurs spécifiquement conçus pour des tâches légères et intensives. Le processeur prend également en charge la technologie Hyper-Threading d'Intel, qui permet à chaque cœur physique d'exécuter deux threads simultanément.

D'autre part, le processeur Ryzen 9 d'AMD est basé sur l'architecture Zen, qui a été introduite avec les processeurs Ryzen de première génération. Les processeurs Ryzen utilisent un concept appelé "Infinity Fabric" pour la communication entre les différents blocs du processeur. Ils utilisent également la technologie de Simultaneous Multi-Threading (SMT) d'AMD, qui est similaire à Hyper-Threading et permet l'exécution de plusieurs threads sur chaque cœur physique.

En termes d'instructions et de langage d'assemblage, les processeurs Intel et AMD utilisent des jeux d'instructions différents. Bien qu'ils partagent certains jeux d'instructions de base, ils ont également des instructions spécifiques à leur architecture respective. Cela signifie que les instructions d'un langage d'assemblage peuvent différer entre les deux processeurs et qu'il peut y avoir des variations dans la façon dont les instructions sont exécutées et les résultats qu'elles produisent.

Il convient également de noter que les performances des processeurs dépendent de nombreux autres facteurs, tels que la fréquence d'horloge, le cache, la gestion de la mémoire, l'optimisation logicielle, etc. Donc, même si les architectures étaient parfaitement équivalentes, il pourrait y avoir des différences de performances en fonction de ces autres facteurs.

Valérie_z a écrit :

Du coup, même question sur ces 2 architectures, en passant par l’intermédiaire de la virtualisation d'un Win 11 ? Est-ce que l'intermédiaire d'une VM Windows a un impact sur les processeurs ou l'inverse ? Dans le cas où cette virtualisation peut faire obstacle à l'interchangeabilité de ces 2 machines, l'usage de Wine pour l'installation de MASM produirait-il de meilleurs résultats ?

Lorsque vous utilisez la virtualisation d'un système d'exploitation, comme Windows 11, sur des processeurs Intel i9-12900K ou AMD Ryzen 9, il peut y avoir des différences de performance et de fonctionnalités en raison des caractéristiques propres à chaque architecture.

La virtualisation permet d'exécuter un système d'exploitation invité, tel que Windows 11, sur une machine hôte qui peut avoir une architecture matérielle différente. Les processeurs modernes intègrent des fonctionnalités de virtualisation matérielle, telles que Intel VT-x pour les processeurs Intel et AMD-V pour les processeurs AMD, qui facilitent l'exécution des machines virtuelles (VM).

Cependant, bien que la virtualisation soit conçue pour fournir un environnement isolé et indépendant pour les systèmes d'exploitation invités, il peut y avoir des différences de performances entre les processeurs Intel et AMD lorsqu'ils sont utilisés pour la virtualisation. Ces différences peuvent être liées à la manière dont les instructions sont exécutées, la gestion de la mémoire, l'accès aux ressources matérielles, etc.

En ce qui concerne l'utilisation de Wine pour exécuter MASM (Microsoft Macro Assembler) sur un système d'exploitation hôte, il est important de noter que Wine est une couche de compatibilité logicielle qui permet d'exécuter des applications Windows sur des systèmes d'exploitation basés sur Unix, tels que Linux ou macOS. Wine n'est pas une machine virtuelle et n'émule pas les instructions du processeur.

L'utilisation de Wine pour exécuter MASM dépendra de la compatibilité et de la prise en charge de MASM spécifiquement par Wine. Bien que Wine puisse être capable d'exécuter de nombreuses applications Windows, il peut y avoir des cas où des fonctionnalités spécifiques ou des instructions d'assemblage ne sont pas correctement prises en charge. Il est recommandé de consulter la documentation de Wine et les rapports de compatibilité pour vérifier si MASM fonctionne correctement avec Wine.

En résumé, lors de l'utilisation de la virtualisation ou de Wine, il peut y avoir des différences de performances et de fonctionnalités entre les processeurs Intel i9-12900K et AMD Ryzen 9 en raison de leurs architectures distinctes. La virtualisation peut introduire des variations supplémentaires en fonction de la manière dont elle est implémentée. Pour l'exécution d'applications spécifiques telles que MASM, il est conseillé de vérifier la compatibilité et les performances avec les outils et environnements spécifiques que vous envisagez d'utiliser.


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#3 Le 01/07/2023, à 16:06

Valérie_z

Re : [RESOLU] Assembleur avec Ryzen et Intel - virtualisation Windows

Merci @Vobul pour ce retour très détaillé. Il importe donc que je me renseigne sur le périmètre du jeu d'instructions étudié. S'il est standard, et se limite aux bases, l'interchangeabilité entre les 2 machines restera possible à quelques différences de performances près, sans que cela nuise à l'étude. Si les cours s'aventurent à l'étude d'instructions spécifiques à l'un ou à l'autre, ce sera plus compliqué de basculer.

En tout cas, on peut déjà partir du principe que les architectures I9 et Ryzen 9 (ie les noms, types et tailles de registres ...) répondent à un standard unique ?

Bonne journée


PC1 : 12e Gen Intel® Core™ i9-12900 x 24 CPU 5.10 GHz - 32.0 Gio de RAM - Sous Ubuntu 22.04.1 LTS (64 bits) - Noyau : 6.2.0-26-generic
PC2 :  Intel® Core™2 CPU 6700 @ 2.66GHz - 3,8 Gio de RAM - Sous Ubuntu 18.04 LTS (64 bits) - Noyau : 4.15.0-197-generic
PC3 : AMD® Ryzen 9 6900HX - 8 coeurs x 4.90 GHz - 32 GO de RAM DDR5 - Sous Ubuntu 22.04.3 LTS (64 bits) - Noyau : 6.4.0-060400-generic

Hors ligne

#4 Le 01/07/2023, à 16:16

Vobul

Re : [RESOLU] Assembleur avec Ryzen et Intel - virtualisation Windows

Valérie_z a écrit :

En tout cas, on peut déjà partir du principe que les architectures I9 et Ryzen 9 (ie les noms, types et tailles de registres ...) répondent à un standard unique ?

Oui, les architectures des processeurs Intel Core i9 et AMD Ryzen 9 suivent un ensemble de standards communs pour les noms, types et tailles des registres. Ces standards sont généralement définis par les architectures de jeux d'instructions utilisées par les processeurs.

Par exemple, les processeurs Intel Core i9 et AMD Ryzen 9 sont tous deux basés sur des architectures x86, qui est l'une des architectures de jeux d'instructions les plus répandues pour les processeurs de bureau et de serveur. L'architecture x86 définit un ensemble de registres généraux, tels que les registres EAX, EBX, ECX, EDX, ainsi que des registres spéciaux comme le registre d'instruction (EIP/RIP), le registre de pile (ESP/RSP), etc.

Cependant, il est important de noter qu'il peut y avoir des différences spécifiques dans la façon dont ces registres sont utilisés et gérés entre les processeurs Intel Core i9 et AMD Ryzen 9 en raison des différences d'implémentation et des fonctionnalités spécifiques à chaque architecture. Par conséquent, bien que les registres partagent des noms et des tailles similaires, il peut y avoir des variations dans leur fonctionnement interne et leur comportement.

De plus, les processeurs modernes offrent souvent des extensions d'architecture spécifiques, telles que les jeux d'instructions SIMD (SSE, AVX) et les jeux d'instructions spécifiques au chiffrement (AES-NI, AVX-512, etc.). Ces extensions peuvent varier entre les processeurs Intel et AMD, ce qui peut également influencer les capacités et les performances des registres dans certains cas d'utilisation spécifiques.

En conclusion, bien que les architectures des processeurs Intel Core i9 et AMD Ryzen 9 suivent des standards communs pour les noms, types et tailles des registres en se basant sur l'architecture x86, il peut y avoir des différences spécifiques dans leur implémentation et leur comportement en raison des caractéristiques propres à chaque architecture.


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#5 Le 01/07/2023, à 16:23

iznobe

Re : [RESOLU] Assembleur avec Ryzen et Intel - virtualisation Windows

En tout cas, on peut déjà partir du principe que les architectures I9 et Ryzen 9 (ie les noms, types et tailles de registres ...) répondent à un standard unique ?

Bonjour , cela m' etonnerait fortement , de par leur difference de specification et de conception comme l' a tres bien expliqué @vobul dans son message précédent .

Vobul a écrit :

L'i9-12900K est basé sur l'architecture Alder Lake d'Intel, qui utilise une combinaison de cœurs de performance "Golden Cove" et de cœurs d'efficacité "Gracemont". Cette approche hybride vise à améliorer les performances en fournissant des cœurs spécifiquement conçus pour des tâches légères et intensives.

je ne vois pas comment des instructions pourraient être gérées de manière similaire entre l ' architecture spécifique intel comportant 2 types de coeurs totalement différents , assignés a des taches distinctes , alors que le proc ryzen quant a lui , est encore dans un type d ' architecture " linéaire " ( tous les coeurs sont identiques ) . Cela dit je ne suis pas spécialiste en la matière , Mais il me semble que les pilotes ( donc du code en assembleur ? )  sont differents , ainsi que les sockets et les cartes meres qui supportent ces proc .

Si on pouvait gerer ces processeurs de manieres similaires , je pense que ca se saurait ( et il n' y aurait pas des pilotes distinct pour chaque type de proc ) .

Dernière modification par iznobe (Le 01/07/2023, à 16:26)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

En ligne

#6 Le 01/07/2023, à 16:42

Nuliel

Re : [RESOLU] Assembleur avec Ryzen et Intel - virtualisation Windows

Bonjour,
Merci Vobul chatGPT
Le jeu d'instruction est le même: x86-64, mais il y a effectivement des trucs en plus côté intel et côté amd, mais c'est des fonctionnalités avancées. Donc les noms des registres principaux sont les mêmes (rax-rdx, rip, rbp, rsp, xmm, ...). Je doute franchement que tu ailles utiliser ces ajouts que ce soit côté intel ou amd.
Wine n'est pas adapté pour ça.
Une vm win11 devrait faire l'affaire à mon avis si tu n'utilises pas les fonctionnalités très avancées de ton processeur, ce qui ne devrait pas être le cas si tu débutes en assembleur.

Hors ligne

#7 Le 01/07/2023, à 17:20

Vobul

Re : [RESOLU] Assembleur avec Ryzen et Intel - virtualisation Windows

Mais à quel moment les gens qui font des cours en assembleur se disent "prenont un truc sous windows parce que windows c'est vraiment trop cool !!!" ???

Valérie, demande à tes profs si tu peux pas suivre le cours sans MASM. Il n'y a vraiment aucun soucis pour faire de l'assembleur sous gnu/linux. C'est même bien plus pratique !!


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#8 Le 01/07/2023, à 17:22

Valérie_z

Re : [RESOLU] Assembleur avec Ryzen et Intel - virtualisation Windows

Parfait merci à vous !
Oui, il s'agit d'une initiation donc je peux supposer que le périmètre des instructions étudiés se retrouve sur les 2 architectures, sans prendre trop de risques.
Je vais tout de même m'assurer auprès des profs qu'aucun usage avancé ne soit prévu :-p


PC1 : 12e Gen Intel® Core™ i9-12900 x 24 CPU 5.10 GHz - 32.0 Gio de RAM - Sous Ubuntu 22.04.1 LTS (64 bits) - Noyau : 6.2.0-26-generic
PC2 :  Intel® Core™2 CPU 6700 @ 2.66GHz - 3,8 Gio de RAM - Sous Ubuntu 18.04 LTS (64 bits) - Noyau : 4.15.0-197-generic
PC3 : AMD® Ryzen 9 6900HX - 8 coeurs x 4.90 GHz - 32 GO de RAM DDR5 - Sous Ubuntu 22.04.3 LTS (64 bits) - Noyau : 6.4.0-060400-generic

Hors ligne

#9 Le 01/07/2023, à 17:27

Valérie_z

Re : [RESOLU] Assembleur avec Ryzen et Intel - virtualisation Windows

Pour répondre à ta question @Vobul si ça ne dépendait que de moi, j'utiliserais évidemment les outils Linux. Mais les cours sont conçus avec MASM32, je n'y peux rien, d'où la VM win 11 pour suivre plus efficacement les cours. Charge à moi ensuite de trouver des repères identiques avec les outils appropriés (que je suis en train de chercher d'ailleurs.... Nasm par exemple ?)


PC1 : 12e Gen Intel® Core™ i9-12900 x 24 CPU 5.10 GHz - 32.0 Gio de RAM - Sous Ubuntu 22.04.1 LTS (64 bits) - Noyau : 6.2.0-26-generic
PC2 :  Intel® Core™2 CPU 6700 @ 2.66GHz - 3,8 Gio de RAM - Sous Ubuntu 18.04 LTS (64 bits) - Noyau : 4.15.0-197-generic
PC3 : AMD® Ryzen 9 6900HX - 8 coeurs x 4.90 GHz - 32 GO de RAM DDR5 - Sous Ubuntu 22.04.3 LTS (64 bits) - Noyau : 6.4.0-060400-generic

Hors ligne

#10 Le 01/07/2023, à 17:46

Vobul

Re : [RESOLU] Assembleur avec Ryzen et Intel - virtualisation Windows

Sérieux j'ai jamais compris l'intérêt de cours d'informatique fait par des gens qui n'ont pas mis à jour leurs connaissances depuis 15 ans et qui en savent à peine plus que l'élève.

1. Tu regardes une vidéo de 10 minutes sur youtube en suivant ce qui se fait de ton côté : https://www.youtube.com/watch?v=IGo2ldg2Mp0
2. Ça y est t'as fini le cours.
3. Tu te fixes comme objectif de faire un programme un poil plus avancé et tu passes deux trois jours à le peaufiner.
4. Tu n'as plus besoin de suivre le cours.


Mais bon c'est juste mon avis perso, il y a plein de gens qui ont besoin de cours et d'enseignants et je le comprends tout à fait. Sauf qu'à l'heure ou des centaines de tutos sont disponibles sur tous les sujets possibles, que t'as stack overflow et chatgpt, je vois pas bien ce que peut apporter "Jean-Claude, 58 ans, enseignant en lycée technique depuis 35 ans et qui a fait ses cours avec MASM donc tu comprends il faut que les élèves ils utilisent ça parce que sinon c'est pas pratique tavuuuuu".

Désolé je suis parti un peu loin mais bon, c'est un forum après tout, on s'exprime.


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#11 Le 01/07/2023, à 18:20

Nuliel

Re : [RESOLU] Assembleur avec Ryzen et Intel - virtualisation Windows

Vobul a écrit :

Mais à quel moment les gens qui font des cours en assembleur se disent "prenont un truc sous windows parce que windows c'est vraiment trop cool !!!" ???

Je me suis fait la même réflexion. Après il y a quelques différences entre linux et windows, notamment la convention pour passer les paramètres à une fonction en assembleur. Il y a peut-être une raison.
Perso j'utilise gcc quand j'ai besoin de compiler de l'assembleur sous linux (en réalité c'est as l'outil qui assemble, car gcc est une collection d'outils). Sinon nasm le fait aussi.

Sinon un cours d'assembleur c'est plus long que 10 min, il y a pas mal de choses à dire quand même (représentation des entiers, flottants, ... les instructions de base, le fonctionnement de la pile, ...).

Au passage tu noteras le MASM 32, pour du 32 bits j'imagine...

Dernière modification par Nuliel (Le 01/07/2023, à 18:29)

Hors ligne

#12 Le 01/07/2023, à 20:04

Valérie_z

Re : [RESOLU] Assembleur avec Ryzen et Intel - virtualisation Windows

Je confirme. Pour une initiation, on se limite au 32 bits. et je partage globalement vos points de vue. Simplement il y a un impératif de pragmatisme si je ne veux pas ajouter à la difficulté de l'apprentissage sur le fond, celui de la forme. Le cours prévu en école est prévu sur l'année entière, je suppose que cela ira un peu plus loin que MOV eax 1, :-) mais concernant les outils Linux la vidéo de  @Vobul m'a été très utile. J'ai d’ailleurs installé Nasm, et j'ai pu utiliser ld et gdb qui sont sans doute venus avec l'installation de Nasm (à moins que ce soit présent nativement en 22.04...)


PC1 : 12e Gen Intel® Core™ i9-12900 x 24 CPU 5.10 GHz - 32.0 Gio de RAM - Sous Ubuntu 22.04.1 LTS (64 bits) - Noyau : 6.2.0-26-generic
PC2 :  Intel® Core™2 CPU 6700 @ 2.66GHz - 3,8 Gio de RAM - Sous Ubuntu 18.04 LTS (64 bits) - Noyau : 4.15.0-197-generic
PC3 : AMD® Ryzen 9 6900HX - 8 coeurs x 4.90 GHz - 32 GO de RAM DDR5 - Sous Ubuntu 22.04.3 LTS (64 bits) - Noyau : 6.4.0-060400-generic

Hors ligne

#13 Le 02/07/2023, à 12:06

kholo

Re : [RESOLU] Assembleur avec Ryzen et Intel - virtualisation Windows

salut,
j'ai eu un peu la même réflexion que toi pour une formation de tech inf et une autre en python... (entre autre)
vous prenez Windows, vous prenez tel outil... pour la veille informationnelle tel outil,... pour le réseau tels autres outils,...
il m'a fallut m'adapter bien que je maîtrise certains paradigmes voire m'expliquer par exemple que je fais de la veille informationnelle depuis plus de 30 ans et que je ne vois pas, pour moi, le besoin d'utiliser un outil qui finira par être obsolète quand mes façons de faire résistent au temps depuis des décennies.
tu as aussi "qui peut le plus, peut le moins" et tu utilises les deux environnements en multiboot (au moins au début le temps de voir les différences et d'oublier jusqu'à l'existence de Windows al fine ! lol )
NB : à ta signature, toujours en 18.04 sur le Core 2 !? wink

Hors ligne

#14 Le 20/07/2023, à 23:09

Valérie_z

Re : [RESOLU] Assembleur avec Ryzen et Intel - virtualisation Windows

Salut @kholo

oui c'est un peu ça, ce que tu décris, et pour ce qui est du double environnement, perso je ne m'embête pas avec un double boot, je virtualise Windows pour n'ouvrir cette VM que lorsque j'en aurai besoin en cours.
Bon courage pour tes formations

PS : oui toujours 18.04 pour le PC 2, pas le choix, si j'upgrade, la carte graphique ne suit plus; on a tout essayé avec @nany, trop vieux, à moins de tout changer.... donc pour l'instant je laisse. Mais bientôt je vais ajouter mon PC3 Ryzen 9 sous 22.04 également.


PC1 : 12e Gen Intel® Core™ i9-12900 x 24 CPU 5.10 GHz - 32.0 Gio de RAM - Sous Ubuntu 22.04.1 LTS (64 bits) - Noyau : 6.2.0-26-generic
PC2 :  Intel® Core™2 CPU 6700 @ 2.66GHz - 3,8 Gio de RAM - Sous Ubuntu 18.04 LTS (64 bits) - Noyau : 4.15.0-197-generic
PC3 : AMD® Ryzen 9 6900HX - 8 coeurs x 4.90 GHz - 32 GO de RAM DDR5 - Sous Ubuntu 22.04.3 LTS (64 bits) - Noyau : 6.4.0-060400-generic

Hors ligne