Linux et Codesign
Transcription
Linux et Codesign
RMLL ‘08 Linux et le Codesign pour la conception des systèmes embarqués Patrice KADIONIK IMS – ENSEIRB – Université de Bordeaux 1 – France Ahmed BEN ATITALLAH ENIS – Université de Tunis - Tunisie Linux et Codesign pk/enseirb/2008 -1- PARTIE 1 OBJECTIFS ET PROBLÉMATIQUE Linux et Codesign pk/enseirb/2008 -2- OBJECTIFS Conception et réalisation d’un système embarqué multimédia modulaire pour l’étude et le développement de codeurs vidéo. NIOS II RAM FPGA FPGA RAM H.263 Ethernet Interface de contrôle sous µClinux Linux et Codesign pk/enseirb/2008 -3- PROBLÉMATIQUE Complexité des systèmes embarqués (Multimédia, Télécommunications…). numériques Les processeurs standards deviennent incapables de répondre aux exigences de ces systèmes. n 10000000 Sh an no 1000000 id e 100000 Lo 10000 id o L e e or o M 1000 100 Capacité des 10 1985 1990 1995 Batteries 2000 2005 2010 2015 Les lois empiriques de l’évolution de l’électronique Linux et Codesign pk/enseirb/2008 -4- PROBLÉMATIQUE Le choix d’une architecture pour les systèmes embarqués multimédia doit être un compromis entre : 9 Flexibilité. 9 Consommation réduite. 9 Performance. 9 Coût faible. 9 Rapidité de conception (Time To Market). Pour la conception d’un tel système complexe, une méthodologie de conception rigoureuse doit être utilisée. Linux et Codesign pk/enseirb/2008 -5- PARTIE 2 MÉTHODOLOGIE DE CONCEPTION Linux et Codesign pk/enseirb/2008 -6- CONCEPTION DES SYSTEMES NUMERIQUES Les systèmes numériques deviennent aujourd'hui de plus en plus complexes au niveau intégration et fonctionnalités. On est en mesure d'intégrer tout dans un même composant (single chip). Ceci est en fait lié à la loi empirique de Moore (pour une surface de silicium donnée, on double le nombre de transistors intégrés tous les 24 mois). Linux et Codesign pk/enseirb/2008 -7- CONCEPTION DES SYSTEMES NUMERIQUES On travaille maintenant au niveau système (ou fonctionnalité) et non au niveau porte logique (pour le grand bien des électroniciens). Les fonctionnalités peuvent être implantées dans des composants spécifiques de type ASIC (Application Specific Integrated Circuit). On parle alors de Système sur Silicium SoC (System on Chip). Les fonctionnalités peuvent être implantées dans des composants logiques programmables de type FPGA (Field Programmable Gate Array). On parle alors de système SoPC (System on Programmable Chip). Linux et Codesign pk/enseirb/2008 -8- CONCEPTION DES SYSTEMES NUMERIQUES L'approche « schématique » au niveau porte logique ou fonctionnalités de base RTL (Register Transfer Logic) est délaissée pour la conception des systèmes complexes au profit d'une approche « textuelle ». On utilise des langages de description de matériel comme VHDL (Very high speed integrated circuit Hardware Description Language) ou Verilog pour synthétiser une fonctionnalité numérique. Ces langages de description de matériel sont en fait de véritables langages de programmation informatiques, orientés objet. Ils sont utilisés conjointement avec un synthétiseur (compilateur) ou un simulateur. Linux et Codesign pk/enseirb/2008 -9- CONCEPTION DES SYSTEMES NUMERIQUES Ces langages ont permis de travailler avec un niveau d'abstraction plus grand laissant les basses besognes au synthétiseur. On a pu rapidement développer des bibliothèques de fonctionnalités comme une interface USB, un contrôleur MAC Ethernet que l'on appelle blocs IP (Intellectual Property). On peut les acheter ou bien utiliser des blocs IP libres (comme du logiciel libre) dont le site phare de référence est http://www.opencores.org. Linux et Codesign pk/enseirb/2008 - 10 - CONCEPTION DES SYSTEMES NUMERIQUES On peut ainsi voir la conception d'un système numérique complexe comme un assemblage de blocs IP si bien que les langages de description de matériel sont un peu comme un langage assembleur vis à vis d'un langage plus évolué comme le langage C. Les langages de description de matériel sont aussi intéressants pour la facilité de modification et de réutilisation d'un design précédent pour un nouveau design (design reuse). Cela permet de réduire aussi le Time To Market (TTM) ! Linux et Codesign pk/enseirb/2008 - 11 - CONCEPTION DE SoPC Processeur RISC RAM Accélérateur Matériel DSP BUS Système SoPC implanté dans un circuit logique programmable Linux et Codesign pk/enseirb/2008 - 12 - HW/SW CODESIGN L’approche SoPC : cohabitation de deux ressources logicielle et matérielle sur une même puce : codesign. Le codesign utilise le matériel et le logiciel pour une fonctionnalité à implanter : 9 Le logiciel est utilisé pour sa flexibilité. 9 Le matériel (i.e. FPGA et ASIC) est utilisé pour ses performances. Linux et Codesign pk/enseirb/2008 - 13 - LE BESOIN D’UN SYSTÈME D’EXPLOITATION La logique programmée incluse dans les systèmes embarqués est de plus en plus complexe. Une approche logicielle de type superboucle (boucle infinie + interruptions) devient trop sommaire pour gérer et maîtriser la complexité. On a donc besoin d’utiliser un système d’exploitation offrant différents services nécessaires pour mieux gérer la complexité algorithmique logicielle. Linux et Codesign pk/enseirb/2008 - 14 - LE BESOIN D’UN SYSTÈME D’EXPLOITATION Un système d’exploitation offre ainsi différents services pour mieux appréhender la complexité : 9 Apport du multitâche. Une application monolithique est divisée en une somme de tâches coopératives (système multitâche). 9 Maîtrise des contraintes temporelles (système Temps Réel). 9 Masquage des spécificités du matériel. On y accède de façon homogène et standard. 9 Développement de pilotes de périphérique (driver) simplifié pour pouvoir avoir accès aux accélérateurs matériels. 9Apport d’un système de fichiers. 9 Possibilité de communications réseau : pour un contrôle du système à distance par exemple. Linux et Codesign pk/enseirb/2008 - 15 - PARTIE 3 LES PROCESSEURS POUR LE SOPC Linux et Codesign pk/enseirb/2008 - 16 - INTERET D’UN PROCESSEUR POUR LE SOPC Lorsque l'on conçoit un système numérique complexe, on met en oeuvre généralement un processeur embarqué. Ce processeur embarqué est : Soit un bloc IP : on parle de processeur softcore. Soit déjà implanté dans le circuit électronique en « dur » : on parle de processeur hardcore. Le processeur de ce type est généralement plus performant que le processeur du type précédent. Linux et Codesign pk/enseirb/2008 - 17 - INTERET D’UN PROCESSEUR POUR LE SOPC Le processeur embarqué allie la souplesse du logiciel à l'accélération du temps d'exécution du matériel. Une fonctionnalité particulière peut donc être composée d'une partie matérielle couplée à une fonctionnalité logicielle dédiée : on a donc une conception conjointe matérielle-logicielle ou codesign. Le codesign implique donc une conception en même temps du matériel et du logiciel, ce qui est une nouvelle méthodologie par rapport à la méthodologie de conception classique (conception matérielle puis conception logicielle)... Linux et Codesign pk/enseirb/2008 - 18 - CHOIX DU PROCESSEUR Le choix d'un processeur pour le SoPC peut se faire sur différents critères : Processeur hardcore : pour ses performances au détriment de la flexibilité. Processeur softcore : pour sa flexibilité de mise à jour au détriment de performances moindres que le précédent. La portabilité vers n'importe quel circuit FPGA est assurée en étant donc circuit FPGA indépendant. Il est aussi possible de migrer vers un circuit de type ASIC en cas d'une production en grande série. Généralement, on privilégie les processeurs softcore pour s'affranchir des problèmes d'obsolescence et pour pouvoir bénéficier facilement des évolutions apportées en refaisant une synthèse. Linux et Codesign pk/enseirb/2008 - 19 - LES PROCESSEURS SOFTCORE POUR LE SOPC Le processeur softcore peut être libre : Il est décrit en langage de description de matériel (VHDL, Verilog). Le code source peut être librement distribué et implanté dans n'importe quel circuit programmable FPGA. On est alors indépendant du type de circuit FPGA. Linux et Codesign pk/enseirb/2008 - 20 - LES PROCESSEURS SOFTCORE POUR LE SOPC Le processeur softcore peut être propriétaire : Il est distribué par exemple sous forme d'une netlist pour être implantée dans un circuit FPGA. Il est généralement lié à un fondeur de circuit FPGA particulier (comme Altera ou Xilinx). On ne peut pas l'utiliser dans un circuit FPGA autre que celui pour lequel il est prévu. On a donc ici une boîte noire. Linux et Codesign pk/enseirb/2008 - 21 - LES PROCESSEURS SOFTCORE POUR LE SOPC On trouvera principalement au niveau des processeurs softcore libres : Le processeur Leon http://www.gaisler.com/index.html. Le processeur OpenRisc http://www.opencores.org/projects.cgi/web/or1k/overview. Autre processeur : F-CPU http://www.f-cpu.org. Autres processeurs : clones de 6800, 68HC11, 68K, PIC : http://www.opencores.org/browse.cgi/filter/category_micropr ocessor … Linux et Codesign pk/enseirb/2008 - 22 - LES PROCESSEURS SOFTCORE POUR LE SOPC On trouvera principalement au niveau des processeurs softcore propriétaires : Le processeur NIOS et NIOS II d'Altera http://www.altera.com. Le processeur Microblaze de Xilinx http://www.xilinx.com. … Linux et Codesign pk/enseirb/2008 - 23 - LE PROCESSEUR SOFTCORE MICROBLAZE Linux et Codesign pk/enseirb/2008 - 24 - LE PROCESSEUR SOFTCORE MicroBlaze MicroBlaze : ARCHITECTURE Jeu d’instructions 32 bits. 32 registres de données. Pipeline à 3 niveaux. Cache d’instructions et de données configurable. Bus interne LMB et CoreConnect IBM. Pas de MMU. Produit commercial de Xilinx. Linux et Codesign pk/enseirb/2008 - 25 - LE PROCESSEUR SOFTCORE MicroBlaze MicroBlaze : LOGICIELS Plateforme de développement Xilinx XPS. Chaîne d’outils GNU (compilation croisée). Simulateur XMD. OS supportés : µClinux. Portage GPL http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux/. microC/OS II. Produit commercial. Noyau ATI. Produit commercial. Linux et Codesign pk/enseirb/2008 - 26 - LE PROCESSEUR SOFTCORE NIOS II Linux et Codesign pk/enseirb/2008 - 27 - LE PROCESSEUR SOFTCORE NIOS II NIOS II : ARCHITECTURE 2 versions : NIOS I et NIOS II. Seule NIOS II présentée. 3 cores possibles : fast, economy, standard. Jeu d’instructions 32 bits. 32 registres dont 6 de contrôle. Pipeline à 6 niveaux (fast). Cache d’instructions et de données configurable. Bus interne Avalon. Pas de MMU. Produit commercial d’Altera. Linux et Codesign pk/enseirb/2008 - 28 - LE PROCESSEUR SOFTCORE NIOS II NIOS II : LOGICIELS Plateforme de développement Quartus II. Chaîne d’outils GNU (compilation croisée). IDE Eclipse Simulateur ModelSim. OS supportés : µClinux. Portage GPL Version intégré à l’IDE : http://www.niosforum.com/ Version sous Linux : http://nioswiki.jot.com/WikiHome microC/OS II. Produit commercial. Noyau Nucleus. Produit commercial. eCos. Linux et Codesign pk/enseirb/2008 - 29 - PARTIE 4 ENVIRONNEMENT DE DÉVELOPPEMENT DU SYSTEME Linux et Codesign pk/enseirb/2008 - 30 - PLATEFORME POUR LA MISE EN ŒUVRE DU CODESIGN Linux et Codesign pk/enseirb/2008 - 31 - FPGA STRATIX II D’ALTERA Architecture d’un composant Stratix II Linux et Codesign pk/enseirb/2008 - 32 - PROCESSEUR PROPRIÉTAIRE NIOS II Pour rappel, le processeur embarqué NIOS II (version fast) d’Altera choisi possède les caractéristiques suivantes : • Processeur RISC cadencé à 120 MHz (142 DMIPS). • 6 niveaux de pipeline. • 64 Ko de cache d’instructions et de données. • Multiplication et division câblées. • Bus de donnée et d’instruction sur 32bits. • 32 niveaux d’interruption. • 256 instructions personnalisées. Linux et Codesign pk/enseirb/2008 - 33 - ENVIRONNEMENT LOGICIEL Linux et Codesign pk/enseirb/2008 - 34 - LINUX ET L’EMBARQUÉ Pourquoi retrouve-t-on Linux dans l’embarqué ? • Logiciel Libre, disponible gratuitement au niveau source. • Fiabilité reconnu du système. • Portabilité sur différentes plateformes matérielles. • Il est possible d’avoir des versions Temps Réel. • On a un système d’exploitation multitâche. • On a un système de fichiers disponible. • On a une connectivité TCP/IP en standard. Linux et Codesign pk/enseirb/2008 - 35 - LINUX ET L’EMBARQUÉ Linux pour l’embarqué existe donc pour 2 catégories de processeurs 32 bits : 9 Processeur avec MMU (Memory Management Unit) : Linux embarqué : version Linux standard. 9 Processeur sans MMU : µClinux : version Linux adaptée. µClinux est originellement un dérivé du noyau Linux pour les microcontrôleurs sans MMU. Il existe un portage Libre µClinux pour le processeur NIOS II d’Altera. Linux et Codesign pk/enseirb/2008 - 36 - PARTIE 5 PLATEFORME DE TRAITEMENT VIDÉO Linux et Codesign pk/enseirb/2008 - 37 - SYSTÈME DE TRAITEMENT VIDÉO Une plateforme matérielle de traitement vidéo a été réalisée afin de supporter la conception matériel/logiciel (HW/SW codesign). 8 bits Acquisition 24 bits Traitement Restitution Système d’acquisition et de traitement vidéo La plateforme permet l’acquisition et l’affichage des images de 640x480 pixels en 256 niveaux de gris. Linux et Codesign pk/enseirb/2008 - 38 - SYSTÈME DE TRAITEMENT VIDÉO Le coeur du système est une carte cible Altera Stratix II : – – – – – – – – – – Circuit FPGA Stratix II EP2S30F672C5. 1 Mo de SRAM 16 bits, 16 Mo de SDRAM 32 bits, 16 Mo de mémoire Flash. 1 support CompactFlash type I. 1 interface Ethernet 10/100 Mb/s. 2 ports série (RS-232 DB9). 1 connecteur JTAG. 4 boutons poussoirs, 8 leds utilisateurs. 2 afficheurs 7 segments. 1 afficheur LCD 2x16. … Linux et Codesign pk/enseirb/2008 - 39 - SYSTÈME DE TRAITEMENT VIDÉO Linux et Codesign pk/enseirb/2008 - 40 - INTERFACE CAMÉRA Clk_system master_wr Clk_14Mhz 8 Bits master_addrw Contrôle Caméra 32 Bits FIFO 32 Bits DMA 32 Bits LDV master_waitreq FDV Synoptique de l’interface caméra Linux et Codesign pk/enseirb/2008 - 41 - B U S A V A L O N INTERFACE VGA Clk_system B U S Palette de couleur master_addrw 32 Bits master_waitreq DMA 32 Bits FIFO 32 Bits FIFO 32 Bits MUX A V A L O N master_rd 32 Bits Contrôle VGA HS VS Synoptique de l’interface VGA VGA Lancelot : www.fpga.nl Linux et Codesign pk/enseirb/2008 24Bits - 42 - ARCHITECTURE DU SYSTÈME VIDÉO NIOS II processor DMA Camera DMA VGA Arbitrage Bus Avalon SDRAM SRAM µClinux Synchronisation de l’interface Caméra et VGA Un seul contrôleur DMA peut accéder à la mémoire. Le contrôleur DMA-VGA est prioritaire pour ne pas avoir une discontinuité dans l’affichage. Linux et Codesign pk/enseirb/2008 - 43 - GESTION DU TEMPS Le DMA nécessite 3 cycles d’horloge pour transférer un mot de 32 bits. Notre système vidéo doit être capable de fonctionner avec une fréquence minimale de 20,5 MHz. Les accès à la mémoire d’image SRAM par le contrôleur DMA-Camera/VGA ne consomment que 17 % du temps total (l’horloge système est de 120 MHz). Il reste donc 83 % de temps CPU libre pour la partie traitement (codecs vidéo en codesign). Par contre, 100 % du temps CPU est disponible si l’on a accède à la SDRAM. Linux et Codesign pk/enseirb/2008 - 44 - PARTIE 6 IMPLANTATION DU CODEUR H.263 Linux et Codesign pk/enseirb/2008 - 45 - COMPRESSION VIDÉO H.261 (1990) UIT-T H.263 (1995/96) H.263++ (2000) H.263+ (1997/98) H.264 MPEG-4 (2003) MPEG-2 H.262 (1994/95) UIT-T/ MPEG MPEG-2 MPEG-1 (1994) (1992) MPEG 1990 1992 1994 MPEG-4 (1999/00) 1996 1998 2000 Les normes de codage vidéo Linux et Codesign pk/enseirb/2008 - 46 - 2002 2004 NORME H.263 Norme de compression vidéo basée sur la norme H.261 et dédiée à la vidéo à très bas débit sur Internet, réseaux locaux et réseaux mobiles. Débits entre 5 kb/s à 64 kb/s. Incorporée dans le standard de terminal multimédia H.323. Applications : vidéoconférence, visiophonie. Formats vidéo en entrée acceptés : CIF (352x288 pixels). QCIF (176x144 pixels). SQCIF (128x96 pixels). Linux et Codesign pk/enseirb/2008 - 47 - NORME H.263 + - TCD CLV Bitstream Q QI EM : Estimation de Mouvement CM : Compensation de Mouvement Vecteur de mouvement EM/CM TCDI TCD : Transformée en Cosinus Discrète + + TCDI : TCD Inverse Mémoire Q : Quantification QI : Quantification Inverse CLV : Code de Longueur Variable Schéma de codage de la norme H.263 Linux et Codesign pk/enseirb/2008 - 48 - NORME H.263 Le codage INTRA : conduit à une image de type I : Transformée en Cosinus Discrète Quantification Codage entropique Le codage INTER : conduit à des images de type P et B : Estimation de Mouvement Transformée en Cosinus Discrète Quantification Codage entropique Linux et Codesign pk/enseirb/2008 - 49 - CONFIGURATION ETUDIÉE La majorité des codeurs développés le sont sous forme logicielle et ne font pas appel ou peu à des accélérateurs matériels. L’idée de départ a été donc de choisir un tel codeur satisfaisant à la norme H.263 et qui soit suffisamment « générique » et représentatif des différents opérateurs « algorithmiques » utilisés par l’ensemble des différentes normes de compression vidéo. L’accès aux fichiers sources du codeur permettra d’identifier ces opérateurs coûteux en temps de calcul mais qui sont de bons candidats à une implantation matérielle en vue d’une accélération. L’ensemble de l’étude a été faite sous µClinux et exécutée par le processeur NIOS II. Linux et Codesign pk/enseirb/2008 - 50 - APPROCHE DE CODESIGN Notre approche pour la conception HW/SW se compose de trois étapes : 9 Implantation logicielle de l’algorithme. 9 Détection des traitements critiques dans l’algorithme (mesure des temps d ’exécution). 9 Implantation HW/SW de l’algorithme pour optimisation. Linux et Codesign pk/enseirb/2008 - 51 - SÉQUENCES DE TEST (Fichier) Séquences Statiques standards : Claire Akiyo Miss America Séquences Dynamiques standards : Foreman Carphone News Linux et Codesign pk/enseirb/2008 - 52 - ETUDE DE LA COMPLEXITÉ Algorithme de recherche exhaustive (Full Search Block Matching). Fenêtre de recherche +/-15 pixels. Différentes valeurs du pas de quantification (QP=8,13, 31). Utilisation de vidéos QCIF @10 Hz. La qualité de codage est donnée par les valeurs de PSNR (Peak Signal To Noise Ratio) et SSIM (Structural SIMilarity). Linux et Codesign pk/enseirb/2008 - 53 - ETUDE DE LA COMPLEXITÉ CLV Q/QI 0,09% Autres 1,06% 1,18% Contrôle 0,73% TCD/TCDI 36,91% CM 0,35% EM/CM 60,76% SAD 98,92% Répartition du temps CPU par bloc de traitement pour la séquence Miss America à QP=13 Linux et Codesign pk/enseirb/2008 - 54 - ETUDE DE LA COMPLEXITÉ FLASH,SRAM,SDRAM ETHERNET Interface RAM Interface Ethernet CAMERA/VGA Interface Camera/VGA Codeur H.263 3 3 TCDI-2D 3 SAD µClinux USB AVALON TCD-2D NIOS II CPU 3 C.I :Q/QI Timer UART Linux et Codesign pk/enseirb/2008 - 55 - IRQ ESTIMATION DE MOUVEMENT (EM) Codeur H.263 3 3 TCDI-2D 3 AVALON TCD-2D SAD NIOS II CPU 3 C.I :Q/QI Linux et Codesign pk/enseirb/2008 - 56 - ALGORITHME DE BLOCK MATCHING (BMAs) Le Block Matching (BMA) est la méthode d’EM la plus utilisée, vue sa faible complexité algorithmique. Le BMA est basé sur la comparaison d’un Macrobloc (MB : 16x16 pixels) de l’image courante aux MBs de l’image de référence dans une fenêtre de recherche. MB Courant Fenêtre de Recherche Image Courante MB le + Ressemblant Image de Référence Linux et Codesign pk/enseirb/2008 - 57 - ALGORITHME DE BLOCK MATCHING Le critère le plus utilisé pour l’EM est la Somme des valeurs Absolues des Différences (SAD). 15 15 SAD( x, y ) = ∑∑ Ycur(i, j ) − Yprev( x + i, y + j ) j =0 i =0 Avec : Ycur : la luminance du macrobloc courant. Yprev : la luminance du macrobloc de référence. (x,y) : les coordonnées du macrobloc de référence dans la fenêtre de recherche. Linux et Codesign pk/enseirb/2008 - 58 - ALGORITHME DE BLOCK MATCHING Le plus primitif des BMAs est l’algorithme de recherche exhaustive (FS). Fenêtre de recherche Cette méthode cherche l’optimum parmi tous les Vecteurs de Mouvement possibles à l’intérieur de la fenêtre de recherche. Linux et Codesign pk/enseirb/2008 - 59 - COPROCESSEUR SAD data_A data_B 32 A1 B1 Reg Reg - + . 32 A2 B2 Reg A3 Reg - + B3 Reg Reg - + . . A4 B4 Reg Reg - + . L’Unité de Traitement contient modules à 2 entrées sur 8 bits chacune. 4 + 32 Resultat Unité de Traitement 16 Pixels Le module SAD 1x16 permet le calcul du SAD d’une ligne de MB en un cycle. Unité_Contrôle A B UT1 A A B UT2 B UT3 + Calcul du SAD 1x16 Linux et Codesign pk/enseirb/2008 - 60 - A B UT4 Resultat SAD_1x16 COPROCESSEUR SAD 16 Pixels Unité_Contrôle A B A UT1 B B A UT2 A UT3 B UT4 + 16 Pixels Unité_Contrôle A B A UT1 B B A UT2 A UT3 B UT4 + + 16 Pixels Unité_Contrôle A B UT1 A B A UT2 B A UT3 B UT4 + Calcul du SAD 16x16 Resultat SAD_16x16 Linux et Codesign pk/enseirb/2008 - 61 - COPROCESSEUR SAD Cycles d'horloge 200000000 180000000 160000000 140000000 120000000 100000000 80000000 60000000 40000000 20000000 0 SAD_SW Miss America SAD_HW Foreman Nombre de cycles pour le calcul du SAD en SW et HW La solution HW pour le calcul du SAD est 2 fois plus rapide que la solution SW. Pour accélérer le traitement, il existe plusieurs algorithmes de recherche rapides conduisant à des complexités plus faibles : 9 Recherche en Diamant (DS). 9 Recherche en petit Diamant (SDS). 9 Recherche en Croix-Diamant (CDS). 9 Recherche en Hexagone (HEX). Linux et Codesign pk/enseirb/2008 - 62 - EVALUATION DES PERFORMANCES DE L’EM 33 38,5 39 34 32,8 33 38 32,6 32 FS 32,4 DS DS 31 32,2 36 SDS SDS 37,5 35 CDS CDS HEX HEX 34 Y PSNR FS Y PSNR Y PSNR Y PSNR 37 FS FS DS DS SDS SDS 32 30 CDS CDS HEX HEX 31,8 29 31,6 28 31,4 33 27 31,2 36,5 32 144 15 9 16 17 14 18 19 19 26 31 10 50 Rate (kbps) Rate 30 55 5060 70 65 90 70 Rate (kbps) Rate (kbps) PSNR=f(Rate) pour la séquence Miss America PSNR=f(Rate) pour la séquence Foreman La méthode exhaustive donne de meilleure qualité par rapport aux différentes méthodes de recherche rapides… PSNR (Peak Signal To Noise Ratio) Linux et Codesign pk/enseirb/2008 - 63 - EVALUATION DES PERFORMANCES DE L’EM Nombre de cycles des différents algorithmes d’EM Nombre de cycles d'horloge 7000000 6000000 5000000 4000000 QP=8 3000000 QP=13 QP=31 2000000 1000000 0 DS SDS CDS HEX Séquence Foreman Mais la recherche en Hexagone permet une qualité d’image et une rapidité de recherche acceptable. Linux et Codesign pk/enseirb/2008 - 64 - TRANSFORMÉE EN COSINUS DISCRÈTE DIRECT ET INVERSE (TCD/TCDI) Codeur H.263 3 3 TCDI-2D 3 AVALON TCD-2D SAD NIOS II CPU 3 C.I :Q/QI Linux et Codesign pk/enseirb/2008 - 65 - TCD c(k )c(l ) 7 7 ⎛ (2n + 1)kπ yk ,l = 4 ∑∑ xn,m cos⎜⎝ 16 n =0 m =0 avec ⎞ ⎛ (2m + 1)lπ ⎞ ⎟ cos⎜ ⎟ 16 ⎠ ⎝ ⎠ ⎧ 1 ⎪⎪ 2 pour α = 0 c (α ) = ⎨ ⎪1 pour α ≠ 0 ⎪⎩ n,m : sont les coordonnées dans le domaine spatial. k,l : sont les coordonnées dans le domaine fréquentiel. Linux et Codesign pk/enseirb/2008 - 66 - TCD Deux architectures ont été retenues pour l’implantation de TCD/TCDI-2D : 9Architecture de Loeffler utilise 11 MUL et 29 ADD. 9 La méthode de la distribution arithmétique permet d’implanter une somme de produits sans l’utilisation de multiplications. Linux et Codesign pk/enseirb/2008 - 67 - ARCHITECTURE DE LOEFFLER 1ére ETAGE 2éme ETAGE 3éme ETAGE 4éme ETAGE 0 0 1 4 2 2 2 C6 6 3 4 5 7 2 C3 3 2 C1 6 5 7 1 Architecture modifiée de Loeffler Linux et Codesign pk/enseirb/2008 - 68 - DISTRIBUTION ARITHMÉTIQUE yl = ∑ F (a B −1 l ,u ( j) )2 −j − F (a , u l j =1 avec ( ) ∑a F al ,u (j) = 3 m =0 l m u m( j ) B : nombre de bits du coefficient d’entrée um um(j) : est le jème bit de um de valeur 1 ou 0 am : coefficient constant Linux et Codesign pk/enseirb/2008 - 69 - (0) ) IMPLANTATION DE LA TCD 250 F(MHz) 200 150 Loeffler Loeffler_DSP 100 D.A 50 Nombre de cycles d'horloge 120 0 100 80 Loffler 60 Loffler_DSP D.A 40 20 0 TCD TCD TCDI Fréquence de fonctionnement pour la TCD/TCDI TCDI Nombre de cycles pour le traitement d’un bloc 8x8 par la TCD/TCDI l’architecture Loeffler_DSP permet de meilleures performances que l’architecture Loeffler sans DSPs. L’architecture de Loeffler ne nécessite que 11 cycles au lieu de 120 cycles pour la DA. La solution Loeffler_DSP s’avère au minimum 5 fois plus rapide. Linux et Codesign pk/enseirb/2008 - 70 - TCD/TCDI-2D Reset Contrôleur Start Clk Dataavailable Readyfordata Waitrequest Control Data_in Data_out MUX TCD/TCDI 1D Transposition Mémoire Architecture du coprocesseur pour la TCD/TCDI-2D Linux et Codesign pk/enseirb/2008 - 71 - TCD/TCDI-2D DMA NIOS II processor AvalonTM Switch Fabric Arbitrage Arbitrage Bus Avalon E/S RAM TCD/TCDI-2D coprocesseur Connexion du coprocesseur TCD/TCD-2D avec le système embarqué multimédia Le traitement d’un bloc de taille 8x8 nécessite 720 cycles dont 97 cycles pour le traitement matériel par la TCD/TCDI-2D. Linux et Codesign pk/enseirb/2008 - 72 - EVALUATION DU COPROCESSEUR TCD/TCD-2D 140000000 3500000 120000000 3000000 Nombre de cycles d'horloge Nombre de cycles d'horloge Nombre de cycles nécessaires pour le traitement par TCD+TCDI de la séquence Miss America 100000000 80000000 60000000 40000000 20000000 2500000 2000000 1500000 1000000 500000 0 TCD/TCDI_SW_flottant QP=8 QP=13 TCD/TCDI_SW_entier 0 TCD/TCDI_SW_entier QP=8 QP=31 Traitement par TCD/TCDI_SW en flottant et en entier QP=13 TCD/TCDI_HW QP=31 Traitement par TCD/TCDI en SW_entier et HW La solution SW sur des entiers est 37 fois plus rapide que celle sur des réels. La solution HW est 6 fois plus rapide que la solution logicielle sur des entiers. Linux et Codesign pk/enseirb/2008 - 73 - EVALUATION DU COPROCESSEUR TCD/TCD-2D Reconstruction de la 8ème image de la séquence Miss America pour QP=8 Image reconstruite TCD/TCDI_SW_flottant PSNR-Y = 38,27dB PSNR-Cb = 38,61dB PSNR-Cr = 37,83dB SSIM = 0,9945 Image reconstruite TCD/TCDI_SW_entier PSNR-Y = 38,07dB PSNR-Cb = 38,55dB PSNR-Cr = 37,56dB SSIM = 0,9943 Image reconstruite TCD/TCDI_HW PSNR-Y = 38,17dB PSNR-Cb = 38,48dB PSNR-Cr = 37,83dB SSIM = 0,9944 PSNR (Peak Signal To Noise Ratio) & SSIM (Structural SIMilarity) Linux et Codesign pk/enseirb/2008 - 74 - QUANTIFICATION DIRECTE ET INVERSE (Q/QI) Codeur H.263 3 3 TCDI-2D 3 AVALON TCD-2D SAD NIOS II CPU 3 C.I :Q/QI Linux et Codesign pk/enseirb/2008 - 75 - Q/QI Equation de Quantification : ⎧ COF , INTRA ⎪ 2 . QP ⎪ LEVEL = ⎨ QP − COF ⎪ 2 , INTER ⎪ ⎩ 2.QP LEVEL = sign(COF ). LEVEL Equation de Quantification Inverse : ⎧QP.(2. LEVEL + 1), si QP =" impair " REC = ⎨ ⎩ QP.(2. LEVEL + 1) − 1, si QP =" pair" REC = sign( LEVEL). REC La division est effectuée sur des entiers. Utilisation des instructions multi-cycles pour l’implantation de l’équation de Q/QI. Linux et Codesign pk/enseirb/2008 - 76 - IMPLANTATION DE LA Q/QI Clk Dataa 32 Reg Clk x Clk Datab >>16 Comparateur 32 Reg Resultat -127 & 127 32 Reg Architecture de l’instruction pour la Quantification INTRA Clk Dataa 32 Reg Clk Datab 32 Reg + >>1 - Clk x >>16 Comparateur 32 Reg Resultat -127 & 127 Architecture de l’instruction pour la Quantification INTER Linux et Codesign pk/enseirb/2008 - 77 - IMPLANTATION DE LA Q/QI Clk Dataa 32 Reg Datab 32 Reg Datab(0) X Clk <<1 Clk + - -1 M U X 32 Reg Resultat Architecture de l’instruction pour la Quantification Inverse 2 cycles d’horloge sont nécessaires pour l’exécution d’une instruction. Le traitement d’un bloc de taille 8x8 nécessite 1200 cycles dont 128 cycles pour le traitement matériel. Linux et Codesign pk/enseirb/2008 - 78 - EVALUATION DES INSTRUCTIONS DE Q/QI Nombre de cycles nécessaires pour le traitement par Q+QI de la séquence Miss America Nombre de cycles d'horloge 4000000 3500000 3000000 2500000 2000000 1500000 1000000 500000 0 Q/QI_SW QP=8 Q/QI_HW QP=13 QP=31 Traitement par Q/QI en SW et HW La solution HW est 4 fois plus rapide que la solution SW. Linux et Codesign pk/enseirb/2008 - 79 - EVALUATION DES INSTRUCTIONS DE Q/QI Reconstruction de la 8ème image de la séquence Miss America pour QP=8 Image reconstruite SW Image reconstruite HW PSNR-Y = 38,27dB PSNR-Cb = 38,61dB PSNR-Cr = 37,83dB SSIM = 0,9945 PSNR-Y = 38,27dB PSNR-Cb = 38,61dB PSNR-Cr = 37,83dB SSIM = 0,9945 PSNR (Peak Signal To Noise Ratio) & SSIM (Structural SIMilarity) Linux et Codesign pk/enseirb/2008 - 80 - IMPLANTATION HW/SW DU CODEUR H.263 Linux et Codesign pk/enseirb/2008 - 81 - SYSTÈME EMBARQUÉ MULTIMÉDIA FLASH,SRAM,SDRAM ETHERNET Interface RAM Interface Ethernet CAMERA/VGA Interface Camera/VGA Codeur H.263 3 3 TCDI-2D 3 SAD µClinux USB AVALON TCD-2D NIOS II CPU 3 C.I :Q/QI Timer UART Linux et Codesign pk/enseirb/2008 - 82 - IRQ SYSTÈME EMBARQUÉ MULTIMÉDIA Les résultats de l’implantation de notre système embarqué multimédia sur FPGA Stratix II EP2S60 sont : • ALUTs : 20,550/48,352 (43%). • Blocs RAMs : 1,157,888/2,544,192 (46%). • Blocs DSPs : 64/288 (22%). • Broches d’E/S : 181/493 (37%). • PLL : 1/6 (17%). • Fréquence de fonctionnement : 120 MHz. Linux et Codesign pk/enseirb/2008 - 83 - EVALUATION DE L’IMPLANTATION HW/SW DU H.263 (a)1618 ms TCD/TCDI 1,56% Q/QI 1,87% (b)72 ms Autre 2,63% EM/CM 28,53% Autre 51,69% TCD/TCDI 5,62% EM/CM 93,94% Q/QI 14,16% Répartition du temps CPU en utilisant la solution (a) SW et (b) HW/SW pour la séquence Miss America La solution HW/SW du codeur H.263 est 20 fois plus rapide que la solution SW. En utilisant l’approche codesign pour l’implantation du codeur H.263, on arrive à coder des séquences QCIF@15 Hz. Linux et Codesign pk/enseirb/2008 - 84 - ARCHITECTURE DU SYSTÈME VIDÉO 0x2000000 NIOS II processor DMA Camera DMA VGA DMA TCD/ TCDI-2D TCD/TCDI-2D MB-YCbCr Camera acquisition image Arbitrage Arbitrage SRAM coprocesseur TCD/TCDI-2D Bus Avalon SDRAM coprocesseur SAD VGA Image recontruite 0x20FFFFF µClinux Cartographie SRAM Interconnexion des différents périphériques et coprocesseurs Nous appliquons notre codeur sur le flux issu de la caméra. On arrive ainsi à afficher au vol sur le moniteur VGA après décodage des séquences QCIF@15 Hz. Linux et Codesign pk/enseirb/2008 - 85 - SYSTÈME EMBARQUÉ MULTIMÉDIA Linux et Codesign pk/enseirb/2008 - 86 - CONCLUSION Linux et Codesign pk/enseirb/2008 - 87 - CONCLUSION Réalisation d’une plateforme programmable de traitement vidéo dans un environnement de conception en codesign. L’acquisition et la restitution vidéo consomme (à 120 MHz) 17% du temps total. Des accélérateurs matériels tels que le SAD, TCD/TCDI et Q/QI pour le codeur H.263 ont été développés en langage VHDL. En utilisant l’approche codesign pour le codeur H.263, on arrive à coder des séquences QCIF@15 Hz (120 MHz) sous µClinux. Linux et Codesign pk/enseirb/2008 - 88 - CONCLUSION Amélioration d’un facteur du 20 du temps du codage par rapport à la solution tout logicielle. Constitution d’une bibliothèque de modules IP génériques de traitement vidéo afin de l’utiliser dans l’étude d’autres codeurs vidéo dans l’approche codesign. La plateforme réalisée peut supporter différentes normes de compression vidéo telles que H.26x et MPEG. La validité de l’ensemble de l’étude a été aussi vérifiée en l’appliquant à l’ensemble Caméra-VGA. Linux et Codesign pk/enseirb/2008 - 89 - Remerciements : L’exemple du codeur présenté est issu de la thèse soutenue par A. Ben Atitallah, collègue maintenant. Linux et Codesign pk/enseirb/2008 - 90 -