Changes between Version 21 and Version 22 of MjpegCourse/Coproc


Ignore:
Timestamp:
Mar 7, 2007, 1:38:05 AM (17 years ago)
Author:
Nicolas Pouillon
Comment:

Grmbl

Legend:

Unmodified
Added
Removed
Modified
  • MjpegCourse/Coproc

    v21 v22  
    119119}}}
    120120 * Dans la partie déploiement, il faut déployer la tâche {{{idct}}} comme une tâche matérielle
    121    (comme on l'a fait pour les tâches {{{ramdac}}} ou {{{tg}}}.
     121   (comme on l'a fait pour les tâches {{{ramdac}}} ou {{{tg}}}).
    122122{{{
    123123mapper.map("idct0", vci = mapper.hard.vgmn)
     
    126126Le coprocesseur matériel IDCT (comme beaucoup de coprocesseurs matériels orientés "flot de données'")
    127127exécute une boucle infinie dans laquelle il effectue successivement les actions suivantes:
    128  1. recopie d'un bloc de 64 coefficients du canal MWMR d'entrée vers une mémoire locale,
    129  1. calcul d'un bloc de 64 pixels, et stockage de ces pixels dans une seconde mémoire locale,
    130  1. recopie de ces 64 pixels de la mémoire locale vers le canal MWMR de sortie.
     128 1. lecture d'un bloc de 64 coefficients du canal MWMR d'entrée vers une mémoire locale,
     129 1. calcul d'un bloc de 64 pixels, et stockage de ces pixels dans la mémoire locale (distinct du bloc d'entrée),
     130 1. écriture de ces 64 pixels de la mémoire locale vers le canal MWMR de sortie.
    131131
    132132Les temps de communication correspondant aux étapes 1 et 3 sont précisément décrits par le simulateur SystemC,
     
    134134(y compris en cas de contention pour l'accès à la mémoire).
    135135
    136 [[Image(MjpegCourse:q.gif)]] Combien de coefficients sont transférés par cycle sur  l'interface FIFO d'entrée? Combien  de pixels sont
     136[[Image(MjpegCourse:q.gif)]] Combien de coefficients sont transférés par cycle sur l'interface FIFO d'entrée? Combien  de pixels sont
    137137transférés par cycle sur l'interface FIFO de sortie? En déduire les durées minimales (en nombre de cycles) pour les étapes 1 et 3 ci-dessus.
    138138
    139139Le nombre de cycles nécessaires pour exécuter l'étape 2 ci-dessus (temps de calcul pour un bloc de 64 pixels) est
    140140défini par la valeur du paramètre EXEC_TIME, mais si on ne modifie pas le code C de la tâche {{{idct}}}, ce calcul sera effectué
    141 "en temps nul" du point de vue du matériel.
     141"en temps nul" du point de vue du matériel.
     142
    142143Pour préciser le nombre de cycles d'exécution pour l'étape 2, il faut modifier le code C de la tâche {{{idct}}}, et insérer,
    143144entre les deux primitives ''srl_mwmr_read()'' et ''srl_mwmr_write()'',
     
    150151srl_mwmr_write();
    151152}}}
    152 L'argument EXEC_TIME définit le nombre de cycles d'attente entre les
    153 deux primitives de communication, et modélise donc le temps de calcul (voir SrlApi).
    154 
    155 [[Image(MjpegCourse:q.gif)]] pour quelle raison peut-on affirmer sans aucune expérimentation (c'est à dire sans aucune simulation),
    156 qu'il est sans intérêt de synthétiser un coprocesseur matériel dont le temps de calcul soit inférieur à une centaine de cycles?
    157 
    158 Modifier la description DSX pour déployer l'application MJPEG sur une architecture comportant 2 processeurs MIPS et un coprocesseur
    159 ''virtuel'' pour la tâche {{{idct}}}.
     153L'argument définit le nombre de cycles que prendrait une version matérielle du même traitement,
     154et modélise donc le temps de calcul (voir SrlApi). EXEC_TIME est issu des paramètres `defines` de la tâche.
     155
     156[[Image(MjpegCourse:q.gif)]] Pour quelle raison peut-on affirmer sans aucune expérimentation
     157(c'est à dire sans aucune simulation), qu'il est sans intérêt de synthétiser un coprocesseur
     158matériel dont le temps de calcul soit inférieur à une centaine de cycles?
     159
     160Modifier la description DSX pour déployer l'application MJPEG sur une architecture comportant 2
     161processeurs MIPS et un coprocesseur ''virtuel'' pour la tâche {{{idct}}}.
    160162
    161163[[Image(MjpegCourse:q.gif)]] Mesurez le nombre de cycle pour décompresser 25 images,
     
    170172sont 8, 64, 512, et 4096 cycles.
    171173
     174Ce paramètre se passe par les defines. Il porte le même nom (EXEC_TIME).
     175Ceci permet d'avoir une description homogène.
     176
    172177Remplacez dans le modèle DSX de la tâche {{{idct}}}, la déclaration `SyntheticTask()` par
    173178une déclaration de coprocesseur matériel `HwTask( IdctCoproc )`, et relancez la simulation
     
    177182qu'on utilise un processeur réel ou virtuel ?
    178183
    179 [[Image(MjpegCourse:q.gif)]] Quel intérêt a-t-on à utiliser un coprocesseur virtuel ?
     184[[Image(MjpegCourse:q.gif)]] Quel intérêt a-t-on à utiliser un coprocesseur virtuel pendant
     185les phases d'exploration architecturale ?
    180186
    181187= 4. Compte-Rendu =