« Fonctionnement d'un ordinateur/Architectures multiprocesseurs et multicœurs » : différence entre les versions

m
===L'exemple avec le x86===
 
AutreDans exemple,cette on peut citer les processeurs Intel récents. Je pense notamment aux processeurs basés sur l’architecture Haswell. Au alentour de mars 2013section, denous nouveauxallons processeurs Intel sortiront sur le marché : ce serontétudier les premiers processeurs grand public qui supporterontont supporté la mémoire transactionnelle matérielle. Attardons-nous: unles peuprocesseurs surIntel ces processeurs, etbasés sur l'implémentationl’architecture deHaswell, lasortis mémoireaux transactionnelle matériellealentours de cesmars processeurs2013. Sur ces processeurs, deux modes sont disponibles pour la mémoire transactionnelle matérielle : le mode TSX, et le mode HLE.
 
Le mode TSX correspond simplement àfournit quelques instructions supplémentaires permettant depour gérer la mémoire transactionnelle matérielle. On trouve ainsi trois nouvelles instructions : XBEGIN, XEND et XABORT. XBEGIN sertdémarre enune quelquetransaction, sortedans dele topsens départ : elle sert à démarrer une transaction. Toutestoutes les instructions placées après elles dans l'ordre du programme seront ainsisont dans une transaction. Au cas où la transaction échoue, il est intéressant de laisser le programmeur quoi faire. Pour cela, lL'instruction XBEGIN permet au programmeur de spécifierfournit une adresse. Cette adresse permet dequi pointerpointe sur un morceau de code permettant de gérer l'échec de la transaction. En cas d'échec de la transaction, notrele processeur va reprendre automatiquement son exécution à cette adresse. Évidemment, siSi on a de quoi marquer le début d'une transaction, il faut aussi indiquer sa fin. Pour cela, on utiliseavec l'instruction XEND. XABORT, quant à elle, va servir à stopperstoppe l’exécution d'une transaction : elle sert à faire planter notre transaction, si jamais onle s’aperçoitprogramme détecte d'un problème lors de l’exécution de notrela transaction. Lors de la fin d'une transaction, le processeur va automatiquement reprendrereprend à l'adresse indiquée par XBEGIN, et va remmettreremet le processeur dans l'état dans lequel il était d'avant le début de la transaction. : lesLes registres modifiés par la transaction sont remis dans leur état initial, à une exception prêt : EAX. Celui-ci sert à stocker un code d'erreur qui indique les raisons de l'échec d'une transaction. Cela permet de donner des informations au code de gestion d'échec de transaction, qui peut alors gérer la situation plus finement.
HLE
 
Les processeurs Haswall supportent aussi le ''Speculative Lock Elision''. Les instructions atomiques peuvent ainsiêtre supporter l’exécutiontransformée en tant que transaction à une condition : qu'on leur rajoute un préfixe. Le préfixe, pourd'une les instructionsinstruction x86, correspond simplement à un octet optionnel, placé au début de notre l'instruction dans la mémoire. Cet octet servira àIl donnerdonne des indications au processeur, qui permettrontpermettent de modifier le comportement de notre l'instruction. Par exemple, les processeurs x86 supportent pas mal d'octets deLe préfixe : LOCK, qui permet de rendrerend certaines instructions atomiques, ou REPNZE, qui permet de répéterrépéte certaines instructions tant qu'une condition est requise, etc. Le fait est que certains préfixes n'ont pas de signification pour certaines instructions. :Autrefois, les placerpréfixes devantsans ces instructions n'a alors pas de sens. Autrefois, ilssignification étaient totalement ignorés, etpar le processeur ne tenait pas compte de ces préfixes sans signification. Pour supporter le Lock Elision, ces préfixes sans significations sont réutilisés histoirepour deindiquer dire au processeur : cettequ'une instruction atomique doit subir la Lock Elision. etDe doit être tentée en tant que transaction.plus, Deuxdeux "nouveaux" préfixes font leur apparition : XAQUIRE qui sert à indiquer que notre instruction atomique doit être tentée en tant que transaction ; et XRELEASE qui dit que la transaction spéculative est terminée. Ainsi, un programme peut être conçu pour utiliser la Lock Elision, tout en fonctionnant sur des processeurs plus anciens, qui ne la supportent pas ! Belle tentative de garder la rétrocompatibilité.
 
==Consistance mémoire==
39 497

modifications