développement nouvel ASM - ASM - Programmation
Marsh Posté le 27-05-2011 à 14:41:43
Quelles évolutions ?
- Les écrans plus grands
- Les modems plus rapides et/ou sans fil
- Les clés USB
- Les disques SSD
- La molette de la souris
- Le remplacement du clavier par les doigts sur l'écran
Tout cela sont de belles innovations.
Mais si on étudie chacune en pensant à l'assembleur, on ne voit pas trop ce qu'il y a de nouveaux au niveau du noyau. On a toujours des flux d'informations, ça ne change pas.
Quelles innovations seraient peu ou mal prises en compte par les ASM qui existent actuellement ?
Marsh Posté le 27-05-2011 à 15:09:30
Si par ASM tu veux dire "ISA" (Instruction Set Architecture). Il y a plus d'une ISA deployee (x86, ARM, POWER, Sparc,...). Intel a voulu il y a quelques annees remplacer la famille x86 par autre chose reconcu a partir de 0 (cherche ia64 et Itanium). Ce fut un echec par rapport aux objectifs affiches pour differentes raisons.
Personne a ma connaissance n'envisage plus d'essayer de remplacer l'x86 sur le marche des PC. Mais les archi autres que x86 restent sur leur marches de niche plus ou moins large et d'un certain point de vue, l'embarque -- ou ARM domine -- est en train de faire des PC un marche de niche.
La raison est qu'en tant qu'ISA x86 n'est pas une belle ISA, mais a l'avantage enorme de ne pas avoir de defauts fatals (compare au VAX par exemple qui avait d'un certain point de vue une tres belle architecture, mais des defauts qui ont fait que DEC a prefere developper l'Alpha plutot que de tenter de poursuivre avec cette archi). Tous ses problemes peuvent etre contournes a un prix qui est plus que compense par les gains fournit par la taille du marche d'un circuit compatible avec l'existant.
Marsh Posté le 27-05-2011 à 21:23:44
@olivthil : http://www.hardware.fr/articles/83 [...] dozer.html c'est de cet article là que je parle, si t'as jamais fait d'assembleur ou d'archi système tu vas peut être pas bien comprendre, mais en gros maintenant une bonne partie de la puissance des processeurs par rapport aux générations précédentes vient de ce qu'ils sont capables d'optimiser la façon dont ils interprètent l'assembleur, c'est à dire qu'ils ne suivent pas linéairement ce que dit le code. Les évolutions dont je parle, c'est à la fois la capacité à concevoir de telles architectures, mais aussi les nouvelles approches de la programmation, ... (si tu veux avoir une idée de ce que ca peut être, cherche lambda-calcul)
@ Un programmeur : Merci c'est à peu près ça que je cherchais, je lirais ça quand j'aurai le temps
Marsh Posté le 28-05-2011 à 13:19:50
J'ai fais un peu d'assembleur (un an dans une entreprise qui fabriquait ses propres ordinateurs, et cinq ans en amateur à programmer des jeux, sur des Intel X86 et des Motorola).
Merci pour le lien. Pour ma part, je n'y vois rien de bien nouveau. Si vous pensez qu'il a des nouveautés (et je sens que vous avez des choses en tête), alors n'hésitez pas à vous exprimer plutôt que de donner des liens.
Les optimisations ont toujours existé. Mais elles sont souvent décevantes dans la pratique, contrairement à ce que peuvent dire quelques journalistes, et à ce que peuvent penser quelques novices. On gagne quelques cycles par-ci, par-là, mais cela ne fait pas grand chose au total.
Alors que si on réfléchit bien à son programme, on va souvent trouver des améliorations qui permettent des gains importants. Par exemple, on rajoutera un index ou une table de hashage, ou bien, on travaillera de manière incrémentale, on ne redessinera que certaines parties de l'écran, etc. Cela, l'assembleur ne peut pas le faire, car c'est à un niveau trop global pour le microprocesseur.
Ce qui changerait vraiment serait si le programmeur pouvait lui-même gérer la mémoire cache interne au microprocesseur, on aurait alors de la mémoire à trois vitesses (les registres, le cache, et la ram). Ou autre chose, si on évoluait du binaire vers le ternaire.
Marsh Posté le 28-05-2011 à 14:13:12
islington a écrit : mais en gros maintenant une bonne partie de la puissance des processeurs par rapport aux générations précédentes vient de ce qu'ils sont capables d'optimiser la façon dont ils interprètent l'assembleur, c'est à dire qu'ils ne suivent pas linéairement ce que dit le code. |
CDC 6600 (1964) avait déjà de l'exécution dans le désordre. Le Pentium Pro (1995) aussi. En passant, c'est le genre de techniques qui rendent le jeu d'instructions de moins en moins important (parce que le décodage est une partie tellement minime de l'ensemble de la chaîne).
Il n'y a pas de grosses évolutions récentes depuis le multi-core et l'hyperthreading.
billgatesanonym a écrit : Ce qui changerait vraiment serait si le programmeur pouvait lui-même gérer la mémoire cache interne au microprocesseur, on aurait alors de la mémoire à trois vitesses (les registres, le cache, et la ram). |
Pas vraiment sur que ce soit un gain.
Citation : Ou autre chose, si on évoluait du binaire vers le ternaire. |
Marsh Posté le 27-05-2011 à 00:07:43
Salut,
en lisant vite fait l'article sur l'architecture Bulldozer de AMD, je me suis rendu compte que les architectures tendent fortement à optimiser l'interprétation de l'ASM.
Mais est ce que les fondeurs n'auraient pas pour projet de créer un nouvel ASM, pour prendre en compte quelques dizaines d'années d'évolution et de recherche en info?
C'est sur que le passage à un nouvel ASM couterait bien cher, mais est ce que quelqu'un sait si des recherches sont effectuées dans ce sens?
Merci