Changes between Version 9 and Version 10 of MjpegCourse/Coproc


Ignore:
Timestamp:
Mar 5, 2007, 5:22:45 PM (17 years ago)
Author:
Nicolas Pouillon
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MjpegCourse/Coproc

    v9 v10  
    6666                                                 sources = [ 'src/idct.c' ],
    6767                                                 defines = [ 'WIDTH', 'HEIGHT' ] ),
    68                                  HwTask( IdctCoproc )
     68                                 Synthetic()
    6969                                 ] )
    7070}}}
     
    8181la puissance de calcul requise pour le coprocesseur, une fois celui-ci placé
    8282dans 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''.
     83la tâche matérielle `idct` dans un composant matériel générique appelé ''threader''.
    8484Ce composant s'interface d'un côté avec le contrôleur MWMR, et de l'autre avec
    85 la tâche logicielle
     85la tâche logicielle.
    8686
    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
     87L'implémentation `Synthetic()` sert à déclarer cette implémentation et doit
     88être accompagnée d'une déclaration de tâche logicielle (`SwTask`).
     89Elle permet la synthèse virtuelle de la tâche. On peut alors déployer la tâche comme si
    9190elle était matérielle, son comportement est simulé.
    9291
    93 Le coprocesseur matériel IDCT, comme beaucoup de coprocesseurs matériels de type ''flot de données'')
     92Le coprocesseur matériel IDCT (comme beaucoup de coprocesseurs matériels de type ''flot de données'')
    9493exécute une boucle infinie dans laquelle if effectue successivement les actions suivantes:
    9594 * recopie d'un bloc de 64 coefficients du canal MWMR d'entrée vers une mémoire locale BUFIN,
     
    9796 * recopie de ces 64 pixels de la mémoire locale BUFOUT vers le canal MWMR de sortie.
    9897
    99 Il n'existe aucune référence au temps de calcul dans le code C de la tâche {{{idct}}} logicielle.
    10098Pour modéliser le temps de traitement la tâche matérielle virtuelle plus exacte en temps de simulation, on peut ajouter des directives
    10199dans 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:
    102100`srl_busy_cycles` (voir SrlApi).
    103101
     102Il n'existe aucune référence au temps de calcul dans le code C de la tâche {{{idct}}} logicielle.
    104103En lisant le code de l'implémentation matérielle du coprocesseur `Idct`, déduisez les temps
    105104nécessaires aux différentes parties du traitement.
     
    107106[[Image(MjpegCourse:q.gif)]] En utilisant un coprocesseur virtuel, pour la tâche {{{idct}}},
    108107détermidez quel est le gain en performances apporté par le coprocesseur, pour
    109 différents temps de traitement (1cycle, 8 cycles, 64 cycles, 512 cycles ou 2048 cycles
     108différents temps de traitement (1 cycle, 8 cycles, 64 cycles, 512 cycles ou 2048 cycles
    110109pour 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 ?
     110nécessaire pour décoder 25 images ?
    112111
    113112= 3. Coprocesseur matériel =
    114113
    115 Ajoutez les directives temporelles dans `src/idct.c`.
     114Remplacez la déclaration `Synthetic()` par une déclaration de coprocesseur matériel virtuel `HwTask( IdctCoproc )`.
    116115
    117116[[Image(MjpegCourse:q.gif)]] Quel est maintenant le temps de simulation nécessaire pour 25 images ?