![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() ![]() |
|
Mécanismes LL/SC scalableContexte et Description du StageDès lors que plusieurs processeurs participent à l’exécution d’une application en exécutant des threads et que ces threads communiquent, en se synchronisant ou en s’échangeant des données, il est nécessaire d’implémenter des mécaniques permettant de modifier de manière exclusive des cases de la mémoire. Ce problème peut être résolu par des instructions spéciales des processeurs -- LL/SC (Linked-Load / Store-Conditionnal) -- ou -- CAS (Compare-And-Swap) -- ou par des composants la encore spéciaux (mémoire de verrous). La difficulté, de toutes ces techniques est le passage à l’échelle. Lorsque des milliers de threads s’exécutent sur des milliers de processeurs, le temps d’une opération atomique peut-être prohibitif (plusieurs milliers de cycles) ou bien le matériel nécessaire pour gérer le service peut-être trop important (plusieurs mégaoctets). Dans sa version actuelle, TSAR offre un mécanisme de synchronisation qui n'est exploitable que sous certaines conditions. Le but du stage serait de mettre en évidence les défauts du système actuel et d’implémenter un/des mécanisme(s) d’accès atomique ou de synchronisation efficaces pour TSAR. Compétences souhaitéesLa connaissance du C++ est nécessaire. La connaissance de SystemC est bienvenue. La connaissance du VDHL est un avantage. EncadrantRéférencesMichael et Scott, Implementation of Atomic Primitives on Distributed Shared Memory Multiprocessors, HPCA 1995 Jayanti et Petrovic, Efficient and Practical Constructions of LL/SC Variables, PODC 2003 Carter, Kuo et Kuramkote, A comparison of Software and Hardware Synchronization Mechanisms for Distributed Shared Memory Multiprocessors, TecReport, UUCS 1996 |