IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation d'OS Assembleur Discussion :

Les différentes architectures processeurs


Sujet :

Programmation d'OS Assembleur

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 30
    Points
    30
    Par défaut Les différentes architectures processeurs
    Bonjour à tous,

    J'aimerai connaitre les différences entre les principales architectures comme x86, x86_64, ia64, ia32, alpha, powerpc... Parmis les architectures processeur existantes, lesquelles sont compatibles entre elles ou se ressemble ?
    Quelles sont les modifications à faire sur le noyau d'un os pour être compatible avec une architecture précise?

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Pour faire simple, dans les familles différentes (sparc, x86, m68k), le langage machine que le processeur comprend est différent. Il y a souvent un langage assembleur associé à un type de processeurs.

    Chaque famille peut être catégorisé dans les 2 types de processeurs : RISC et CISC.

    La différence entre un x86 et un x86_64, c'est la taille des données que le processeur peut manipuler par défaut (32 bits ou 64 bits).


    Quelles sont les modifications à faire sur le noyau d'un os pour être compatible avec une architecture précise?
    Ca dépend. Mais les parties en assembleur pour les familles différentes doivent être réécrites complètement.

    En effet, le langage Assembleur est différent. Il n'y a pas forcement les mêmes instructions (il y a moins d'instruction sur les RISC (comme son nom l'indique !). Il n'y a pas forcement le même nombre de registre (8 registres d'adresses, 8 registres de données sur un m68k, registres ebx, etc. sur les x86)
    Je ne répondrai à aucune question technique en privé

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 30
    Points
    30
    Par défaut
    bon, peux-tu développer sur les 2 grandes familles RISC et CISC? Comment fait-on pour savoir si une architecture est RISC ou CISC ? x86, c'est RISC ou CISC?
    (merci quand même pour ta réponse )

  4. #4
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    L'article de Wikipedia en anglais me semble pas mal (http://en.wikipedia.org/wiki/RISC). Celui en francais me plait moins.

    A noter que l'acronyme anglais joue un peu de l'ambiguite presente dans cette langue entre ordinateur a jeu d'instructions reduit et ordinateur a jeu d'instructions reduites, et la seconde traduction des termes de l'acronyme est plus proche de la philosophie RISC que la premiere -- qui pourtant est la plus employee -- meme si les deux aspects etaient presents au debut (l'aspect reduction du nombre d'instruction l'est beaucoup moins, celui de reduction de la complexite l'est encore).

    A noter aussi -- quelque chose plus present dans l'article en francais que dans l'article anglais -- que vers la fin des annees 80 au debut des annees 90 RISC est devenu un buzzword synonyme de bon et tous les processeurs se le sont vu ainsi qualifie. Car c'est un fait que des implementations performantes etaient alors plus faciles pour un RISC que pour un CISC.

    Les progres en microelectronique -- augmentation de la densite d'integration en particulier -- d'une part, et en architectecture des ordinateurs -- processeur superscalaire, a execution dans le desordre et speculative, renommage de registres, etc. -- font que la nature du jeu d'instruction a -- pour les implementations haut de game -- plus tellement d'importance de nos jours: la partie qui change effectivement est minime. Du moins tant que le jeu d'instruction n'a pas de trop mauvaises caracteristiques. Et malgre ses aspects baroques, celui du x86 (au contraire par exemple de ceux du VAX et du PDP-10 -- processeurs CISC qui ont a priori un plus beau jeu d'instructions que le x86) est dans cette classe. La taille d'Intel et l'inertie et les avantages dus a l'importance de la base installee ont permis au x86 de survivre a la periode ou ses caracteristiques CISC etaient un desavantage certain.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 145
    Points : 170
    Points
    170
    Par défaut
    Je suis d'accord, l'article en anglais est très bien.

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    Citation Envoyé par mmaximum Voir le message
    J'aimerai connaitre les différences entre les principales architectures comme x86, x86_64, ia64, ia32, alpha, powerpc... Parmis les architectures processeur existantes, lesquelles sont compatibles entre elles ou se ressemble ?
    Globalement, il s'agit de gammes de processeurs différents, pour la plupart conçus et produits par des constructeurs différents.

    C'est difficile de donner une réponse claire à cette question sans rentrer dans les détails de l'implémentation de chacune d'elles. C'est un peu comme demander quelles sont les différences entre les différents modèles de voitures sur le marché (c'est fou comme l'automobile vient au secours de l'informatique dans les forums) : globalement, le principe est le même, ensuite il y a des grandes classes de véhicules (berlines, camions, etc.), et enfin, chaque constructeur propose son propre produit, conçu par lui seul. Et là, même si chaque pièce sert à la même chose d'un modèle à l'autre, elle reste quand même propre à chaque constructeur. C'est flagrant quand on veut changer ses essuie-glaces, par exemple :-) 'faut lire le petit panneau pour savoir lesquels s'adaptent à sa voiture.

    Concrètement, x86 est en fait la lignée des processeurs dérivés du 8086. En électronique numérique, il est fréquent que les chiffres de gauche d'un numéro représentent la famille de circuits (ou le fondeur, 80 pour intel, donc), et ceux de droite le type du circuit. C'est vrai pour les circuits logiques (les familles 74xx et 40xx, en TTL et CMOS, respectivement), et pour d'autres produits. Quand un circuit de la famille évolue, son numéro de version est alors intercalé au milieu : 8086, 80186, 80286, etc. On a alors noté la famille « 80x86 ». Mais intel avait fait notamment une autre série de processeurs populaires, le 8051.

    C'était vrai chez Motorola également, qui avait fait le 6800, le 6805 (dont est dérivé le 68705, qui a connu son heure de gloire avec les décodeurs pirate), le 6809 (génial pour apprendre, inclus dans les Thomson, notamment), dont furent dérivés les 68A09 et 68B09 (à 1,5 et 2 Mhz) ainsi que toute la famille compatible qui allait autour : 6821 pour le PIA (2x8 bit d'entrée/sortie), 6850 (ACIA UART), etc. Puis les 68000, ou 68K, plébiscités par les codeurs, à l'époque, et qui ont équipé presque toutes les machines de leur génération : les Mac, les Atari ST, les Amiga ...

    Par la suite, le marché des PC explosant, ce produit technologique est devenu un enjeu commercial. On a commencé à les baptiser avec des noms propres : i386 i486 (i pour intel), et à partir de 5, c'est devenu « Pentium ».

    x86 est donc la famille des dérivés du 80x86 : ça remonte jusqu'au Core 2 Quad aujourd'hui, mais le jeu d'instruction du premier d'entre eux est toujours compatible. IA32, c'est l'Intel Architecture 32 bits, soit l'architecture des processeurs intel x86 32 bits, donc à partir du 386, les 8086, 80186 et 80286 étaient en 16 bits (en.wikipédia est d'accord, mais la version française place ça à partir du Pentium).

    ia64, c'est Itanium. C'est l'architecture 64 bits d'intel. C'était également une tentative louable de tout reprendre à zéro. Elle était très séduisante mais incompatible avec ia32. Du coup, les programmes écrits jusque là pour PC ne peuvent fonctionner dessus. Donc, ça n'a jamais pu prendre dans le grand public.

    x86_64, en réponse, est un sur-ensemble en 64 bits du jeu d'instructions existant de x86. Ça permet de faire des machines capables de 64 bits et compatibles 32. À noter que c'est initialement une initiative d'AMD.

    Les autres, notamment Sparc, correspondent à d'autres modèles de processeurs qui n'ont rien à voir avec l'Intel. Sparc est très utilisé dans les machines Sun, par exemple.


    À noter, enfin, que l'architecture d'un processeur ne fait pas tout : un même processeur peut être embarqué dans des ordinateurs complètement différents. En particulier, un intel x86 ne fera pas forcément un PC.

    Quelles sont les modifications à faire sur le noyau d'un os pour être compatible avec une architecture précise? Merci d'avance
    En général, les concepteurs de noyau écrivent celui-ci en C et laissent par conséquent le compilateur faire tout le travail. On trouve donc un répertoire qui contient les quelques morceaux de code qui doivent directement être écrits en assembleur, et le reste en C dans le tronc commun.

    Si tu télécharges les sources de Linux, par exemple, ce sera visible.

Discussions similaires

  1. Les différentes approches de l'architecture de médiation
    Par hnouna2007 dans le forum Architecture
    Réponses: 0
    Dernier message: 04/07/2009, 13h42
  2. Récupérer les différentes températures de mon PC
    Par bronco dans le forum Assembleur
    Réponses: 2
    Dernier message: 29/07/2005, 09h35
  3. Réponses: 3
    Dernier message: 24/05/2005, 12h35
  4. [Débutant] Les opcodes sur les différents processeurs
    Par loverdose dans le forum Assembleur
    Réponses: 11
    Dernier message: 03/02/2005, 13h32
  5. faire un group by sur les différents niveau de code
    Par speed034 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/10/2004, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo