Discover Pyratec’s TombExplorer 2.0 Présentation par: Burri Samuel, CEO Kader Abdoul-Keita, Chief Marketing Ferreira Olivier, Lead Software Designer Moumbe Arno-Patrice, Lead Hardware Designer
Contenu Introduction Description générale du système Tour des différente modules CPU0 – Processeur principale CPU1 – Processeur graphique CPU2 – Processeur communication Robustesse et vérification Développements futurs (Version 3.0) Conclusion/Questions Contenu
Introduction PyraTec Fondé en 2008 Basé à Montréal avec locaux en Egypte 430 employés Système le plus répandu pour l’exploration des pyramides Présentation de la nouvelle version (2.0) du système TombExplorer Introduction
Description générale du système 3 CPUs – Nios II/f 4kB cache d’instructions 2kB cache de données Hardware multiplier/divider Instructions et données locales dans la SDRAM Instruction de débogage décale des DELs Compteur des milliseconds (ajustable) Modules matériels pour accélérer l’affichage Description générale du système
Schéma bloc du système Description générale du système
Tour des différentes modules CPU0 – Processeur principale Interconnexions avec les autres processeurs Modules logiciels (Représentation du labyrinthe, Algorithmes) CPU1 – Processeur graphique Contrôleur VGA optimisé Instruction spécialisé pour le calcul d’intensité des ellipses et les transformations 3D-2D (divisions) Modules matériels pour le traçage des lignes et des quadrilatères CPU2 – Processeur communication Communication avec les modules Ethernet et PS2 Pile des protocoles réseaux Assistance logiciel pour la navigation Tour des différentes modules
CPU0 – Processeur principale 4 Fifos pour la communication avec les autres processeurs (2 x In/Out) Tâches logiciels Interprétations (2D) des paquets du serveur et maintenance de l’état du labyrinthe Passer les paquets au CPU1 pour l’affichage 3D Passer des message de CPU2 au CPU1 Génération et interprétation des paquets intra-équipe (état du labyrinthe) Calcul du chemin vers le trésor Tour des différentes modules
Maintenance de l’état du labyrinthe Tour des différentes modules
Calcul du chemin vers le trésor Algorithme itérative à 10 itérations par seconde 4 3 2 3 4 5 2 1 4 5 2 1 1 2 9 8 7 4 3 8 7 6 5 4 Tour des différentes modules
CPU1 – Processeur graphique Interprétation des paquets pour l’affichage 3D Reçoit les commandes d’affichage (2D) du CPU0 Accès directe au contrôleur VGA Instruction spécialisée pour le calcul de l’intensité des ellipses et les transformations 2D-3D (divisions) Module matériel pour le traçage des lignes Module matériel pour le traçage des quadrilatères Tour des différentes modules
CPU1 – Schéma local Tour des différentes modules
Contrôleur VGA Basé sur le contrôleur VGA du laboratoire #4 Double buffering sur la partie gauche de l’écran (configurable) Coordonnées X et Y en 12 bits Clipping sur un rectangle spécifié Palette des couleurs configurable en logiciel Bande passante doublé pour les accès sequentiel (env. 1 pixel par coup d’horloge -> 132 écrans complets par seconde) Write only (excepté un mot de status) Tour des différentes modules
Schéma bloc du contrôleur VGA Tour des différentes modules
Illustration du double buffering Tour des différentes modules
Instruction spécialisée Contient deux unité de division (lpm_divide) Utilise une unité de carré (lpm_square) Machine d’états pour calculer la racine carré Calcul de l’intensité des ellipses Intensité de 4 pixels en 18 cycles Résultat entre 0 et 63 (6 bits) Deux divisions en parallèle en 11 cycles (résultats sur 16 bits) Tour des différentes modules
Schéma bloc de l’instruction spécialisée Tour des différentes modules
Module de traçage des lignes Interface master pour le contrôleur VGA Unité de Bresenham pour le traçage des lignes Fifo pour les commandes du processeur Tour des différentes modules
Unité de Bresenham Traçage des lignes à 1 pixel par coup d’horloge Tour des différentes modules
Module de traçage des quadrilatères Interface master pour le contrôleur VGA 2 Unité de Bresenham pour tracer les extrémités gauches et droites Machine à état pour remplir des quadrilatères spécifié par le processeur (sens de l’aguille du montre) Vitesse: 20 coups d’horloge pour le setup + 1 coup par pixel Fifo pour les commandes du processeur Tour des différentes modules
Schéma bloc / Machine à états Tour des différentes modules
CPU2 – Processeur communication Interagit avec CPU0 Accède au contrôleur réseau et PS2 Vérifie les paquets entrant du réseau Génère les paquets vers le serveur et les coéquipiers Réagit sur les messages du clavier Assiste l’utilisateur dans la navigation du labyrinth Tour des différentes modules
Pile des protocoles Tour des différentes modules
Modes de navigation Tour des différentes modules
Robustesse et vérification La base matériel est stable depuis plusieurs semaines (Version 1.0 sur un processeur) Les modules logiciels ont été testés individuellement Les modules matériels ont été testés par des programmes de test et de vérification Robustesse et vérification
Points critiques Cohérence des données entre plusieurs processeurs (caches) Utilisation des pointeurs (aucune protection de mémoire) Au cas des interruptions les structures partagé doivent supporter la concurrence ou désactiver les interruptions Robustesse et vérification
Développements futurs (Version 3.0) Ajout de son Ajout de la vrai 3D (ev. avec textures) Interfaçage avec un manette de jeu Développements futurs (Version 3.0)
Conclusion Points forts Faiblesses: Plusieurs modes de navigation Intelligence artificiel Module VGA efficace (double buffering, clipping, palette logiciel, double bande passante) Modules matériels pour l’affichage des primitives Pile des protocoles complet et efficace Déploiement rapide (code exécutable dans la flash, script de programmation) Faiblesses: Qualité du code (Nombres magiques, commentaires) Prix: 2230$, 1230$ pour les étudiants (support et code source compris) Conclusion
Pyratec’s TombExplorer 2.0 Questions…? Pyratec’s TombExplorer 2.0 Questions