Changes between Version 3 and Version 4 of MjpegCourse/Coproc
- Timestamp:
- Mar 3, 2007, 12:34:15 AM (18 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
MjpegCourse/Coproc
v3 v4 24 24 * Le code des tâches (`Libu` ne gère qu'un seul pipeline et `Split` n'existe pas) 25 25 26 [[Image(MjpegCourse:q.gif)]] Pour un déploiement entièrement logiciel, quel estle temps27 nécessaire pour décoder 25 images ?26 [[Image(MjpegCourse:q.gif)]] Pour un déploiement entièrement logiciel, rappelez le temps 27 nécessaire pour décoder 25 images. 28 28 29 = 1. Tâche matérielle virtuelle=29 = 1. Tâche matérielle = 30 30 31 == 1.1. Déploiement == 32 33 Ici, la tâche sera virtuellement matérielle dans le sens où nous utiliserons le code 34 C de notre tâche pour implémenter le comportement matériel de l'`Idct`. 31 Maintenant nous allons utiliser un coprocesseur dédié au traitement de l'`Idct`. 35 32 36 33 Ajoutez une déclaration à la tâche `idct`: … … 44 41 sources = [ 'src/idct.c' ], 45 42 defines = [ 'WIDTH', 'HEIGHT' ] ), 46 Synthetic()43 HwTask( IdctCoproc ) 47 44 ] ) 48 45 }}} 46 47 [[Image(MjpegCourse:q.gif)]] Quel est le temps de simulation nécessaire pour décoder 25 images ? 48 49 = 2. Tâche matérielle virtuelle = 50 51 == 2.1. Déploiement == 52 53 Ici, la tâche sera virtuellement matérielle dans le sens où nous utiliserons le code 54 C de notre tâche pour implémenter le comportement matériel de l'`Idct`. 55 56 Remplacez la déclaration `HwTask( IdctCoproc )` par une déclaration de coprocesseur matériel virtuel `Synthetic()`. 57 49 58 L'implémentation `Synthetic()` doit être accompagnée d'une déclaration de tâche logicielle 50 59 (`SwTask`) et permet la synthèse virtuelle de la tâche. On peut alors déployer la tâche comme si … … 52 61 53 62 [[Image(MjpegCourse:q.gif)]] Avec cette tâche déployée en coprocesseur virtuel, quel est le temps 54 nécessaire pour décoder 25 images ? 63 nécessaire pour décoder 25 images ? Quel rapport à la simulation avec un vrai coprocesseur matériel ? 55 64 56 == 1.2. Précision temporelle ==65 == 2.2. Précision temporelle == 57 66 58 67 Pour rendre la tâche matérielle virtuelle plus exacte en temps de simulation, on peut ajouter des directives 59 dans le code source des tâches pour préciser le temps qu'il faudrait pour réaliser la même action en matériel:68 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: 60 69 `srl_busy_cycles` (voir SrlApi). 61 70 62 Insérez dans le code de votre `Idct` un temps de traitement de 8 cycles entre la lecture entière d'un bloc et 63 l'écriture du résultat. 71 En lisant le code de l'implémentation matérielle du coprocesseur `Idct`, déduisez les temps 72 nécessaires aux différentes parties du traitement. 64 73 65 [[Image(MjpegCourse:q.gif)]] Quel est le temps de simulation nécessaire pour 25 images ? 74 == 2.3. Comparaison des implémentations == 66 75 67 = 2. Tâche matérielle = 76 Ajoutez les directives temporelles dans `src/idct.c`. 68 77 69 Maintenant nous allons utiliser un coprocesseur dédié au traitement de l'`Idct`. 70 71 Remplacez la déclaration `Synthetic()` par une déclaration de coprocesseur matériel `HwTask( IdctCoproc )`. 72 73 [[Image(MjpegCourse:q.gif)]] Quel est le temps de simulation nécessaire pour 25 images ? 78 [[Image(MjpegCourse:q.gif)]] Quel est maintenant le temps de simulation nécessaire pour 25 images ? 74 79 75 80 [[Image(MjpegCourse:q.gif)]] Qu'en déduisez-vous sur la différence entre les deux possibilités pour tester