• Aucun résultat trouvé

4.2 Limites de la m´ ethodologie et enrichissement des outils

4.2.2 Cache automatique sur DSP

4.2.2.1 Le m´ ecanisme de cache

Le m´ecanisme de cache permet de rapatrier automatiquement les donn´ees utiles en m´emoire interne.

Architecture m´emoire d’un DSP : l’architecture simplifi´ee d’un DSP est donn´ee figure 4.20. Le CPU (Central Processing Unit) est le cœur de calcul. Il acc`ede `a la m´emoire interne `a travers un bus rapide. Un contrˆoleur DMA (Direct Memory Access) g`ere les transferts m´emoire de mani`ere ind´ependante au CPU. L’interface externe permet de connecter de la m´emoire et des p´eriph´eriques additionnels. L’acc`es `a cette m´emoire est tr`es lent `a cause de ses sp´ecificit´es techniques, mais sa taille est grande par rapport aux m´emoires internes.

External memory DSP CPU Internal memory fast bus slow bus External interface DMA Cache controller Peripheral

Fig. 4.20 – Architecture m´emoire d’un DSP

L’acc`es aux donn´ees peut ˆetre optimis´e en utilisant de mani`ere efficace le DMA (les donn´ees sont alors rapatri´ees en avance de mani`ere efficace). Cependant cela n´ecessite des d´eveloppements complexes et longs. L’utilisation du contrˆoleur de cache peut r´eduire le temps de d´eveloppement et est mieux adapt´e dans un processus de proto- typage rapide.

M´ecanisme de cache : quelques DSP int`egrent un contrˆoleur de cache pouvant am´eliorer de mani`ere consid´erable les performances lors de l’acc`es `a la m´emoire ex- terne. Tout ou partie de la m´emoire interne est alors d´edi´ee au cache (elle n’est plus adressable). Lorsque le cache est activ´e, le CPU n’acc`ede plus `a la m´emoire externe directement. Les requˆetes de donn´ees sont envoy´ees au contrˆoleur de cache qui utilise

4.2 limites de la m´ethodologie et enrichissement des outils 95

le DMA pour rapatrier les donn´ees dans le cache (m´emoire interne). Le principal avan- tage est le caract`ere automatique, il n’y a donc pas besoin de modifier le programme. Le contrˆoleur de cache g`ere tous les acc`es du CPU vers la m´emoire externe. Il dirige les requˆetes de donn´ees vers l’adresse cache correspondante, rapatrie les donn´ees de la m´emoire externe si elles ne sont pas d´ej`a en cache. Lorsque la donn´ee est retir´ee du cache, elle est soit simplement invalid´ee (effac´ee) ou r´e´ecrite dans la m´emoire externe en fonction de son statut de modification. Ce m´ecanisme acc´el`ere l’acc`es `a la m´emoire externe : en consid´erant un cas optimal, une donn´ee n’est rapatri´ee qu’une seule fois de la m´emoire externe et r´eutilis´ee `a partir du cache, r´eduisant consid´erablement le temps de traitement.

La coh´erence de cache et les applications multiprocesseurs : avec le m´ecanisme de cache, il coexiste deux copies d’une donn´ee (en m´emoire externe et en cache). Lorsque l’une ou l’autre est modifi´ee, les donn´ees ne sont plus coh´erentes. Un protocole doit ˆetre mis en place de fa¸con `a s’assurer que des donn´ees p´erim´ees ne soient pas acc´ed´ees [TM93]. Le contrˆoleur de cache ne sait pas g´erer la coh´erence dans un contexte multiprocesseur. Nous montrons ici comment utiliser SynDEx et la g´en´eration automatique de code pour palier `a ce manque.

Cache memory External memory

Source data

Result data to be sent to a peripheral (a) data modified by the CPU

Cache memory External memory

Data modified by an external peripheral Outdated data present in L2 cache

(b) data modified by a peripheral

Fig. 4.21 – Gestion de la coh´erence de cache

Nous ne consid´erons que les m´emoires allou´ees par AAA/SynDEx (les donn´ees impliquant une d´ependance sue sur le GFD de l’application). Les autres donn´ees sont le programme ou contenues dans la pile. Ces premi`eres sont prot´eg´ees par des s´emaphores g´en´er´es automatiquement dans l’ex´ecutif. Par cons´equent une donn´ee n’est accessible seulement par le CPU ou un p´eriph´erique `a la fois. Les situations d’incoh´erence de cache apparaissent dans deux situations identifi´ees.

1. Lorsque des donn´ees en cache sont modifi´ees par le CPU et sont en- suite acc´ed´ees par un p´eriph´erique : la donn´ee de sortie de la fonction est allou´ee en m´emoire externe cachable (fig. 4.21-a). Le cache est utilis´ee pour sto- cker temporairement les r´esultats et les donn´ees source. A la fin du calcul, tous

les r´esultats n’ont pas encore ´et´e ´ecrits dans la m´emoire externe. Par cons´equent, elle doit ˆetre mise `a jour avant d’ˆetre acc´ed´ee par un p´eriph´erique.

2. Lorsque des donn´ees cachable sont modifi´ees par un p´eriph´erique : un p´eriph´erique a mis `a jour la m´emoire externe (Fig. 4.21-b). Les adresses correspondantes doivent ˆetre invalid´ees pour empˆecher le CPU de les utiliser. La configuration et la gestion de la m´emoire sont g´en´eralement faites en utilisant des libraires fournies par le fabriquant de DSP. La technique usuelle de gestion du cache est l’utilisation des fonctions “WriteBack()” et “Invalidate()” pour les configurations 1 et 2 respectivement. Avant d’ˆetre accessible par un p´eriph´erique, la coh´erence de cache doit ˆetre appliqu´ee pour ´eviter des conflits de donn´ees. Dans les applications multiprocesseurs d´evelopp´ees avec AAA, les op´erations de niveau syst`eme sont auto- matiquement g´en´er´ees. Il est ´egalement possible de laisser l’outil g´erer la coh´erence de cache.