Février 2011
La liberté du logiciel n est qu une partie du problème.
Winmodems
Modem traditionnel Bon fonctionnement Plus cher Electronique propriétaire Blob sur DSP intégré au modem Bien reçu par les libristes Modifications difficiles Winmodem Idem Très bon marché Idem Blob sur CPU de l ordinateur Mal reçu par les libristes Modifications plus faciles
Pourquoi regarder plus loin que les spécifications du matériel?
Transparence des technologies.
Nouveaux modèles de fabrication du matériel.
Libertés pour les utilisateurs finaux.
Logiciel Spécifications du matériel Conception logique (HDL) Implémentation en semiconducteurs Fabrication des semiconducteurs Schémas électroniques traditionnels et circuits imprimés Mécanique
Logiciel Spécifications du matériel Conception logique (HDL) Implémentation en semiconducteurs Fabrication des semiconducteurs Schémas électroniques traditionnels et circuits imprimés Mécanique
Openmoko
CC-BY-SA, Pas de PCB
Arduino
CC-BY-SA
CC-BY-SA
Ben Nanonote
CC-BY-SA
CC-BY-SA
Milkymist One
CC-BY-SA
CC-BY-SA
Kicad GNU GPL
geda GNU GPL
Logiciel Spécifications du matériel Conception logique (HDL) Implémentation en semiconducteurs Fabrication des semiconducteurs Schémas électroniques traditionnels et circuits imprimés Mécanique
Boîtier Openmoko CC-BY
QCad et boîtier Milkymist One GPL (QCad), CC-BY-SA (boîtier)
RepRap
Logiciel Spécifications du matériel Conception logique (HDL) Implémentation en semiconducteurs Fabrication des semiconducteurs Schémas électroniques traditionnels et circuits imprimés Mécanique
Pourquoi s intéresser aux semiconducteurs?
source : visual6502.org
source : visual6502.org
source : visual6502.org
Logiciel Spécifications du matériel Conception logique (HDL) Implémentation en semiconducteurs Fabrication des semiconducteurs Schémas électroniques traditionnels et circuits imprimés Mécanique
Très coûteux Haute technologie Secrets industriels
MOSIS Jeri Ellsworth home chip fab
FPGAs Silicium reconfigurable ( CD-RW ) Accessibles Moins performants qu une puce sur mesure Outils de développement propriétaires
Logiciel Spécifications du matériel Conception logique (HDL) Implémentation en semiconducteurs Fabrication des semiconducteurs Schémas électroniques traditionnels et circuits imprimés Mécanique
Magic MIT
Toped GPL
Comment faire pour 125 millions de transistors?
Logiciel Spécifications du matériel Conception logique (HDL) Implémentation en semiconducteurs Fabrication des semiconducteurs Schémas électroniques traditionnels et circuits imprimés Mécanique
Elever le niveau d abstraction.
Langages de description du comportement du matériel (HDL).
Outils de synthèse automatiques.
Outils de synthèse Propriétaires et fonctionnels : Très chers Interviews (parfois!) Location de licences Serveurs de licences NDAs Gratuits pour certains FPGA Libres et pas encore fonctionnels : Alliance LLHDL
Outils de simulation Bon choix de solutions libres fonctionnelles : Verilator GPL Cver Icarus Verilog GHDL
OpenSPARC
LEON3/GRLIB
LatticeMico32
Milkymist SoC
Logiciel Spécifications du matériel Conception logique (HDL) Implémentation en semiconducteurs Fabrication des semiconducteurs Schémas électroniques traditionnels et circuits imprimés Mécanique
Débuts et objectifs du projet Milkymist
VJing
MilkDrop
Processus itératif simple : Tracer des objets à l écran onde bordures sprites, video live programmable (patch), langage de script possibilités d interaction Tordre l image zoom, rotation, warping,... distorsion programmable également Recommencer!
Ordinateur embarqué.
Interfaces (video, MIDI, DMX,...) intégrées.
Faible latence.
Difficultés Taille, vitesse et coût d un FPGA Objectif : produit commercialement viable Equilibre entre matériel et logiciel (cf. winmodem) Le logiciel est bon marché et lent, le matériel est cher et rapide Problèmes liés à la mémoire : taille, bande passante, latence Puissance de calcul Distorsion de l image Exécution du patch
Choix du coeur de CPU (OpenSPARC, LEON3, LM32,...)
Périphériques de base.
Port série.
Mémoire flash.
Bus d interconnexion.
Entrée-sorties mappées en mémoire.
/* notice the use of volatile */ volatile unsigned int *my_peripheral; /* peripheral memory mapped at 0xc0001004 */ my_peripheral = (unsigned int *)0xc0001004; /* write word to peripheral */ *my_peripheral = 0xbaadf00d; /* read word from peripheral */ printf("result: %08x\n", *my_peripheral);
Interruptions.
Exemple : port série. Registre de données à 0xe0000000. Interruption 0 après un caractère complètement reçu. Interruption 1 après un caractère complètement envoyé.
void transmit(char c) { /* ecriture du caractère */ *((volatile unsigned int *)0xe0000000) = c; /* attente de la fin de l envoi */ while(!(lm32_interrupts_pending() & (1 << 0))); /* acquittement de l interruption */ lm32_interrupt_ack(1 << 0); }
char receive() { /* attente de réception */ while(!(lm32_interrupts_pending() & (1 << 1))); /* acquittement de l interruption */ lm32_interrupt_ack(1 << 1); /* lecture du caractère */ return *((volatile unsigned int *)0xe0000000); }
Accès direct à la mémoire (DMA). Les périphériques peuvent écrire directement en mémoire. Accès maître au bus (au même titre que le CPU). I/O ou accélérateurs de calculs. Bénéfice : performance!
char buffer[8192]; void start_process() { (...) /* remplissage du buffer */ /* programmation de l adresse du buffer */ *((volatile unsigned int *)0xc0001000) = (unsigned int)buffer; /* démarrage du calcul dans le périphérique */ *((volatile unsigned int *)0xc0001004) = 1; /* CPU disponible pour d autres calculs! */ } void on_dma_interrupt() { /* le périphérique envoie une interruption à la fin */ get_results(buffer); ack_interrupt(); }
Périphériques DMA dans Milkymist Affichage VGA Ethernet Audio AC 97 Entrée vidéo Accélération graphique
VGA
Framebuffer lu par DMA Rafraîchissement de l écran automatique Données dans l ordre du scan VGA 16 bits par pixel (RGB565)
Problèmes de bande passante mémoire Task VGA frame buffer, 1024x768, 75Hz, 16bpp Distortion : texture mapping, 512x512 to 512x512, 30fps, 16bpp Live video : texture mapping, 720x576 to 512x512 with transparency, 30fps, 16bpp Scaling : texture mapping, 512x512 to 1024x768, 30fps, 16bpp Video echo : texture mapping, 512x512 to 1024x768 with transparency, 30fps, 16bpp NTSC input, 720x576, 30fps, 16bpp Software and misc. Total Bandwidth 950Mb/s 250Mb/s 300Mb/s 500Mb/s 900Mb/s 200Mb/s 200Mb/s 3.3Gb/s
Capacité nécessaire de plusieurs Mo = mémoire externe.
Un chip DDR SDRAM à 100MHz : Quelques dollars Maximum de 2 transferts par cycle : 200Mt/s 16 bits par transfert 3.2 Gb/s de bande passante maximum
Latence mémoire
Heuristique des transferts en rafale (burst).
Heuristique des transferts en rafale (burst). Très simple à implémenter. Fonctionne naturellement pour le scan VGA. Idem pour l acquisition video. Logiciel : cache, principe de localité spatiale et temporelle. Distorsion d image : étudié dans la suite.
Distorsion d image?
Plus formellement : Texture mapping dans OpenGL On couvre l image cible d un maillage A chaque sommet (vertex) du maillage : attribution de coordonnées de l image source (texture) Remplissage de chaque maille avec interpolation linéaire des coordonnées
Performance? 1024x768, 30fps = 24Mpixels/s Horloge 100MHz = 4 cycles/pixel Implémentation naïve : 100 cycles calcul + 12 cycles lecture mémoire + 12 cycles écriture mémoire Ouch!
Solutions? Meilleur algorithme (basé sur Bresenham) Parallélisme SIMD (même opération sur données indépendantes) Pipeline Accès mémoire intelligent : cache, tampon d écriture
Problème de la lecture mémoire La lecture occupe déjà 12 cycles, et nous en avons 4 maximum! Idée : utiliser les transferts en rafale et un cache...
Cache direct-mapped
Cache de 32Kio = 95% de hits Temps moyen = 0.05*(12+3) + 0.95*1 = 1.7 cycles!
Performance système (Mpixels/s) mesurée
Calcul des sommets (vertices) Grille 64x64, 30 fois par seconde, horloge 100MHz Calculs flottants assez lourds (est. 470 opérations de base/sommet 1 ) Contrainte : CPI < 1.73 Logiciel traditionel (+ FPU) : CPI > 5 1 pour 150 ops de base, 8 divisions/racines, et 20 trigo ; divisions/racines = 15 ops, trigo = 10 ops
Exécution en désordre (out-of-order execution).
Patch Inst. Cycles CPI Default 192 259 1.35 The Tunnel 208 286 1.38 Warp of Dali 1 220 292 1.33 Digital Flame 216 293 1.36 Wormhole Pillars 231 326 1.41
Conclusions : Il existe aussi du matériel libre! Un algorithme peut être aussi bien en logiciel qu en matériel. Il faut considérer un système dans son ensemble. Les circuits intégrés sont importants. Vous pouvez expérimenter avec des FPGA. Milkymist One est disponible dans le commerce... Autre source en ce moment : récupération de cartes de conversion HDTV Quelques techniques classiques de l industrie des microprocesseurs : Memory mapped I/O, DMA Parallélisme Transferts mémoire en rafale (burst) Caches Exécution en désordre... Merci pour votre attention!