Changes between Version 7 and Version 8 of MjpegCourse/Coproc
- Timestamp:
- Mar 4, 2007, 11:10:35 AM (18 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
MjpegCourse/Coproc
v7 v8 14 14 15 15 L'introduction d'un ''accélérateur'' matériel n'est pas toujours justifiée. 16 La loi d'Amdhal précise qu'il est in utile d'accélérer un traitement16 La loi d'Amdhal précise qu'il est inefficace d'accélérer un traitement 17 17 qui ne représente qu'une petite partie du temps de calcul total 18 18 de l'application. De plus, il faut prendre en compte les temps … … 20 20 21 21 La tâche IDCT étant la plus gourmande en temps de calcul, nous allons 22 analyser l'implantation de cette tâche comme un processeur matériel spécialisé. 22 analyser les gains de performance apportés par l'implantation de cette tâche 23 comme un processeur matériel spécialisé. 23 24 24 25 Pour éviter de re-écrire toute l'application logicielle, on s'impose que le coprocesseur … … 34 35 Pour simplifier le travail des outils de synthèse, on utilise pour cela un composant 35 36 matériel générique, appelé contrôleur MWMR qui est un initiateur VCI, capable 36 de lire ou d'écrire dans différentes FIFO MWMR, et qui fournit au coprocesseur37 de lire ou d'écrire en mémoire, dans des FIFO MWMR, et qui fournit au coprocesseur 37 38 autant de canaux de communications que celui-ci en a besoin. C'est ce même 38 39 composant matériel qui est utilisé par les composants RAMDAC et TG. … … 52 53 = 1. Modification du TCG = 53 54 54 Il faut commencer par modifier le modèle de la tâche {{{idct}}}, en lui ajoutant une implémentation matérielle, 55 Il faut commencer par modifier le modèle de la tâche {{{idct}}}, 56 en définissant une implémentation matérielle, 55 57 sous forme d'un coprocesseur matériel: 56 58 {{{ … … 76 78 77 79 Avant de se lancer dans la synthèse, il faut donc évaluer précisément 78 l es temps de calcul requispour le coprocesseur, une fois celui-ci placé80 la puissance de calcul requise pour le coprocesseur, une fois celui-ci placé 79 81 dans son environnement de travail. On commence donc par ''encapsuler'' 80 82 la tâche matérielle {{{idct}}} dans un composant matériel générique appelé ''threader''. … … 88 90 elle était matérielle, son comportement est simulé. 89 91 90 [[Image(MjpegCourse:q.gif)]] Avec cette tâche déployée en coprocesseur virtuel, quel est le temps 91 nécessaire pour décoder 25 images ? Quel rapport à la simulation avec un vrai coprocesseur matériel ? 92 Le coprocesseur matériel IDCT, comme beaucoup de coprocesseurs matériels de type ''flot de données'') 93 exécute une boucle infinie dans laquelle if effectue successivement les actions suivantes: 94 * recopie d'un bloc de 64 coefficients du canal MWMR d'entrée vers une mémoire locale BUFIN, 95 * calcul d'un bloc de 64 pixels, et stockage de ces pixels dans une seconde mémoire locale BUFOUT 96 * recopie de ces 64 pixels de la mémoire locale BUFOUT vers le canal MWMR de sortie. 92 97 93 Pour rendrela tâche matérielle virtuelle plus exacte en temps de simulation, on peut ajouter des directives98 Pour modéliser le temps de traitement la tâche matérielle virtuelle plus exacte en temps de simulation, on peut ajouter des directives 94 99 dans le code source C des tâches pour préciser le temps qu'il faudrait pour réaliser la même action en matériel: 95 100 `srl_busy_cycles` (voir SrlApi). … … 97 102 En lisant le code de l'implémentation matérielle du coprocesseur `Idct`, déduisez les temps 98 103 nécessaires aux différentes parties du traitement. 104 105 [[Image(MjpegCourse:q.gif)]] En utilisant un coprocesseur virtuel, pour la tâche {{{idct}}}, 106 détermidez quel est le gain en performances apporté par le coprocesseur, pour 107 différents temps de traitement (1cycle, 8 cycles, 64 cycles, 512 cycles ou 2048 cycles 108 pour traiter un bloc de 64 pixels).quel est le temps 109 nécessaire pour décoder 25 images ? Quel rapport à la simulation avec un vrai coprocesseur matériel ? 99 110 100 111 = 3. Coprocesseur matériel =