Il giorno sab, 03/06/2006 alle 00.54 +0200, Marc Mongenet ha scritto: > >Non, IA64 n'est pas une architecture mais un jeu d'instruction ! > > Ben ce mot 'architecture' est utilisé un peu à toutes les sauces. > Dans le cas le plus général, on parle d'architecture RISC, CISC, > VLIW, etc. > > Après on peut utiliser 'architecture' plus ou moins dans le sens > ou l'on écrit que Debian ou Linux existent sur les architectures > i386, amd64, powerpc, ppc64, sparc, alpha, hppa, ia64, etc. > Dans ce cas, 'architecture' et 'jeu d'instructions' sont effectivement > assez similaires. C'est le sens que j'utilise d'habitude. Intel aussi > il semble, car "ia64" signifie "Intel Architecture 64". > > Il me semble que ce sens correspond plus ou moins au sens du > fameux bouquin "Computer Architecture, a Quantitative Approach". > On y lit "In the past, the term 'computer architecture' only referred > to instruction set design." Puis plus bas "In this book the word > 'architecture' is intended to cover all the aspects of computer > design, instruction set architecture, organization, and hardware." > > Mouais, c'est assez flou, ça m'avance pas beaucoup. :) > > Dans les sources de Linux, il me semble qu'ils ont la notion > d'architecture (répertoire arch/) avec m68k, mips, etc. et > de sous-architecture pour m68k/amiga, m68k/sun3, m68k/atari. > Mais si je cherche sub-architecture sur le Web, je vois que > ce sont plutôt les générations de processeurs (i386, i486, > i586, etc.), qui sont considérées... > > On parle aussi de microarchitecture, par exemple de la > microarchitecture NetBurst du Pentium 4. Peut-être est-ce > ce que tu appelles 'architecture'? > Toute cette confusion me perd. :) > D'ailleurs la notion elle-même de génération de processeur > devient assez floue, tant les améliorations deviennent > incrémentales, que ce soit sur les Athlon ou les Pentium 4. > > > Quel difference entre un HP-PA 7200 et un HP-PA 8000 ? L'un est un > > processeurs > > 32 bits alors que l'aurtre est 64 bits. Comme les HP-PA 7* fonctionnaient > > deja avec un mode d'adressage virtuel en 48 bits, le ocde compile sur cette > > generation fonctionne sans autre sur un 8000 utilisant aussi ces 48 bits. La > > seule difference residant dans la veritable largeurr du bus memoire. > > Je ne saurai pas dire pour la PA-RISC, je les connais mal. > Mais je ne comprends pas comment on peut «etre une evolution > d'un modele precedent, mais avec plus de registres; sans changer les > modes d'adressage ni le heu d'instruction». Comme peut-on > adresser plus de registres avec les mêmes instructions?
On ne touche pas aux anciennes et on ajoute les nouvelles! p.e. les instructions MOV bien qu'elles s'appellent toutes MOV ne sont pas la même instruction. MOV AX,BX est codée différemment de MOV AX,5 bien que les deux s'appellent MOV. On pourrait pour être plus claire leur changer de nom, mais ça n'ajouterais rien à la facilité d'utilisation de l'assembleur. Donc on peut dire qu'il existe un MOV registre registre, un MOV registre mémoire et aussi d'autres MOV pour d'autres but. S'ils veulent ajouter le MOV registre64 registre64 il suffit de créer une nouvelle instruction MOV64 (qu'on appellerait pour simplifier les choses MOV) et qui agirait sur les registres 64bits. Le résultat est que le set d'instructions se retrouve étendu, que les anciennes instructions restent valables car elles n'ont pas été touchées et que du point de vue de l'assembleur rien ne change, car pour copier une valeur d'un registre à un autre on continue à utiliser l'instruction MOV que ce soit un registre 8, 16, 32 ou 64 bits. Exactement comme si dans la langue française on ajoute un nouveau mot ou on ajoute une nouvelle signification à un mot déjà existant, ça ne change à priori rien dans la signification des autres mots qui pourront donc continuer à être utilisés comme avant (ce qui rend le Français compatible avec ses anciennes versions, il faut en effet beaucoup de générations avant que la langue ne soit plus compréhensible). > Il y avait des bits inutiles dans le jeu d'instructions ? Oui, et même beaucoup, ce qui leur laisse quelque degré de liberté en plus dans le choix du jeu d'instructions. En plus ils ont utilisé la technique des préfixes. Donc si p.e l'instruction MOV reg16,reg16 tient sur deux bytes (je ne suis plus très sur, mais c'est le principe qui conte) l'instruction MOV reg32,reg32 tient sur trois bytes (le premier est un préfixe qui indique qu'on ne travaille pas sur 16bits mais 32), je supposes qu'il y a un autre préfixe pour indiquer qu'on travaille sur 64 bits au lieu de 16 ou un préfixe du préfixe qui indique qu'on travaille sur 64 au lieu de 32 (je ne connais pas les détails du système à 64bits). Donc on a: instruction 16bits: MOV16 AX,BX qui s'écrit MOV AX,BX instruction 32bits: 32.MOV16 AX,BX qui s'écrit MOV EAX,EBX instruction 64bits: 64.MOV16 AX,BX ou 64.32.MOV16 AX,BX que je ne sais pas comment elle s'écrit, mais on pourrait s'imaginer quelque chose comme MOV XAX,XBX D'un côté on à l'écriture pour le processeur (qui n'a pas d'ambiguïté et qui permet d'ajouter des fonctionnalités en préfixant) de l'autre on à l'écriture assembleur pour les humains qui utilise une écriture plus immédiate et évite au programmeur de s'amuser à préfixer chaque instruction. > Marc Mongenet ciao, Leo _______________________________________________ gull mailing list [email protected] http://lists.alphanet.ch/mailman/listinfo/gull
