Bug : pas de mémoire transactionnelle pour les Xeon E3

Un bug dans les puces Xeon E3-1200 v3 a poussé Intel à désactiver le support des extensions TSX, qui gèrent la mémoire transactionnelle, dans ses puces serveurs.

Intel vient de publier une mise à  jour des spécifications de ses puces Xeon E3-1200 v3 (utilisant la technologie "Haswell") qui met en lumière un erratum (un bug processeur) dans le support des instructions TSX (Transactional Synchronization Extensions), qui permettent à ces puces de supporter la mémoire transactionnelle.

Une technologie conçue pour simplifier la création et accélérer le fonctionnement des codes multithreadés

La mémoire transactionnelle est une technique imaginée pour simplifier la création de logiciels multithreadés et qui reprend les concepts de transaction utilisés par les grands SGBD. L’objectif est d’éviter l’utilisation de verrous sur les ressources gérées par le processeur et notamment d’éviter qu’une tâche (ou thread) ne monopolise durablement une ressource durant une opération. 

Avec une gestion transactionnelle de la mémoire, les threads exécutent des transactions sans utiliser de verrous et ces dernières ne sont finalisées qu’après un « commit » explicite. C’est alors le processeur qui se charge de valider les transactions et notamment de vérifier qu’un autre thread n’a pas effectué de changement sur une page mémoire pendant qu’une autre transaction se déroulait. Si ce n’est pas le cas, la transaction est validée, sinon, l’opération doit être renouvelée. 

L’approche est dite "optimiste", puisqu’on mise sur le fait que dans la plupart des cas, il n’y aura pas collision de mise à jour de page, alors que l’approche traditionnelle est "pessimiste", puisqu’elle  assume qu’il y a un risque de collision et met en œuvre préventivement un mécanisme à la source pour éradiquer ce risque.

Intel n’est pas le premier à se tourner vers cette technique. Sun l’avait inaugurée avec ses processeurs Rock, censés motoriser les serveurs Supernova, une gamme de serveurs finalement abandonnée par le constructeur peu avant son acquisition par Oracle. IBM utilise aussi cette technique pour ses serveurs à architecture massivement parallèle Blue Gene Q et l’a ajouté à ses récents Power8.

Un bug sans solution dans les Xeon E3-1200

Dans un erratum (HSW 136) publié sur son site web, Intel indique que, dans un scénario complexe combinant certaines conditions temporelles et d’événements système,  les logiciels faisant appel aux instructions TSX pourraient faire face à un comportement système imprévisible. Selon Intel, il serait possible de créer un contournement à ce problème via une modification du BIOS des serveurs, mais pour l’instant le constructeur indique que les instructions TSX sont désactivées et ne sont officiellement supportées que pour le développement d’applications.

Nul ne sait quelles seront les conséquences de cet erratum à long terme. Par le passé, Intel a été contraint à procéder à l’échange de certains processeurs défectueux dans de vastes campagnes de rappels. Pour l’instant, le constructeur se borne à informer du bug, mais ne propose pas de solutions aux clients affectés. Selon le fondeur, tous les Xeon E3 1200 v3 du stepping C0 (la première génération de masque Xeon E3 1200 v3) sont concernés par le bug.

 

 

Pour approfondir sur Processeurs et composants