Changes between Version 1 and Version 2 of Component/FHT


Ignore:
Timestamp:
Mar 5, 2009, 5:20:10 PM (15 years ago)
Author:
ivan.miro-panades@…
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Component/FHT

    v1 v2  
    99
    1010== 2) Architecture du bloc ==
    11 L'architecture du bloc FHT est composée de deux modules, le cœur et le wrapper. Le cœur effectue tous les traitements FHT. Le wrapper sert à fournir une interface compatible SoClib CABA avec le module MWMR_controller, disponible dans la librairie SoClib.
     11L'architecture du bloc FHT est composée de deux modules, le cœur et le wrapper. Le cœur effectue tous les traitements FHT. Le wrapper sert à fournir une interface compatible !SoClib CABA avec le module MWMR_controller, disponible dans la librairie !SoClib.
    1212
    13 [[Image(aaa.JPG, align=top,nolink)]]
     13[[Image(Diapositive1.GIF, align=top,nolink)]]
    1414
    1515=== 2.1) Interface du bloc FHT ===
     
    3434 * FIFO out: FIFO de sortie des donnés calculées
    3535
    36 [[Image(aaa.JPG, align=top,nolink)]]
     36[[Image(Diapositive2.GIF, align=top,nolink)]]
    3737
    3838Le format de donnés d'entrée complexe a ce format : la partie I (réelle) est sur les 16 bits poids forts et la partie Q (imaginaire) sur les 16 bits poids faibles.
    3939
    40 [[Image(aaa.JPG, align=top,nolink)]]
     40[[Image(Diapositive3.GIF, align=top,nolink)]]
    4141
    4242==== 2.2.1) User mux ====
    4343Le User Multiplexor construit les symboles d’entrées pour la FHT (8, 16 ou 32 complexes) à partir de 2 flots d’entrée. L’origine de chaque complexe est définie par un jeu de 2 masques de 32 bits. Pour chaque bit (i) du jeux des masques, on détermine si la donnée provient de la FIFO 0, FIFO 1 ou elle est nulle.
    4444
    45 [[Image(aaa.JPG, align=top,nolink)]]
     45||''' Mask1(i)'''|| '''Mask0(i)'''  ||  '''Data i'''  ||
     46||       0       ||        0        ||      null      ||
     47||       0       ||        1        ||      fifo_in 0 ||
     48||       1       ||        0        ||      fifo_in 1 ||
     49||       1       ||        1        ||      interdit  ||
     50
    4651
    4752==== 2.2.2) FHT ====
     
    6065
    6166=== 2.3) Anoc_copro_wrapper ===
    62 Les interfaces de communication entre les coprocesseurs développés au CEA-Leti ne sont pas directement compatibles avec les interfaces CABA proposés par SoClib. Pour permettre de faire une conversion de protocole en gardant une fonctionnalité équivalente, un wrapper à été développé.
     67Les interfaces de communication entre les coprocesseurs développés au CEA-Leti ne sont pas directement compatibles avec les interfaces CABA proposés par !SoClib. Pour permettre de faire une conversion de protocole en gardant une fonctionnalité équivalente, un wrapper à été développé.
    6368
    6469L'interface fournie par le module MWMR controller a certaines limitations. Par exemple, le contenu des registres configuration ne peut pas être modifié par le coprocesseur. En outre, si le coprocesseur fait une copie locale de ce registre, il ne peut pas savoir quand le contenu de ces registres été mise à jour.
     
    7479Le wrapper développé a été conçu pour pouvoir supporter plusieurs coprocesseurs avec plusieurs cœurs de calcul. Par contre, le bloc FHT contient uniquement un cœur de calcul, donc tous les registres pour les cœurs 1 à 3 ne sont pas utilisés.
    7580
    76 [[Image(aaa.JPG, align=top,nolink)]]
     81||'''Registre de configuration du MWMR'''  ||   '''Description'''                                                                 ||
     82||@0                                       || Execute: Début d'exécution. Bits 0 à 3, un bit par coeur                            ||
     83||@1                                       || SlotID pour le coeur 0                                                              ||
     84||@2                                       || SlotID pour le coeur 1 (non utilisé)                                                ||
     85||@3                                       || SlotID pour le coeur 2 (non utilisé)                                                ||
     86||@4                                       || SlotID pour le coeur 3 (non utilisé)                                                ||
     87||@5                                       || Adresse de configuration: Définit à quelle adresse débute la configuration du coeur ||
     88
    7789
    7890==== 2.3.2) Registres de status ====
    7991Ces registres sont accessibles uniquement en lecture.
    8092
     93||'''Registre de Status du MWMR'''  ||    '''Description'''                                  ||
     94||@0                                || EOC (End of Compute). Bits 0 à 3 (un bit par coeur)   ||
     95||@1                                || Status du coeur 0                                     ||
     96||@2                                || Status du coeur 1 (non utilisé)                       ||
     97||@3                                || Status du coeur 2 (non utilisé)                       ||
     98||@4                                || Status du coeur 3 (non utilisé)                       ||
    8199
    82 [[Image(aaa.JPG, align=top,nolink)]]
     100
    83101
    84102== 3) Configuration du cœur ==
    85103
    86 [[Image(aaa.JPG, align=top,nolink)]]
     104||'''adresse'''  || '''nom du registre'''  ||  '''bloc dest''' ||   '''contenus'''             ||
     105||128            || fht_conf               ||  core fht        ||   configuration du Core      ||
     106||129            || user_mask0             ||  user mux        ||   masque de l'utilisateur 0  ||
     107||130            || user_mask1             ||  user mux        ||   masque de l'utilisateur 1  ||
    87108
    88 format du registre fht_conf
     109[[BR]]
     110'''format du registre fht_conf'''
     111||'''nom'''           || '''champ'''  ||   '''fonction'''                                           ||
     112||cfg_sat_rst_at_load ||       17     ||  le compteur de saturation est remis à 0 à chaque load_cfg ||
     113||cfg_nb_buf          ||     16:5     ||  nombre de buffers à traiter -1                            ||
     114||cfg_nb_shift        ||      4:2     ||  nombre de positions de décalage                           ||
     115||cfg_fht_sz          ||      1:0     ||  codage de la taille de la FHT                             ||
    89116
    90 [[Image(aaa.JPG, align=top,nolink)]]
    91 
    92 cfg_fht_sz code la taille effective de la FHT sur 2 bits :
    93 
    94 [[Image(aaa.JPG, align=top,nolink)]]
     117[[BR]]
     118'''cfg_fht_sz code la taille effective de la FHT sur 2 bits :'''
     119||'''nombre de points de la FHT''' || '''8''' ||  '''16''' || '''32''' ||
     120||     cfg_fht_sz                  ||    0    ||      1    ||     2    ||
    95121
    96122== 4) Envoi de la configuration du cœur à travers de MWMR ==
     
    132158 * Un MWMR connecté au module FHT
    133159
    134 [[Image(aaa.JPG, align=top,nolink)]]
     160[[Image(Diapositive4.GIF, align=top,nolink)]]
    135161
    136162Tout le code nécessaire pour faire fonctionner le bloc FHT est embarqué dans le MIPS. Nous avons crée une API (api_fht.h) pour permettre une programmation simple de ce bloc. De même, nous avons crée une API (api_mwmr.h et api_mwmr.cpp) pour le MWMR qui intègre toutes les fonctionnalités requises par la API du FHT.