• Aucun résultat trouvé

Organisation Expérimentale

Notre organisation expérimentale utilise différents outils pour mettre en place une plateforme afin de vérifier l’efficacité des flux de conception présentés dans la dernière section. Nous avons réalisés toutes nos expériences avec des processeurs PowerPC [47] étendus avec AltiVec[48] basés sur un jeu d’instruction SIMD. AltiVec est un point variable et la totalité des jeux d’instruction SIMD a été conçue et est la propriété de Apple Computer, IBM et Motorola (l’alliance AIM), et est implémenté sur les versions de PowerPC incluant les processeurs G4 de Motorola et G5 d’IBM. AltiVec est une marque commerciale seulement détenue par Motorola, aussi le système se réfère également aux Velocity Engine d’Apple [49] et VMX d’IBM. IBM Coreconnect [51] est utilisé en tant qu’architecture de communication standard, ce qui inclus le Processor Local Bus (PLB), le On-chip Peripheral Bus (OPB), un bus bridge, deux arbiters, et un Device Control Register (DCR) bus. Pour l’implémentation NoC, nous utilisons systemC base sur les bibliothèques OCCN développé par STMicroelectronics pour un chemin rapide de vérification de NoC.

Nous avons implémenté une partie du jeu d’instruction AltiVec sur VHDL en utilisant les outils Xilinx et sur un tableau ML403[52] qui contient un processeur PowerPC 450 avec une logique programmable basée sur Virtex-4 FPGA. L’environnement de logiciel intégré (ISE) 7.1 [53] est utilisé pour synthétiser le système et obtenir les besoins d’espace pour différentes instructions alors que Embedded Development Kit (EDK) [50] est utilisé pour modéliser une plateforme, écrire le logiciel et l’exécuter en temps réel. Les résultats d’espace obtenus par implémentation de toutes les instructions sont emmagasinés dans la

base de données à utiliser en même temps que l’implémentation du flux de conception de l’application cible.

Figure 1-9 PowerPC 750 étendu avec un jeu d’Instruction AltiVec

Pour la vérification complète des systèmes impliquant des processeurs étendus avec des architectures de réseau sur puce, nous avons étendu ppc750sim [54] qui est un simulateur PowerPC 750 (G3) simulator écrit dans SystemC qui accompli une inexactitude de 10% sur SPEC CINT 2000 en comparaison avec le réel microprocesseur PowerPC 750. L’architecture de haut niveau de PowerPC 750 est montrée dans l’Image 9. Il convient de noter que PowerPC 750 ne contient pas d’extension de jeu d’instruction AltiVec, aussi nous avons écrit l’extension AltiVec pour le PowerPC, ce qui a représenté approximativement 8000 lignes de code et nous les avons ajouté en parallèle au pipeline principal du processeur tel que cela est montré par les deux boites les plus à gauche dans l’étape d’Exécution du pipeline. Même si PowerPC750 utilise l’exécution d’instruction en dehors du pipeline principal utilisé pour l’exécution d’instruction de but général, notre partie du pipeline qui démarre après l’unité distribuée (dispatch unit) et qui exécute les instructions, utilise, pour simplifier, d’une manière ordonnée les instructions SIMD.

Une fois que la micro-architecture du processeur est étendu avec l’instruction SIMD programmable, a été créé un fichier top niveau qui peut d’initialiser de multiples copies des processeurs. En utilisant systemC, des interfaces de réseau ont été écrites et des bibiothèques de réseau fournies par OCCN [55] ont été utilisées pour implémenter une architecture de réseau entre les processeurs. Les bibliothèques OCCN fournissent le router, le packet data unit (PDU), les queues, les canaux, les classes de statistiques et d’autres éléments de base nécessaire à l’implémentation et à l’analyse d’une architecture de communication. Dans le cas de l’utilisation des IPs de matériel programmable, nous avons la description de niveau comportemental de systemC pour écrire les éléments de matériel et ils ont été synthétisés en utilisant le compilateur Celoxica agility [56] afin d’obtenir un espace estimatif pour chaque accélérateur matériel. En utilisant tous ces éléments, il devient possible d’implémenter un système complexe de multiprocesseurs hétérogènes dans un délai de développement très court. Durant notre expérimentation, nous avons implémenté manuellement des fichiers top niveau de systemC afin d’initialiser et connecter tous ces composants pour des configurations variables testées durant notre processus d’exploration de l’espace de conception. L’image 10 montre le diagramme de bloc d’un réseau sur puce 3x3 basé sur une construction de typologie de maillage utilisant notre environnement d’expérience. Les queues entre les routeurs et les éléments de calculs ont été montrées en utilisant des marques sous forme de flèche décrivant la direction des communications alors que les éléments de calculs sont connectés au réseau au moyen d’interface de réseau. Ces éléments de calculs peuvent être PowerPC 750, PowerPC 750 de but général étendu avec des instructions programmables telles que montrées dans l’image 4 ci-dessous ou des IPs de matériel programmable écrits avec systemC et synthétisé acec le compilateur Agility. Pour la vectorisation des différentes tâches, nous pouvons utiliser gcc 4.0 [57] ou l’outils de vectorisation VAST [58]. Toutefois, nous observons que les techniques d’auto-vectorisation ne fournissent pas de code vectorisé optimal. Donc dans la mesure du possible nous avons opté pour une vectorisation de code manuelle afin d’avoir de meilleurs résultats. Ceci met en exergue le fait que tant que les techniques d’auto-vectorisation ne sont pas assez avancées, les techniques de synthèse de niveau de système impliquant des instructions SIMD ne

devront pas être effectivement automatisées. Autrement dit, des avancées dans les techniques de vectorisation au sein des compilateurs seront grandement utiles et donc réduire le temps pour les synthèses SIMD de niveau de système exploitant des parallélismes de donnée à grain fin.

Figure 1-10 Un Réseau sur Puce typique modélisé en utilisant notre système.

Documents relatifs