1 CELL et SystemC Apprentissage des outils développés dans le groupe Alp KILIC Rapport de Stage, Université Joseph Fourier, Magistère 2006-2007 Résumé—Chaque nouvelle génération de processeur développé cause encore des problèmes et rend difficile de choisir la platforme qui convient mieux pour les domaines differentes. C’est impossible de faire des tests au niveau matériel pour une usage précis (Couteux et très lents). Les simulations au niveau logiciel donnent des reponses plus facilement mais sans avoir une précision exacte. Le but de ce stage est de comprendre l’architecture du processeur Cell et comprendre aussi l’outil développés dans le groupe pour faire une simulation logiciel qui est assez bas niveau en SystemC. F 1 I NTRODUCTION L A formation Magistère nous offre la possibilité de voir le monde de la recherche. Pour ce qui veut faire de la recherche après ses études, il est important de connaitre la vie professionnelle et sociale dans les laboratoires et savoir s’intégrer dans le groupe de recherche. Le laboratoire TIMA a une longue expérience sur la conception de matériel et sur les logiciels CAD. Il se concentre sur de divers aspects de la conception, CAD, test de circuits et de systèmes. 2 C ELL Cell est une architecture de microprocesseur conjointement développée par Sony, Toshiba et IBM (une alliance nommée STI).La conception architecturale et la première exécution ont été effectuées au centre de STI sur une période de 4 ans commençant en mars 2001. Il est conçu pour établir le lien entre les processeurs de bureau conventionnels (tels que les familles bien connues de Pentium et de PowerPC) et les processeurs spécialisés en terme de graphique comme les processeurs de nVIDIA ou d’ATI (GPUs). Il peut être utilisé dans les domaines de l’application multimédia, Le monde du matériel informatique reste toujours la partie obscure pour la plupart des les simulations physiques, l’imagerie médicale informaticiens. Cependant il se développe très etc. La première application commerciale rapidement et nécessite un travail sérieux. principale du Cell était dans la console Nous allons aborder le problème de faire la simulation des matériaux au niveau logiciel. de jeu de PlayStation 3 de Sony. Pour cela on va d’abord examiner l’architecture de CELL qui est un processeur assez récent et Cell peut être examiné en quatre principaux populaire. Après on va faire la connaissance composants : les contrôleurs d’entrée/sortie avec l’extension du langage de programmation et de mémoire, le processeur principal C++ pour faire la simulation matériel : « Power Processing Element » (PPE), huit coprocesseurs appelés « Synergistic Processing SystemC. Elements » (SPEs), et un bus de données en anneau qui relie les autres composants entre eux appel é « Element Interconnect Bus » (EIB). Afin d’avoir le rendement élevé pour pouvoir faire des calculs assez compliqué comme le codage ou le décodage de la vidéo (MPEG), Cell relie simplement les SPEs et le PPE grâce 2 a EIB. Le PPE qui est capable d’exploiter un système d’exploitation, a le contrôle du SPEs et peut commencer, arrêter, interrompre et programmer des processus fonctionnant sur les SPEs. C’est pour cela le PPE possède des instructions additionnelles concernant la commande du SPEs. La vraie puissance du Cell vient de ses fameux « Synergistic Processing Elements » On peut voir en details les quatres principaux parties du Cell : 2.1 PPE PPE est un coeur bi-directionnel multitache basée à ”Power Architecture” agissant en tant que contrôleur pour les SPEs qui manipulent la majeure partie du travail de calcul. PPE peut fonctionner avec les systèmes d’exploitation conventionnels dus à sa similitude d’autres processeurs 64-bit PowerPC, alors que SPEs sont conçus pour faire des calculs vectoriels. 2.2 SPEs Chaque SPE est composé de Synergistic Processing Unit SPU, un cotrôleur mémoire Memory Flow Controller MFC et une mémoire locale Local Store LS. SPE opère une mémoire locale (256 Ko) qui stocke des instructions et des données. Des données et les instructions sont transférées entre cette mémoire locale et la memoire centrale par des commandes asynchrones de DMA, exécutées par MFC inclus dans chaque SPE. Un seul SPE peut operer 16 entiers 8 bits, 8 entiers 16 bits, 4 entiers 32 bits ou 4 floats de précision simple dans un seul cycle d’horloge. Il peut aussi faire des operations de mémoire dans le meme cycle. Il n’a pas d’acces direct à la mémoire centrale. Les adresses de mémoire 64-bits constituées par SPU doivent être passées du processeur de SPU au cotrôleur mémoire MFC pour préparer une opération de DMA dans l’espace adresse de système. 2.3 EIB EIB est le coeur de l’architecture de la communication du Cell. Il permet la communication entre PPE, SPEs, la mémoire centrale et les entrées/sorties externes. EIB est composé de 4 anneaux des données de 16 octets : deux fonctionnant dans le sens des aiguilles d’une montre, et les deux autres dans le sens contraire des aiguilles d’une montre. Chaque anneau permet potentiellement jusqu’à trois transferts de données concourants jusqu’à ce que leurs chemins ne recouvrent pas. Pour lancer un transfert de données, les éléments de bus doivent demander l’accès de bus de données.L’arbitre de bus de données de EIB traite ces demandes et décide quel anneau devrait manipuler. L’arbitre choisit toujours un des deux anneaux qui a le chemin le plus court dans la direction du transfert, de ce fait s’assurant que les données n’auront pas besoin de faire plus qu’à mi-chemin autour de l’anneau à sa destination. Pour réduire au minimum la perte de vitesse, l’arbitre accorde la priorité aux demandes venant du contrôleur de mémoire. EIB fonctionne à la moitié vitesse de l’horloge du processeur. Chaque unité de EIB peut simultanément envoyer et recevoir 16 octets de données dans chaque cycle de bus. 2.4 Contrôleurs I/O et mémoires Le MIC est un double contrôleur mémoire XDR (XDRAM) offrant un débit de 25,6 Go par seconde. On trouve deux interfaces E/S configurables (76,8 Go/s, 6,4 Gbit/s) (Flexible I/O). 3 3 S YSTEM C de faire des tests et des simulations dessus. C’est assez important parce que la vérification fonctionnelle au niveau de système économise beaucoup d’argent et de temps. SystemC n’est qu’une bibliothèque de classe de C++ particulièrement conçue pour la conception de système. Conservant les fonctionnalités du C++, il reste possible de décrire des fonctions purement logicielles. SystemC permet donc de modéliser des systèmes matériels, logiciels, mixtes ou même non-partitionnés. – Il intègre la notion du temps à C++ pour simuler des conceptions synchrones de matériel. – SystemC soutient la conception a un niveau plus élevé d’abstraction, tandis que la majeure partie des « HDL » soutient le RTL (Register transfer level ) de la conception. SystemC remplace HDL comme Verilog et VHDL dans beaucoup de situations. Ceci ne signifie pas que ces HDL ne sont plus utiles. Mais le systemC soutient une nouvelle approche pour concevoir un système. Pourquoi l’utiliser ? SystemC est née en raison des nécessités de l’industrie électronique actuelle : Aujourd’hui, Les instruments électroniques se développent très rapidement sans avoir compte du temps de se produire et se lancer sur le marché. Il n’est vraiment pas facile pour les ingénieurs de concevoir un nouveau système. La complexité des nouvelles technologies rend la situation encore plus difficile. Précédemment, le C (ou C++) a été utilisé pour écrire la partie logiciel de la conception. Pour le matériel, c’était du HDL. Il était très difficile d’installer un « testbench » qui est commun pour tous les deux, puisqu’ils sont des langages entièrement différents. L’introduction du SystemC a résolu la plus part de ces problèmes. Les Avantages de SystemC : – Il hérite de tous les traits de C++, qui est un langage de programmation stable admis partout dans le monde. – Riches dans les types de données : Avec les types soutenus par C++, SystemC soutient l’utilisation des types de données spéciaux qui sont souvent utilisés par les concepteurs de matériel – Il a un noyau de simulation qui est tres fort pour permettre aux concepteurs – Simultanéité : Pour comportement simultané. 4 simuler le C ONCLUSION La simulation logicielle nous donne l’opportunité de tester facilement des systèmes tres complexe comme « CELL ». Pour avoir des résultats plus fins il suffit d’améliorer cette méthode. Ce stage n’était que l’apprentissage de ces méthodes. J’espère de continuer à faire des expérimentations sur le sujet.