Changes between Version 3 and Version 4 of MjpegCourse/Coproc


Ignore:
Timestamp:
Mar 3, 2007, 12:34:15 AM (17 years ago)
Author:
Nicolas Pouillon
Comment:

Inverser l'ordre des exercices, plus intéressant comme ca.

Legend:

Unmodified
Added
Removed
Modified
  • MjpegCourse/Coproc

    v3 v4  
    2424 * Le code des tâches (`Libu` ne gère qu'un seul pipeline et `Split` n'existe pas)
    2525
    26 [[Image(MjpegCourse:q.gif)]] Pour un déploiement entièrement logiciel, quel est le temps
    27 nécessaire pour décoder 25 images ?
     26[[Image(MjpegCourse:q.gif)]] Pour un déploiement entièrement logiciel, rappelez le temps
     27nécessaire pour décoder 25 images.
    2828
    29 = 1. Tâche matérielle virtuelle =
     29= 1. Tâche matérielle =
    3030
    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`.
     31Maintenant nous allons utiliser un coprocesseur dédié au traitement de l'`Idct`.
    3532
    3633Ajoutez une déclaration à la tâche `idct`:
     
    4441                                                 sources = [ 'src/idct.c' ],
    4542                                                 defines = [ 'WIDTH', 'HEIGHT' ] ),
    46                                  Synthetic()
     43                                 HwTask( IdctCoproc )
    4744                                 ] )
    4845}}}
     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
     53Ici, la tâche sera virtuellement matérielle dans le sens où nous utiliserons le code
     54C de notre tâche pour implémenter le comportement matériel de l'`Idct`.
     55
     56Remplacez la déclaration `HwTask( IdctCoproc )` par une déclaration de coprocesseur matériel virtuel `Synthetic()`.
     57
    4958L'implémentation `Synthetic()` doit être accompagnée d'une déclaration de tâche logicielle
    5059(`SwTask`) et permet la synthèse virtuelle de la tâche. On peut alors déployer la tâche comme si
     
    5261
    5362[[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 ?
     63nécessaire pour décoder 25 images ? Quel rapport à la simulation avec un vrai coprocesseur matériel ?
    5564
    56 == 1.2. Précision temporelle ==
     65== 2.2. Précision temporelle ==
    5766
    5867Pour 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:
     68dans 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:
    6069`srl_busy_cycles` (voir SrlApi).
    6170
    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.
     71En lisant le code de l'implémentation matérielle du coprocesseur `Idct`, déduisez les temps
     72nécessaires aux différentes parties du traitement.
    6473
    65 [[Image(MjpegCourse:q.gif)]] Quel est le temps de simulation nécessaire pour 25 images ?
     74== 2.3. Comparaison des implémentations ==
    6675
    67 = 2. Tâche matérielle =
     76Ajoutez les directives temporelles dans `src/idct.c`.
    6877
    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 ?
    7479
    7580[[Image(MjpegCourse:q.gif)]] Qu'en déduisez-vous sur la différence entre les deux possibilités pour tester