• Aucun résultat trouvé

3.2 Proposition d’un modèle architectural

3.2.3 Définition du mode d’accès aux données

Nous avons vu que la séparation des fonctions d’accès aux données de la partie calcul permettait de réduire significativement les ressources nécessaires à leur exécution. Les fonctions d’accès aux données sont similaires pour l’ensemble des traitements étudiés, ce qui nous permet d’envisager l’utilisation de ressources dédiées. Il s’agit d’apporter directement aux processeurs de calcul les valeurs des pixels qu’ils doivent manipuler.

3.2. Proposition d’un modèle architectural 71 Parallèlisation Sérialisation Processeur de calcul N°NbProcs Processeur de calcul N°n-1 Processeur de calcul N°1 Flux d’entrée Flux de sortie

(a) PARALLÉLISATION D’UN FLUX DE PIXEL VERS NbProcs PROCESSEURS DE CALCUL.

Temps Pixel 11 Px 15 Px 16 Px 17 Px 18 Px 19 Px 20 Px 21 Px 22 Pixel 15 Horloge Pixel Flux entrée Flux N°1 Pixel 12 Pixel 16 Flux N°2 Pixel 13 Pixel 17 Flux N°3 Pixel 14 Pixel 18 Flux N°4 Mémorisation des pixels

(b) CHRONOGRAMME DE LA DISTRIBUTION D’UN FLUX DE PIXELS SURNbProcs= 4PROCESSEURS DE CALCUL.

FIG. 3.17:SCHÉMA ET CHRONOGRAMME DU PROCESSUS DE DISTRIBUTION DES PIXELS AUX DIFFÉRENTS PROCES-

SEURS D’UNE MÊME TUILE DE CALCUL.(a)SCHÉMA DE PRINCIPE DE LA PARALLÉLISATION DES PIXELS VERS LES

NbProcs PROCESSEURS DE CALCUL(b)CHRONOGRAMME DES SIGNAUX CORRESPONDANT AUX FLUX PARALLÉLISÉS

POURNbProcs= 4PROCESSEURS DE CALCUL,ON PEUT VOIR QUE LES PIXELS SONT DISPONIBLES PENDANTNbProcs PÉRIODES PIXELS.

3.2.3.1 Accès au pixel à traiter

La sous-section précédente a présenté l’organisation des processeurs au sein de tuiles de calcul enchaînées les unes à la suite des autres et fonctionnant en mode Multi-SIMD. Les NbProcs processeurs d’une tuile de

calcul peuvent ainsi traiter simultanément NbProcspixels, un pixel étant associé à chaque processeur. Pour cela,

le flux de données est parallélisé, transmis aux processeurs puis sérialisé comme le présente la Figure 3.17a. Pour que les valeurs des pixels soient les mêmes durant toute la durée de l’exécution du traitement, elles sont mémorisées à la sortie du module de parallélisation tous les NbProcspixels.

Comme le montre la Figure 3.17b, les valeurs des pixels à traiter sont disponibles pendant NbProcs cycles

pixels, et automatiquement remises à jour tous les NbProcs pixels. C’est à ce moment que le signal signifiant

le lancement du segment de programme correspondant au pixel à traiter est envoyé pour que les instructions soient lues en mémoire. Les images sont donc traitées par segment de NbProcsvaleurs. Le nombre de cycles

disponibles pour le traitement d’un pixel peut donc être obtenu par l’équation3.7. NbCycles=  ProcesseurClk PixelClk  × NbProcs  (3.7)

3.2.3.2 Accès au voisinage d’un pixel

De nombreux traitements nécessitent généralement les valeurs des pixels avoisinant le pixel à traiter. Or, le mode de distribution présenté précédemment n’est adapté qu’à la distribution de pixels uniques sans leurs voisinages. De plus, la taille du voisinage à considérer dépend des algorithmes à traiter comme nous avons pu le voir précédemment en Table3.4 de la page 52. Pour permettre cela, il est nécessaire de mémoriser les valeurs à transmettre dans des mémoires ligne avant de pouvoir reconstituer le voisinage à manipuler. Comme pour les pixels, ce dernier doit être accessible par les unités de calcul concernées durant toute la durée du traitement. C’est pourquoi nous proposons de remplacer le module de parallélisation vu précédemment par un « gestionnaire de voisinages » qui remplit le même rôle étendu au support de voisinages. Celui-ci doit être

Fluxd

entrée

Mémoires ligne Registres de voisinages Processeur de calcul N° 1 Processeur de calcul N° 2 Processeur de calcul N° NbProcs Sérialisation Fluxdesortie

FIG. 3.18:HIÉRARCHIE MÉMOIRE PERMETTANT LA DISTRIBUTION DES VALEURS DES PIXELS ET DE LEURS VOISI-

NAGES AUX PROCESSEURS D’UNE TUILE DE CALCUL.

adapté à la préparation et à la mise à disposition de voisinages de taille N× M aux processeurs de calcul, avec

N le nombre de lignes et M le nombre de colonnes du masque de voisinage considéré. De plus, ce gestionnaire peut être configuré pour supporter différentes tailles de voisinages.

Comme ce voisinage est constitué de N lignes, il est nécessaire de mémoriser les valeurs des données du flux. Ainsi pour supporter un voisinage de taille 5× 5, la mémorisation d’au moins 4 lignes et 5 pixels sera

nécessaire avant de démarrer le traitement.

Il est toutefois impossible de mémoriser plus d’une trentaine de lignes HD1080p de 1920 pixels de large sur une surface d’un millimètre carré. Comme un gestionnaire de voisinages est destiné à être intégré à chaque tuile de calcul – qui sont au moins au nombre de quatre –, la taille des voisinages qu’ils pourront supporter est naturellement limitée par la surface silicium qui leur est allouée. De plus, cette estimation de l’espace mémoire utilisable ne tient pas compte des composants permettant aux processeurs de calcul d’assurer l’accès aux valeurs des pixels de ces voisinages. En effet la surface qui leur est attribuée peut se révéler conséquente puisque NbProcsdoivent accéder simultanément à ces données.

Comme NbProcs processeurs de calcul sont supposés accéder simultanément à des valeurs de pixels diffé-

rentes stockées dans ces mémoires, elles doivent disposer de NbProcs ports de lecture. La surface silicium de

tels bancs mémoire varie au carré du nombre de ports. C’est pourquoi, nous proposons d’utiliser des mémoires simple port pour la mémorisation des lignes. Celles-ci sont connectées à des « registres de voisinages » qui reconstituent l’ensemble d’un segment de pixels à traiter, comme l’illustre la Figure3.18.

Les processeurs peuvent directement lire l’ensemble des valeurs des pixels qui restent inchangées pendant toute la durée du traitement. De la même manière, un composant dédié, associé ou remplaçant le processeur de calcul, peut accéder simultanément et instantanément à toutes les valeurs du voisinage à traiter. Pendant que les processeurs réalisent le traitement d’un segment de NbProcsvaleurs, les valeurs des registres de voisinages

3.2. Proposition d’un modèle architectural 73

Conclusion sur l’accès aux données

Afin de distribuer le flux de données sous la forme de voisinages directement exploitables par les différents processeurs, nous proposons de nous appuyer sur une hiérarchie mémoire composée de mémoires lignes et de registres de voisinages. Ces derniers sont directement connectés aux processeurs de calcul qui peuvent les lire pendant la durée d’exécution d’un traitement. Comme pour la répartition des processeurs de calcul au sein des tuiles, les mémoires ligne sont des ressources limitées pour lesquelles une organisation optimale ou flexible devra être déterminée.