Processeurs ARM
De nos jours, les processeurs ARM dominent largement le marchรฉ de lโรฉlectronique embarquรฉe. En 2014, on a dรฉnombrรฉ 12 milliards de puces en circulation qui utilisent la propriรฉtรฉ intellectuelle ARM (Vijay & Bansode, 2015). Lโadoption ร grande รฉchelle des processeurs ARM a รฉtรฉ favorisรฉe par la simplicitรฉ de leur architecture, leurs performances et leur grande efficacitรฉ รฉnergรฉtique. Les noyaux ARM se distinguent de la concurrence par leur modรจle de mise en marchรฉ. Ces noyaux sont vendus sous la forme de propriรฉtรฉ intellectuelle aux grands manufacturiers (Samsung, Texas Instrument, etc.). Ces derniers les intรจgrent avec dโautres pรฉriphรฉriques, dans le cadre dโune implรฉmentation spรฉcifique, pour produire des microcontrรดleurs, des processeurs ou des SoC (System On Chip). Ces circuits sont produits ร grande รฉchelle, par la suite, dans un laboratoire de semi-conducteurs. Les noyaux ARM implรฉmentent un jeu dโinstructions RISC (Reduced Instruction Set Computing) oรน la plupart des instructions sโexรฉcutent en un cycle dโhorloge. Les instructions faisant partie du ARM ISA (Instruction set architecture) offrent, pour la plupart, des caractรฉristiques intรฉressantes comme les dรฉcalages intรฉgrรฉs ou lโexรฉcution conditionnelle. Lโarchitecture RISC impose la manipulation de la mรฉmoire par le biais des registres. Les noyaux ARM permettent des accรจs multiples ร la mรฉmoire ร travers les instructions LDM (Load Multiple), STM (Store Multiple) et leurs variantes.
Ces instructions permettent lโรฉchange simultanรฉ de plusieurs valeurs avec la mรฉmoire selon la largeur du bus reliant cette derniรจre au processeur. Les processeurs ARM possรจdent diffรฉrents modes dโopรฉrations et ces modes se qualifient de ยซย privilรฉgiรฉsย ยป sโils sโexรฉcutent avec des mรฉcanismes de protection. Les modes privilรฉgiรฉs, comme les modes superviseur et systรจme, permettent lโexรฉcution protรฉgรฉe des processus critiques du systรจme dโexploitation, tandis que les modes FIQ (Fast Interrupt Request) et IRQ (Interrupt Request) permettent la gestion des interruptions. Le mode utilisateur, qui permet lโexรฉcution de la majoritรฉ des applications, est un mode non privilรฉgiรฉ. En mode utilisateur, un noyau ARM dispose de 16 registres dont 13, ร usage gรฉnรฉral ainsi quโun registre de contrรดle et dโรฉtat CPSR (Current Program Status Register). Le tableau 1.1. montre les fonctions des registres. Ces registres de 32 bits peuvent contenir des donnรฉes 8, 16, ou 32 bits selon la nature de la donnรฉe. Dans le cas dโun registre contenant plusieurs donnรฉes, ces derniรจres sont manipulรฉes ร lโaide dโun suffixe ajoutรฉ ร lโinstruction. Le registre CPSR permet dโactiver les diffรฉrents modes dโopรฉration ainsi que certaines extensions architecturales, telles quโillustrรฉes ร la figure 1.1 (Vijay & Bansode, 2015). Ce registre contient surtout les bits dโรฉtat qui maintiennent les drapeaux conditionnels dโรฉgalitรฉ, de signe, de dรฉpassement et de retenue. Les instructions conditionnelles sont exรฉcutรฉes selon la valeur de ces bits.
Premiers designs des processeurs asynchrones
La premiรจre implรฉmentation notable dโun processeur asynchrone a รฉtรฉ introduite par Martin (1989) dans un projet de lโInstitut Caltech (California Institute of Technology). Ce processeur dispose dโun bus de donnรฉes dโune largeur de 16 bits et effectue les diffรฉrentes opรฉrations de traitement dโun processeur RISC standard. Ces opรฉrations sont les calculs arithmรฉtiques et logiques sur des entiers, les accรจs ร la mรฉmoire (รฉcriture et lecture) et les branchements. La synchronisation des diffรฉrents รฉlรฉments est basรฉe sur un รฉtablissement de liaison (Handshake). Cette approche a dรฉmontrรฉ la possibilitรฉ dโimplรฉmenter un processeur fonctionnel ne disposant pas de distribution dโhorloge et a permis dโatteindre une performance estimรฉe ร 15 MIPS en technologie 2ฮผm. Lโapproche, dรฉcrite par Cho et al. (1992), introduit un processeur 32 bits entiรจrement asynchrone. Le FAM (Fully Asynchronous Microprocessor) implรฉmente une architecture endochrone ร 18 instructions utilisant 32 registres. Cette architecture possรจde un pipeline ร quatre รฉtages : acquisition de lโinstruction, communication avec la mรฉmoire externe, dรฉcodage de lโinstruction et finalement lโรฉtage dโexรฉcution (permettant aussi dโรฉcrire le rรฉsultat dans le fichier des registres). Un รฉtablissement de liaison ร 4 phases se fait entre les รฉtages adjacents du pipeline, pour synchroniser le transfert des donnรฉes entre ces derniers. Ce modรจle de communication est illustrรฉ ร la figure 1.2. Dans ce modรจle, le bloc 1 envoie une requรชte (Rin) au module de communication pour lโinformer que les donnรฉes sont prรชtes.
Le module de communication dรฉclenche, dรจs lors, la bascule qui mรฉmorise les donnรฉes transmises par le bloc 1 ร lโaide dโune communication bidirectionnelle (Lin et Lack) et notifie le bloc 2 de cette requรชte avec le signal Rout . Ce dernier transmet sa confirmation au bloc 1 par lโentremise du module de communication (Ain et Aout ). Le transfert des donnรฉes se dรฉclenche et le bloc 1 envoie une requรชte de terminaison.
Dรจs lors que le bloc 2 reรงoit lโensemble des donnรฉes, il confirme la terminaison. ร la rรฉception de cette derniรจre Brunvand (1993), chercheur ร lโuniversitรฉ de lโUtah, a dรฉveloppรฉ un processeur asynchrone dรฉnommรฉ NSR (Nonsynchronous Risc). Le NSR est un processeur 16 bits qui implรฉmente 16 instructions comprenant des opรฉrations logiques et arithmรฉtiques, des accรจs mรฉmoire et des branchements. Ce processeur est un amalgame de plusieurs blocs endochrones qui sont synchronisรฉs grรขce ร un รฉtablissement de liaison ร deux phases. Chaque bloc reprรฉsente une รฉtape du pipeline. Lโutilisation de ces blocs dรฉpend de lโinstruction, de maniรจre ร ce que chaque instruction utilise uniquement les blocs dont elle a besoin. La figure 1.3 (Werner & Akella, 1997), offre un aperรงu, ร haut niveau, de cette architecture. Le NSR a รฉtรฉ implรฉmentรฉ sur FPGA et a permis dโobtenir une performance de 1.3 MIPS (million dโinstructions par seconde).
Du fait de son implรฉmentation sur FPGA, les performances du NSR sont difficiles ร comparer avec celles des autres processeurs, car les FPGA sont plus lents que les circuits ASIC (Application Specific Integrated Circuit) (Werner & Akella, 1997). Lโarchitecture STRIP (A self timed RISC processor), publiรฉe par Dean (1992), est un exemple de processeur endochrone possรฉdant un systรจme de synchronisation particulier. Alors que la majoritรฉ des processeurs asynchrones utilisent un systรจme dโรฉtablissement de liaison pour coordonner les tรขches de traitement, le STRIP utilise un systรจme dโhorloge dynamique. Ce systรจme repose sur des cellules de repรฉrage qui dรฉterminent le temps de propagation critique du chemin logique utilisรฉ pour gรฉnรฉrer un signal dโhorloge ayant une pรฉriode adรฉquate. Ce systรจme est prรฉsentรฉ ร la figure 1.4 (Werner & Akella, 1997). En rรฉsumรฉ, cette architecture est synchrone avec une horloge qui sโadapte ce qui permet dโimposer un temps dโexรฉcution selon la charge du traitement requis. Ceci est particuliรจrement utile dans le cas oรน une รฉtape de calcul ne nรฉcessite pas dโaccรจs ร la mรฉmoire. La pรฉriode dโhorloge dans ce cas-ci sera considรฉrablement rรฉduite, car elle ne prendra pas en compte le chemin logique de la transaction avec la mรฉmoire. La performance moyenne de ce design est de 62.5 MIPS sur une technologie 2-ฮผm CMOS.
|
Table des matiรจres
INTRODUCTION
CHAPITRE 1 ARCHITECTURE ASYNCHRONE ET ARM
1.1 Processeurs ARM
1.2 Historique des processeurs asynchrones
1.2.1 Premiers designs des processeurs asynchrones
1.2.2 ARM asynchrone
1.3 Architecture de lโAnARM
1.3.1 Prรฉsentation gรฉnรฉrale de lโAnARM
1.3.2 Synchronisation intra modulaire
1.3.3 Synchronisation inter modulaire
1.4 Conclusion
CHAPITRE 2 ORDONNANCEMENT DES INSTRUCTIONS
2.1 Cadre thรฉorique
2.1.1 Ordonnancement des instructions
2.1.1.1 Dรฉpendances de donnรฉes
2.1.1.2 Disponibilitรฉ des ressources
2.1.1.3 Graphe de flot de donnรฉes
2.1.1.4 Dรฉfinition du problรจme dโordonnancement des instructions
2.1.2 Allocation des registres
2.1.2.1 Intervalle de vie dโune variable et graphe dโinterfรฉrences
2.1.2.2 Relation entre lโordonnancement des instructions et lโallocation des registres
2.2 Techniques existantes dโordonnancement des instructions
2.2.1 Ordonnancement de liste
2.2.2 Mรฉthodes combinatoires
2.2.3 Ordonnancement pour architectures asynchrones
2.3 Conclusion
CHAPITRE 3 STRATรGIE DโORDONNANCEMENT POUR LโANARM
3.1 Modรฉlisation
3.1.1 Modรฉlisation temporelle
3.1.2 Modรฉlisation spatiale
3.2 Algorithme dโordonnancement pour lโAnARM
3.2.1 Stratรฉgie dโordonnancement
3.2.2 Description de lโalgorithme dโordonnancement proposรฉ
3.3 Conclusion
CHAPITRE 4 รVALUATION DE LโAPPROCHE PROPOSรE
4.1 Environnement dโimplรฉmentation
4.1.1 Ordonnancement des instructions dans LLVM
4.1.2 Implรฉmentation de lโapproche dโordonnancement
4.2 รvaluation de lโapproche dโordonnancement
4.2.1 Environnement expรฉrimental
4.2.2 Choix des paramรจtres de prioritรฉ
4.2.3 รvaluation de lโapproche au niveau dโoptimisation minimal
4.2.4 รvaluation de lโapproche au niveau dโoptimisation maximal
4.3 Conclusion
CONCLUSION ET RECOMMANDATIONS
ANNEXE I CODE SOURCE DE LโAPPROCHE DโORDONNANCEMENT
ANNEXE II CODE SOURCE DES PROGRAMMES TรSTรS
BIBLIOGRAPHIE
Tรฉlรฉcharger le rapport complet