Changes between Version 9 and Version 10 of MjpegCourse/Coproc
- Timestamp:
- Mar 5, 2007, 5:22:45 PM (18 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
MjpegCourse/Coproc
v9 v10 66 66 sources = [ 'src/idct.c' ], 67 67 defines = [ 'WIDTH', 'HEIGHT' ] ), 68 HwTask( IdctCoproc)68 Synthetic() 69 69 ] ) 70 70 }}} … … 81 81 la puissance de calcul requise pour le coprocesseur, une fois celui-ci placé 82 82 dans son environnement de travail. On commence donc par ''encapsuler'' 83 la tâche matérielle {{{idct}}}dans un composant matériel générique appelé ''threader''.83 la tâche matérielle `idct` dans un composant matériel générique appelé ''threader''. 84 84 Ce composant s'interface d'un côté avec le contrôleur MWMR, et de l'autre avec 85 la tâche logicielle 85 la tâche logicielle. 86 86 87 Remplacez la déclaration `HwTask( IdctCoproc )` par une déclaration de coprocesseur matériel virtuel `Synthetic()`. 88 89 L'implémentation `Synthetic()` doit être accompagnée d'une déclaration de tâche logicielle 90 (`SwTask`) et permet la synthèse virtuelle de la tâche. On peut alors déployer la tâche comme si 87 L'implémentation `Synthetic()` sert à déclarer cette implémentation et doit 88 être accompagnée d'une déclaration de tâche logicielle (`SwTask`). 89 Elle permet la synthèse virtuelle de la tâche. On peut alors déployer la tâche comme si 91 90 elle était matérielle, son comportement est simulé. 92 91 93 Le coprocesseur matériel IDCT ,comme beaucoup de coprocesseurs matériels de type ''flot de données'')92 Le coprocesseur matériel IDCT (comme beaucoup de coprocesseurs matériels de type ''flot de données'') 94 93 exécute une boucle infinie dans laquelle if effectue successivement les actions suivantes: 95 94 * recopie d'un bloc de 64 coefficients du canal MWMR d'entrée vers une mémoire locale BUFIN, … … 97 96 * recopie de ces 64 pixels de la mémoire locale BUFOUT vers le canal MWMR de sortie. 98 97 99 Il n'existe aucune référence au temps de calcul dans le code C de la tâche {{{idct}}} logicielle.100 98 Pour modéliser le temps de traitement la tâche matérielle virtuelle plus exacte en temps de simulation, on peut ajouter des directives 101 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: 102 100 `srl_busy_cycles` (voir SrlApi). 103 101 102 Il n'existe aucune référence au temps de calcul dans le code C de la tâche {{{idct}}} logicielle. 104 103 En lisant le code de l'implémentation matérielle du coprocesseur `Idct`, déduisez les temps 105 104 nécessaires aux différentes parties du traitement. … … 107 106 [[Image(MjpegCourse:q.gif)]] En utilisant un coprocesseur virtuel, pour la tâche {{{idct}}}, 108 107 détermidez quel est le gain en performances apporté par le coprocesseur, pour 109 différents temps de traitement (1 cycle, 8 cycles, 64 cycles, 512 cycles ou 2048 cycles108 différents temps de traitement (1 cycle, 8 cycles, 64 cycles, 512 cycles ou 2048 cycles 110 109 pour traiter un bloc de 64 pixels).quel est le temps 111 nécessaire pour décoder 25 images ? Quel rapport à la simulation avec un vrai coprocesseur matériel ?110 nécessaire pour décoder 25 images ? 112 111 113 112 = 3. Coprocesseur matériel = 114 113 115 Ajoutez les directives temporelles dans `src/idct.c`.114 Remplacez la déclaration `Synthetic()` par une déclaration de coprocesseur matériel virtuel `HwTask( IdctCoproc )`. 116 115 117 116 [[Image(MjpegCourse:q.gif)]] Quel est maintenant le temps de simulation nécessaire pour 25 images ?