architecture pour le traitemement du signal et des images

27
INSA de Lyon Département Génie Electrique 5GE Travaux Pratiques Architecture pour le traitemement du signal et des images Correction Debug Version Thomas Grenier Olivier Bernard Dominique Tournier Philippe Delachartre Lyon, le 24 septembre 2018

Upload: others

Post on 20-Jun-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Architecture pour le traitemement du signal et des images

INSA de LyonDépartement Génie Electrique

5GE Travaux Pratiques

Architecture pourle traitemement du signal et des images

Correction Debug Version

Thomas GrenierOlivier Bernard

Dominique TournierPhilippe Delachartre

Lyon, le 24 septembre 2018

Page 2: Architecture pour le traitemement du signal et des images

2 / 27

Page 3: Architecture pour le traitemement du signal et des images

TABLE DES FIGURES TABLE DES MATIÈRES

Table des matières

1 Introduction 41.1 Que vais je faire? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2 Pré-requis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3 Que vais-je apprendre? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.4 Vocabulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.5 Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 Matériel 62.1 La carte EVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 L’ordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3 Machine virtuelle Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.4 Système de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3 Etude de l’architecture 143.1 Optimisations pour le traitement du signal . . . . . . . . . . . . . . . . . . . . . 14

3.1.1 Virgule fixe ou flottante? . . . . . . . . . . . . . . . . . . . . . . . . . 153.1.2 Opérations élémentaires : multiplication et accumulation . . . . . . . . . 153.1.3 Parallélisation des opérations : pipeline . . . . . . . . . . . . . . . . . . 153.1.4 Pipeline et problèmes des sauts conditionnels . . . . . . . . . . . . . . . 163.1.5 Accès multiples à la mémoire . . . . . . . . . . . . . . . . . . . . . . . 17

3.2 OMAP3530 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.3 Compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.3.1 Compilation C pour l’OMAP . . . . . . . . . . . . . . . . . . . . . . . 183.3.2 Projet GPP + DSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4 Débogage distant 234.1 Ouverture du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.2 Compilation avec CCS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.3 Remote debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

5 Applications 265.1 Lecture et affichage d’une vidéo . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Table des figures

1 La carte processeur et le processeur OMAP3530 au centre. . . . . . . . . . . . . 62 Vue de face de la carte OMAP35x EVM. . . . . . . . . . . . . . . . . . . . . . . 73 Vue de derrière de la carte OMAP35x EVM. . . . . . . . . . . . . . . . . . . . . 74 Diagramme fonctionnel de la carte. . . . . . . . . . . . . . . . . . . . . . . . . . 85 Position des interrupteurs SW4. . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Organisation et interactions du PC avec la carte. . . . . . . . . . . . . . . . . . . 107 Icône du raccourci LaunchOMAP. . . . . . . . . . . . . . . . . . . . . . . . . . 108 Opération mono-bloc (a) et en pipeline (b). H représente l’horloge du processeur. 159 Diagramme en blocs de l’OMAP3530. . . . . . . . . . . . . . . . . . . . . . . . 18

3 / 27

Page 4: Architecture pour le traitemement du signal et des images

1 INTRODUCTION

1 Introduction

1.1 Que vais je faire?

Le but de cette séance de TP est d’appréhender les spécificités des architectures modernes detraitement du signal et des images.

Dans un premier temps, vous aller prendre en main la plateforme (système informatique, logi-ciels et la carte Mistral OMAP35x EVM).

Dans un second temps il s’agira d’observer les différences entre les architectures classiques etcelles optimisées pour le traitement du signal. Les observations iront de l’infrastructure électro-nique à la programmation.

Enfin, on s’attardera sur l’architecture logicielle permettant de tirer profit de l’architectureadaptée.

1.2 Pré-requis

La programmation en langage C sera utilisée tout au long de ce TP (IF1). Il est nécessaired’avoir une connaissance minimale du fonctionnement de linux et des commandes élémentaires(ls, cd, exécution d’un programme) lancées dans un terminal (IF4 et autres). Il est nécessaire deconnaitre l’architecture des processeurs (IF2 et IF3) et le traitement du signal (TS). Enfin, unminimum de connaissances en réseau (adresse IP, protocoles FTP, NFS, telnet) vous fera gagnerdu temps. Sinon référez vous aux cours, au net et à l’enseignant.

1.3 Que vais-je apprendre?

Ce qu’il doit rester :— Quelle stratégie pour développer sur des plateformes embarquées (machine virtuelle, boot,

et système de fichiers partagé)— La compilation croisée et le débogue distant— Les intérêts des architectures dédiées pour le traitement du signal

1.4 Vocabulaire

Le PC est équipé d’un système d’exploitation (Windows) dans lequel on créera une machinevirtuelle. L’environnement de la machine virtuelle est optimisé pour les développements informa-tiques de la carte (compilateurs, librairies, échange de fichiers, séquences de démarrage, ...).

Le système d’exploitation virtualisé est Linux Ubuntu 10.04 LTS. On parlera de système vir-tuel ou de machine virtuelle Linux.

Lors des développements, la carte "OMAP35x EVM " sera dite la cible (ou target) et paropposition, la machine virtuelle Linux sera dite l’hôte (host en anglais) 1.

1. En virtualisation, le terme hôte est donné au système d’exploitation hébergeant les machines virtuelles. Dans ceTP on ne s’intéresse pas à la virtualisation.

4 / 27

Page 5: Architecture pour le traitemement du signal et des images

1 INTRODUCTION 1.5 Conventions

1.5 Conventions

Voici quelques conventions de présentation pour la suite du document.

å Ceci correspond a une remarque importante

+ Ceci correspond a une manipulation a realiser

-Ceci correspond a une question dont il faut noter la reponse Et ceci a lacorrection... Visible uniquement dans la version correction.

TODO Ceci est un TODO, qui ne doit apparaitre que dans les versions "Debug" !

5 / 27

Page 6: Architecture pour le traitemement du signal et des images

2 MATÉRIEL

2 Matériel

2.1 La carte EVM

La plateforme est constituée d’un PC et d’une carte OMAP35x EVM 2. Cette carte est à based’un processeur OMAP3 de Texas Instrument et est composée de nombreux périphériques (voir lafigure 2 et 3).

Le processeur n’est pas facilement visible sur cette carte car masqué par le système de pro-tection et différentes cartes filles (notamment celle de la caméra). La figure 1 est une photo de lacarte processeur de l’OMAP35x EVM. Le processeur est plus petit qu’une pièce de 1 euro (mercide ne pas vérifier et de prêter attention au symbole dans le triangle en bas à gauche de la figure 1).

FIGURE 1 – La carte processeur et le processeur OMAP3530 au centre.

La figure 4 présente un diagramme des périphériques de la carte. Des périphériques de la carte,peu vont être utilisés dans ce TP : l’écran tactile, le port Ethernet, le port UART 1/2 , l’audio,l’écran et la vidéo.

+

Verifier le cablage de la carte :

À un cable Ethernet (bleu) entre la carte et le PC,

Á un cable serie (RS-232, gris) entre la carte UART 1/2 et le PC,

 mettre l’interrupteur SW2 sur la position centrale (figure 2),

à brancher l’alimentation.

å

Une et une seule led doit etre allumee. Si plusieurs led s’allument,verifier la position de SW2.Si aucune led ne s’allume (a cote de l’interrupteur SW2), verifier l’ali-mentation du reseau puis appeler un enseignant.

Cette carte dispose de plusieurs séquences de démarrage (bootsequence) différentes (par exemplepar mémoire flash, ou carte SD, ou réseau, etc). Le choix de la séquence est fixé par la valeur desinterrupteurs "SW4 DIP". La figure 5 donne les positions de la séquence de démarrage utilisée

2. evm signifie Evaluation Module

6 / 27

Page 7: Architecture pour le traitemement du signal et des images

2 MATÉRIEL 2.1 La carte EVM

FIGURE 2 – Vue de face de la carte OMAP35x EVM.

FIGURE 3 – Vue de derrière de la carte OMAP35x EVM.

7 / 27

Page 8: Architecture pour le traitemement du signal et des images

2.1 La carte EVM 2 MATÉRIEL

FIGURE 4 – Diagramme fonctionnel de la carte.

8 / 27

Page 9: Architecture pour le traitemement du signal et des images

2 MATÉRIEL 2.2 L’ordinateur

dans ce TP.

å Ne pas piloter les interrupteurs SW4 DIP.

+ ... Mais verifier que SW4 est dans la position decrite a la figure 5

FIGURE 5 – Position des interrupteurs SW4.

Le document OMAP35x EVM Hardware User Guide.pdf, disponible sur C :/tmp/TPOMAPsous windows détaille les rôles et caractéristiques électriques de chaque composant de la carte.Ce document liste aussi l’a répartition des plages d’adresses des différents modules ainsi que lesréglages des switches.

-A quel type de boot correspond la configuration utilisee dans ce TP etillustree par la figure 5? NAND boot (Nand Flash memory ), attention ala lecture des ’switches’ de 1 a 8 dans le pdf ; de 8 a 1 sur la carte !

Nous analyserons plus tard la séquence de démarrage induite par ce choix.

2.2 L’ordinateur

La machine virtuelle linux sur le PC permet de programmer la carte, compiler les programmeset de déboguer. Elle permet aussi de gérer le démarrage de carte OMAP35x EVM.

+ Demarrer le PC et ouvrez une session avec vos identifiants INSA.

La figure 6 présente l’organisation du système informatique. Le système windows :— héberge une machine virtuelle Linux,— assure les liaisons matériel (RS-232, ethernet) avec la carte OMAP35x EVM,— permet de naviguer parmi les documents et sur internet, rédiger votre compte rendu, etc.La carte OMAP35x EVM est reliée au PC par une liaison RS-232 et par une connexion Ether-

net. La liaison série RS-232 permet d’interagir avec la carte dès son démarrage et ainsi permetde superviser, interrompre ou modifier la séquence de démarrage. La communication par le câbleEthernet (protocole IP) est initiée peu après le démarrage de la carte (u-boot). La carte obtient uneadresse IP (dhcp), charge le noyau uImage (tftp), exécute ce noyau, puis monte son système defichier linux (nfs). Les services (dhcp, tftp et nfs) ainsi que les fichiers systèmes nécessaires à lacarte OMAP35x EVM sont fournis par la machine virtuelle.

Tout le monde peut modifier la machine virtuelle linux. Mais pour être sûr de partir d’un état

9 / 27

Page 10: Architecture pour le traitemement du signal et des images

2.3 Machine virtuelle Linux 2 MATÉRIEL

FIGURE 6 – Organisation et interactions du PC avec la carte.

FIGURE 7 – Icône du raccourci LaunchOMAP.

initial "stable", un instantané a été créé. Cet instantané fige l’état de la machine.

+Demarrer la machine virtuelle : double cliquer sur l’icone presentesur le bureau (ou sur le fichier LaunchOMAP.cmd dans c :/O-MAP VM/LaunchOMAP). L’instantane ”TPv2-off” est restaure.

La machine virtuelle Linux démarre.

+Voici le compte a utiliser pour s’identifier dans la machine virtuelle Linux :

— utilisateur : user— mot de passe : insage

2.3 Machine virtuelle Linux

Les services nécessaires au démarrage de la carte OMAP35x EVM sont tous opérationnelsaprès le lancement de la machine virtuelle Linux.

Pour surveiller et interagir pendant le démarrage de la carte, il faut lire et écrire sur le port sérieRS-232 de la carte : UART 1/2. Coté PC, il s’agit de lire et écrire sur le port série 1 (COM1) ou

/dev/ttyS0 sous linux. C’est le rôle du logiciel CuteCom sous linux. å Manip HS au 24/09/2018 : probleme droit acces port COM windows/VM.IP 192.168.1.17

10 / 27

Page 11: Architecture pour le traitemement du signal et des images

2 MATÉRIEL 2.3 Machine virtuelle Linux

+

À Lancer le logiciel Cutecom (icone sur le bureau)

Á Verifier les valeurs des parametres de communication suivants— vitesse : 115200 bauds— port : /dev/ttyS0— nombre de bits de donnees : 8— bit de stop : 1— pas de bit de parite— ouvrir en lecture et ecriture

 Ouvrir le peripherique (cliquer sur ”Open Device” )

Le logiciel écoute maintenant le port série. Il faut démarrer la carte.

+ Pour demarrer la carte, placer l’interrupteur SW2 sur la position droite :”DC IN”.

La carte OMAP35x EVM démarre. Il est possible de la redémarrer grâce aux trois boutonsreset présents en bas à droite sur la carte.

Dans la fenêtre du logiciel Cutecom, les informations de démarrage de la carte s’affichent.

-

Quel type de boot effectue la carte? Faire un lien avec la derniere ques-tion de la partie 2.1 ) : a partir de la memoire NAND (liste exhaustive)

1. le TI X Loader s’execute pour la lecture du programme en NANDqui contient le U-boot (equivalent a un BIOS) ;

2. U-boot envoie les informations (lecture ecriture) sur le port RS-232 et charge le pilote de la carte reseau LAN;

3. BOOTP pour DHCP request (obtenir une IP) ;

4. via TFTP telechargement de l’image noyau (uImage, 2,5Mo) ;

5. chargement en memoire du uImage ;

6. execution du noyau a l’adresse 0x80008000 ;

7. boot classique d’un linux avec obtention d’une adresse IP parDHCP et systeme de fichiers montes en NFS.

-Noter l’adresse IP de la carte OMAP35x EVM (la cible) : 192.168.1.17,pour 2017

+Sur la machine hote, lancer dans un terminal linux (ou console), la com-mande :$ telnet IP-de-la-cible

Si l’adresse IP est correcte, on obtient dans le terminal la même invite d’identification que sousCutecom. Vous communiquez ainsi avec la cible à partir de l’hôte comme s’il s’agissait d’un autre

11 / 27

Page 12: Architecture pour le traitemement du signal et des images

2.4 Système de fichiers 2 MATÉRIEL

ordinateur.

+Via telnet lance sur l’hote, s’identifier sur la cible en tant qu’utilisateurroot (il n’y a pas de mot de passe).

2.4 Système de fichiers

La carte et la machine virtuelle fonctionnent. La machine virtuelle partage avec la carte desfichiers, notamment le système de fichiers de la carte, ceci grâce au protocole NFS.

-Qu’est ce que le protocole NFS? : Network File System, permet departager des fichiers. Surtout utiliser entre systemes UNIX.

Le système de fichiers correspond à l’ensemble des fichiers nécessaires au fonctionnementdu système d’exploitation (fichier de configuration, répertoires standard, drivers, ...). L’intérêt departager des fichiers entre la cible et l’hôte est de pouvoir facilement échanger des programmes oudes données.

+ Dans la fenetre de sortie de Cutecom, retrouver et analyser la ligneKernel Command Line.

-

A quoi correspond la commande :n f sroot = 192.168.1.100 : /opt/evm f ilesystem ?decrit l’adresse IP du serveur nfs (192.168.1.100) pour le systemede fichier (nfsroot) ainsi que son emplacement sur le serveur(/opt/evm f ilesystem).

-

Sur la cible, lister (commande ls) le contenu du repertoire ”/opt”. Sur lamachine hote, ou se trouve ce repertoire ”/opt” de la cible?De maniere general, ou se trouve sur l’hote le systeme de fichiers utilisepar la cible?Le repertoire ”/opt” de la cible est ”/opt/evm filesystem/opt” sur l’hote.Le repertoire ”/opt/evm filesystem” de l’hote est le repertoire racine dusysteme de fichier de la cible (nfs).

+ Verifier que l’ajout d’un fichier sur l’hote est vu par la cible.

Sous linux, la commande df permet d’afficher la taille et l’occupation des disques. Vérifions

12 / 27

Page 13: Architecture pour le traitemement du signal et des images

2 MATÉRIEL 2.4 Système de fichiers

que vous avez tout compris...

-

Executer la commande df sur la cible. A quoi correspond la ligne /?Pourquoi les valeurs sont les memes que pour /opt de l’hote?La ligne ”/” correspond a la racine, c’est a dire au systeme de fichier.Dans ce TP le systeme de fichier de la cible est fourni par l’hote (vianfs). La partition partagee par l’hote est ”/opt”.Remarque avancee (ne pas embrouiller les etudiants...) cotee hote, lereel partage est /opt/evm filesystem qui un repertoire de /opt. Pour lesinformations de taille, nfs ne voit que la partition de montage du partage(ici /dev/sdb1) d’ou la taille de 32Go. Ce qui ne pose pas forcement deprobleme (quota...).Cependant pour verifier l’ampleur des differences : executer du * -shsur /opt de l’hote et sur / de la cible, faire les sommes . . . la cible n’uti-lise donc pas 13Go comme l’indique df mais que 770Mo environ (ligneevm filesystem du du * -sh sur le /opt de l’hote ) !

Les architectures des processeurs de l’OMAP et du PC ne sont pas les mêmes. Malgré le faitque l’on ai utilisé les mêmes commandes sur la cible et sur l’hôte, il ne faut pas se méprendre :les programmes exécutés ne sont pas les même et ceci parce que les architectures des processeurssont différentes (prochaine partie). Pour vous en convaincre, exécutons un programme simple.

-Sur la cible executer le fichier /opt/TP/2.4/toto grace a la commande :# /opt/TP/2.4/totoQue fait ce programme? Il affiche un truc dans la console telnet.

-

Executer ce programme sur l’hote. Pourquoi le programme ne fonc-tionne pas? L’architecture de l’ OMAP35x EVM et du PC ne sont pasles meme ! Le programme toto a ete compile pour le processeur ARMde l’OMAP present sur la cible, pas pour le processeur de l’hote qui estun Intel, cf. question suivante.

-

Verifions les hypotheses precedentes en demandant aux systemes d’af-ficher les informations de leur processeur. Pour l’hote et la cible taper lacommande cat /proc/cpuinfo. Comparer les architectures et les Bogo-MIPS entre les 2 processeurs, il y a un rapport de 10 sur les bogo-MIPS, nombre d’instructions (elementaires : sauts et decrementations)executees par seconde (en million). Cette pseudo mesure permet d’esti-mer la vitesse de traitement d’operations simples par un processeur (unbon manager doit deleguer et synthetiser tres vite), rien a voir avec lesFLOPS plus proches de la capacite calculatoire d’un processeur.

åA ce stade, la plateforme fonctionne et vous avez toutes les informationspour passer a l’etude de l’architecture et executer vos programmes surla cible.

13 / 27

Page 14: Architecture pour le traitemement du signal et des images

3 ETUDE DE L’ARCHITECTURE

3 Etude de l’architecture

Dans cette partie, le but est d’étudier l’architecture de l’OMAP3530.

3.1 Optimisations pour le traitement du signal

Une grande partie du traitement numérique du signal et des images repose sur la notion deproduit scalaire. En effet, une Discrete Fourier Transform ou Discret Cosine Transform, un produitde convolution, un filtrage IIR, un réseau de neurones, ... peuvent se mettre sous la forme :

s[k] =N−1

∑n=0

w[n].e[ f (n,k)] (1)

où w est une fonction de pondération 3, e est un signal, et f est une fonction dépendant de k etou de n réalisant souvent une soustraction ou une addition entre les deux indices. Par exemple unfiltrage FIR d’un signal e par les coefficients du filtre w s’écrit :

s[k] =N−1

∑n=0

w[n].e[n− k] (2)

et une FFT ( j est l’unité imaginaire j2 =−1) :

S[k] =N−1

∑n=0

e[n].exp(−2. j.π.k.n/N) (3)

D’un point de vu informatique, l’opération élémentaire (i.e. qui sera répétée en boucle) duproduit scalaire est s = w[i].e[ j]+ s. Si on cherche à améliorer les performances 4 d’un calculateurdédié au traitement du signal, ceci conduit aux conclusions suivantes :

— un calculateur doit disposer d’opérations de multiplications et d’addition très rapides. Ilfaut aussi que les opérandes et registres manipulés soient de tailles adaptées (nombre debits) pour limiter les imprécisions numériques et les dépassements de capacité.

— les opérations de multiplication et d’addition sont d’un enjeu majeur, il serait même biende disposer d’une opération réalisant successivement une multiplication puis une addition.

— les accès à la mémoire sont nombreux : il s’agit d’accéder à 2 tableaux simultanément,incrémenter des indices, stoker le résultat, lire les instructions... il faudra tirer profit desdifférents bus de données/programme présents et au besoin faire des accès multiples ouanticipés aux mémoires, voir alimenter des mémoires caches de données ou de programme.

— incréments des indices : l’utilisation de pointeurs semble tout indiquée pour gérer les ac-cès aux tableaux. Le passage à l’élément suivant se faisant par incrément (ou décrément)d’un pointeur. Pour conduire à une exécution optimale, cette opération d’addition (simple)pourrait se faire automatiquement à chaque itération et utiliser des registres du processeurs.

— gestion du nombre de répétitions : lors d’un filtrage on connait à l’avance le nombre d’ité-rations. Il faudrait prévoir une instruction permettant de répéter un nombre fixé de fois uneou un groupe d’instructions, sans instructions de sauts ni de test (ceci devant être géré eninterne par le coeur du processeur).

3. w peut dépendre de k et de n4. Vitesse, capacité de calcul, précisions, consommation en énergie, encombrement... sont les enjeux de l’optimisa-

tion de l’architecture

14 / 27

Page 15: Architecture pour le traitemement du signal et des images

3 ETUDE DE L’ARCHITECTURE 3.1 Optimisations pour le traitement du signal

(a) (b)

FIGURE 8 – Opération mono-bloc (a) et en pipeline (b). H représente l’horloge du processeur.

åTous les processeurs ou co-processeurs de calcul actuels disposent desolutions pour chacun des points listes ci-dessus.

TODO

3.1.1 Virgule fixe ou flottante?

3.1.2 Opérations élémentaires : multiplication et accumulation

Un mnémonique est souvent caractéristique de l’opération élémentaire : MAC, pour multiplyand accumulate. Cette instruction permet un en cycle instruction d’effectuer une opération demultiplication et l’accumulation du résultat dans un accumulateur du DSP. Des variantes de cetteinstruction permettent aussi :

— d’effectuer les incrémentions des pointeurs si cette opération est effectuée en boucle surdes vecteurs,

— mettre à jour la ligne de retard : sauvegarder les valeurs précédentes du signal d’entréenécessaires au calcul du filtre.

3.1.3 Parallélisation des opérations : pipeline

Pour un processeur, chaque instruction est décomposée en plusieurs sous-opérations, généra-lement 4 ou 5 pour les architectures RISC, à plus de 10 (voir 30) pour les Pentium. Pour effectuercomplètement l’instruction il faut que toutes ces sous-opérations soient réalisées. Cette successionde sous-opérations est nommée le pipeline (figure 8).

Voici les 5 sous-opérations classiques des architectures RISC :— Instruction Fetch (IF) : Chargement l’instruction à exécuter dans le registre d’instruction,— Instruction Decode (DEC) : Décodage de l’instruction (au sens de l’opération à réaliser et

avec quels registres),— Memory Access (MA) : transfert entre mémoire et un registre (écriture) ou entre un registre

et une mémoire (chargement),— Execute (EX) : exécution l’instruction,— Write Back (WB) : écriture d’un résultat dans un registre (à partir d’un registre ou de la

mémoire).Chaque sous opération s’effectue en un coup d’horloge. Ainsi sur une architecture avec une pro-fondeur de pipeline de 5 sous-opération, une instruction s’exécute complètement en 5 coups d’hor-loge. La table ?? donne le séquençage de l’exécution de deux instructions.

On constate que chaque sous-opération est peu sollicitée... Or, avec un peu d’organisation,on pourrait débuter l’instruction I2 dès que la sous-opération de fetch est disponible. Si les sous-opérations sont suffisamment indépendantes les unes des autres, il est possible de remplir com-

15 / 27

Page 16: Architecture pour le traitemement du signal et des images

3.1 Optimisations pour le traitement du signal 3 ETUDE DE L’ARCHITECTURE

Cycle 1 2 3 4 5 6 7 8 9 10IF I1 I2

DEC I1 I2MA I1 I2EX I1 I2WB I1 I2

TABLE 1 – Exécution de deux instructions I1 et I2 dans un pipeline de profondeur 5 sans parallé-lisation.

Cycle 1 2 3 4 5 6 7 8 9 10IF I1 I2 I3 I4 I5 I6 I7 ...

DEC I1 I2 I3 I4 I5 I6 I7 ...MA I1 I2 I3 I4 I5 I6 I7 ...EX I1 I2 I3 I4 I5 I6 I7WB I1 I2 I3 I4 I5 I6

TABLE 2 – Exécution parallélisée de plusieurs instructions (I1, ... I7) dans un pipeline de profon-deur 5.

plètement le pipeline sans perturber les calculs effectués en parallélisant les instructions sur leursous-opération. On peut ainsi en 10 coups d’horloge exécuter complètement 6 instructions au lieude 2 (table ??) !

En fait si le pipeline ne subi aucune perturbation (en clair : qu’il est tout le temps plein), onobservera qu’une instruction s’exécute en 1 coup d’horloge et ce, quelque soit sa profondeur. Legain de temps est considérable, faut’il encore qu’il soit toujours plein et que les instructions soientbien toutes indépendantes les unes des autres... Ceci est bien sur impossible et la programmationdevra tenir compte de ces contraintes pour tirer le maximum de performances de l’utilisation dupipeline.

Il faut aussi noter que les accès mémoires 5 seront aussi beaucoup plus fréquents : une à deuxfois par cycle instruction (5 coups d’horloge dans l’exemple) sans parallélisation du pipeline, uneà deux fois par coup d’horloge avec parallélisation.

3.1.4 Pipeline et problèmes des sauts conditionnels

Comment limiter l’efficacité d’un pipeline : faire un saut (goto, if, call). Si dans l’exempleprécédent, I2 est un saut à l’instruction I40, tous les traitements sur I3, I4 et I5 n’ont pas d’intérêts(table ??).

Un bon programme sur DSP comportera le moins possible de sauts, tests et interruptions.Mais comment faire pour le filtrage ou pour toute exécution itérative de MAC sur les éléments

d’un tableau? Pour réaliser des boucles dont on connait le nombre de répétition, il existe généra-lement une instruction permettant de répéter sans test et sans vider le pipeline de une à quelquesinstructions (passage par une mémoire programme cache).

TODO

5. L’accès aux mémoires et registres en lecture puis écriture, écriture puis écriture, etc font parties des plus grossesdifficultés à surmonter par rapport à l’indépendance des instructions. Les contraintes matérielles, notamment le tempsd’accès à une mémoire et son temps de réponse à une opération, est aussi un facteur limitant.

16 / 27

Page 17: Architecture pour le traitemement du signal et des images

3 ETUDE DE L’ARCHITECTURE 3.2 OMAP3530

Cycle 1 2 3 4 5 6 7 8 9 10IF I1 I2 I3 I4 I5 I40 I41 ...

DEC I1 I2 I3 I4 I5 I40 I41 ...MA I1 I2 I3 I4 I5 I40 I41 ...EX I1 I2 I3 I4 I5 I40 I41WB I1 I2 I3 I4 I5 I40

TABLE 3 – Exécution parallélisée de plusieurs instructions ou I2 est un saut à l’instruction I40. Lesaut est effectué sur la sous-opération EX de I2.

3.1.5 Accès multiples à la mémoire

3.2 OMAP3530

Quid de l’OMAP?OMAP signifie Open Multimedia Applications Plateform et a été développé par Texas Instru-

ment. Il s’agit d’un SoC (System on Chips) propriétaire destiné aux systèmes embarqués multimé-dia portables et mobiles comme les tablettes, les mini PC portables, les smartphones, les lecteursmultimédia ou les consoles de jeux portables 6.

Les OMAP intègrent un processeur à usage général (General Purpose Processor, GPP) basésur une architecture ARM et un ou plusieurs co-processeurs spécialisés dans certaines tâchescomme un DSP pour les calculs sur les signaux. Les DSP sont des processeurs spécialisés dansle traitement du signal (DSP signifiant Digital Signal Processor dont l’architecture est optimiséepour répondre à la quasi totalité des conclusions du paragraphe précédent.

å

Actuellement tous les SoC utilises pour smartphone, tablette, ... sontbases sur la meme architecture que l’OMAP : un GPP (parfois multi-core) et des co-processeurs (DSP, GPU, ...). L’architecture interne duSoC sera adaptee pour tirer profit des capacites des co-processeurs :taille de bus, memoires caches, acces multiple a la memoire, ...

L’OMAP utilisé dans ce TP est l’OMAP 3530. Il s’agit d’un processeur de la famille OMAP3(la famille OMAP5 est disponible depuis mai 2013). Le diagramme par blocs de l’OMAP3530 estdonné sur la figure 9. Elle détaille l’ensemble des co-processeurs intégrés, les différentes mémoireset les largeurs des bus de données.

-Quelle est la reference du GPP present dans l’OMAP? : ARM cortexA8, (ARMv7), vitesse 600MHz normalement...

- Quelle est la reference du DSP present dans l’OMAP? : C64x+, familledes C6000 de TI

- S’agit t’il d’un DSP a virgule fixe ou flottante? : Virgule fixe

6. http ://en.wikipedia.org/wiki/OMAP

17 / 27

Page 18: Architecture pour le traitemement du signal et des images

3.3 Compilation 3 ETUDE DE L’ARCHITECTURE

(a)

FIGURE 9 – Diagramme en blocs de l’OMAP3530.

3.3 Compilation

3.3.1 Compilation C pour l’OMAP

Commençons par un rappel sur la compilation en langage C. Voici un programme simple"monprog.c" :

1 #include <stdio.h>2

3 int main(void)4 {5 float a;6 float b;7 printf("Hello les etudiants de GE !\n");8 printf("-> entrer la valeur de a : ");9 scanf("%f",&a);

10

11 printf("-> entrer la valeur de b : ");12 scanf("%f",&b);13

14 printf("--> le produit de \%f par \%f est \%f \n", a, b, a*b);15

16 return 0;

18 / 27

Page 19: Architecture pour le traitemement du signal et des images

3 ETUDE DE L’ARCHITECTURE 3.3 Compilation

17 }

+

À Sur l’hote, ouvrir le fichier ”/home/user/TP/3.3/monprog.c”

Á Ouvrir un terminal et se deplacer dans le repertoire ”/home/u-ser/TP/3.3” (commande ”cd”...).

 Compiler monprog.c en tapant dans le terminal :$ gcc monprog.c -o monprog HOTE

à Executer le programme en tapant dans le terminal la commande :$ ./monprog HOTE

Le fichier exécutable est compilé pour le système de l’hôte. Nous allons maintenant compilerle même fichier c mais cette fois-ci pour qu’il puisse être exécuté sur l’OMAP35x EVM. Il ne s’agitplus d’utiliser le compilateur gcc natif mais un compilateur adapté à l’architecture de la cible. Onparle de cross compiler ou de compilateur croisé. CodeSourcery fourni un tel compilateur pour leGPP (ARM) de l’OMAP.

+

À Dans le meme terminal que precedemment, compiler le pro-gramme pour la cible avec la commande :$ arm-none-linux-gnueabi-gcc monprog.c -o monprog GPP

Á Copier monprog GPP dans le repertoire :/opt/evm filesystem/opt/TP/3.3,

 Executer le programme sur la cible.

Nous venons de compiler un programme très simple. Quand les taches de compilation secompliquent (nombreux fichiers, librairies, instructions particulières, cross compilation, ... ) il estavantageux d’utiliser le moteur de production make. Lorsqu’il est appelé, ce logiciel va lire lefichier de configuration Makefile présent dans le répertoire courant. Ce fichier contient l’ensembledes taches à réaliser pour la compilation ainsi que la liste des fichiers, des librairies et les optionsà utiliser.

Un fichier Makefile est présent dans le répertoire "/home/user/TP/3.3". Il permet de compilerle fichier .c pour linux, le GPP et le DSP et d’installer les fichiers pour l’OMAP dans le répertoire

19 / 27

Page 20: Architecture pour le traitemement du signal et des images

3.3 Compilation 3 ETUDE DE L’ARCHITECTURE

/opt/evm_filesystem/opt/TP/3.3.

+

Sur l’hote dans le repertoire ”/home/user/TP/3.3”

À Ouvrir le fichier Makefile.

Á Construire l’executable pour le GPP avec la commande :$ make gpp

 Grace a la commande suivante, copier cet executable dans lerepertoire /opt/evm filesystem/opt/TP/3.3 :$ make gpp install

à Verifier que l’executable produit fonctionne.

Ä En analysant le fichier Makefile, faire de meme pour la compilationla cible linux.

TODO Vérifier makefile : gpp ou arm pour les objets compilés?

-

Un fichier est inclus dans le Makefile, a quoi sert il ? ./Rules.make pa-rametrage des variables de compilation propre a la plateforme. Il faitreference au fichier Rules.make qui contient principalement les cheminsdu DVSDK.

3.3.2 Projet GPP + DSP

Comment exécuter du code sur le DSP? Il faut passer par le GPP et une zone partagée enmémoire. On part du programme précédent (monprog.c) mais on le compile cette fois pour leDSP.

+

Sur l’hote dans le repertoire ”/home/user/TP/3.3”

À Construire l’executable pour le DSP avec la commande :$ make dsp

Á Installer cet executable dans le repertoire/opt/evm filesystem/opt/TP/3.3 :$ make dsp install

 Verifier que l’executable produit fonctionne.

åPour l’execution de monprog dsp, l’affichage ne se fera qu’a la fin : apresle premier message ”Hello...”, entrer les 2 valeurs.

TODO Makefile : OK Attention DSP fonctionne mal et chargement de modules spéciaux :(cmemk adresse) /usr/share/ti/c6run-appsstart 0x8630 0000end 0x8800 0000

20 / 27

Page 21: Architecture pour le traitemement du signal et des images

3 ETUDE DE L’ARCHITECTURE 3.3 Compilation

AUCUN POOL! ! !

TODO Ajuster le Makefile pour les installations indeped de gpp et dsp

-

Comparer les tailles des trois executables produits. Conclusion? Lesexecutables linux et gpp sont relativement proches, par contre celui pourle dsp et largement plus lourd : il faut tout le necessaire au lancementdu programme par le GPP et les instructions dediees du DSP ne sontpas utiles pour le programme monprog.c.

Pour tester la vitesse de calcul, un programme réalisant des FFT a été implémenté et compilépour l’ARM et le DSP.

+Executer sur la cible les programmes cfft dsp et cfft arm. ils se trouventdans le repertoire :”/usr/share/ti/c6run-apps/examples/c6runapp/emqbit”.

å

Si les programme plantes (segfault), il y a une incompatibilite de descrip-tion de l’organisation de la memoire entre le programme et la configura-tion actuelle (systeme d’exploitation). Pour reconfigurer les modules degestion memoire, lancer sur la cible les deux commandes suivantes :

À # /etc/init.d/loadmodule-rc stop

Á # /etc/init.d/loadmodule-rc startpool

-Conclusion? Ben le dsp est plus lent, mais bon l’horloge est plus faibleet le code n’est pas optimise pour le DSP ni les ”floattants” qui devraientetre des nombres a virgules fixes.

21 / 27

Page 22: Architecture pour le traitemement du signal et des images

3.3 Compilation 3 ETUDE DE L’ARCHITECTURE

TODO

22 / 27

Page 23: Architecture pour le traitemement du signal et des images

4 DÉBOGAGE DISTANT

4 Débogage distant

... ou remote debug. Mettre au point un programme sans pouvoir le déboguer est impossible.Surtout quand il s’agit de piloter des périphériques ou programmer plusieurs coeurs...

Rappelons que dans le cadre de la compilation croisée, l’exécution se fait sur un processeurdistant et pour déboguer, il faudra que le processeur distant nous envoie les informations de débo-gage. Deux approches sont possibles :

— utiliser une sonde JTAG directement connectée au processeur sur un bus dédié au dé-bogue (JTAG). Cette solution est particulièrement efficace car elle permet de programmeret suivre l’activité de tous les composants du processeur. Elle nécessite une sonde (aumoins 500Euros, les bonnes sont à 2500Euros) et un logiciel capable d’interagir avec cettesonde (assez onéreux hors cadre universitaire). Ce type de débogue peut porter sur tous lesprocessus exécutés sur le processeur et pas uniquement sur un processus particulier. Pourles SoC 7 dotés de nombreuses unités spécialisées ce type de débogue avec la matérielrecommandé par le constructeur du SoC, permet aussi d’observer et d’ interagir avec lesunités.

— utiliser une connexion Ethernet (TCP/IP) ou série (RS-232) pour les échanges d’informa-tion de débogue : le remote debug. Seuls les programmes exécutés en mode ’debug’ pour-ront être analysés. De même, les co-processeurs et autres unités spécialisées ne peuventpas être débogués directement par cette approche.

Nous allons utiliser la connexion Ethernet en place pour faire du remote debug. Il est confor-table d’utiliser un outil graphique pour suivre le déroulement du programme et interagir avec lesvariables. Nous utiliserons Code Composer Studio qui dans sa version gratuite permet le remotedebug.

åIl y a dans l’OMAP deux coeurs (le GPP et le DSP). Ici nous allonsdeboguer le GPP (l’arm) avec le logiciel Code Composer Studio en re-mote debug.

4.1 Ouverture du projet

La configuration d’un IDE pour un processeur cible sur une plateforme distante est assez labo-rieux et il faut procéder avec ordre. De nombreux tutoriels fournis par le constructeur ou parfois lacommunauté de développeurs/utilisateurs existent et peuvent être suivis ’bêtement’. Globalement,il s’agit

— de paramétrer la tool chain spécifique à la cible (compilateurs, éditeurs de liens, ré-allocateurs,assembleurs, débogueur) ainsi que les bibliothèques utilisées,

— créer un projet pour automatiser les étapes de construction de l’exécutable,— paramétrer les étapes d’exécution sur la cible (ce qui a été fait jusqu’à maintenant avec la

console sur la carte OMAP35x EVM), notamment pour le mode "debug".Cette étape est déjà partiellement faite et disponible dans le "workspace_v5_1" qui doit être

chargé au lancement de CCSv5 disponible sur le bureau.

+Lancer CCSv5 et ouvrir le workspace v5 disponible a l’emplacement/home/user/workspace v5 1

7. System on Chips

23 / 27

Page 24: Architecture pour le traitemement du signal et des images

4.2 Compilation avec CCS 4 DÉBOGAGE DISTANT

4.2 Compilation avec CCS

4.3 Remote debug

Deux étapes :

24 / 27

Page 25: Architecture pour le traitemement du signal et des images

4 DÉBOGAGE DISTANT 4.3 Remote debug

25 / 27

Page 26: Architecture pour le traitemement du signal et des images

5 APPLICATIONS

5 Applications

TODO Filtrer une image

TODO Afficher une image

TODO afficher l’image filtrée

5.1 Lecture et affichage d’une vidéo

Un décodeur de vidéo est disponible sur la cible. Il s’agit du programme decode.

+

Commencer par reconfigurer les modules de gestion memoire : sur lacible executer les deux commandes suivantes :

À # /etc/init.d/loadmodule-rc stop

Á # /etc/init.d/loadmodule-rc start87

Le programme decode se trouve dans /usr/share/ti/dvsdk-demos et les videos dans /usr/share/-ti/data/videos. Il faut exécuter le programme decode à partir du répertoire /usr/share/ti/dvsdk-demos afin que les liens sur les codecs GPP et DSP se fassent.

+ Lire une video ”.m4v”.

-

Donner les lignes utilisees pour lire une video m4vDeux lignes (apres les loadmodules) :

À # cd /usr/share/ti/dvsdk-demos

Á # decode -v ../data/videos/le nom du fichier m4v

-Occupation du GPP et du DSP pendant la lecture?GPP environ 3%, DSP 33%. La gestion de l’affichage est facilite par unmodule specifique de l’OMAP.

Plusieurs formats de fichiers de la même vidéo sont disponibles dans le répertoire /usr/share/-

26 / 27

Page 27: Architecture pour le traitemement du signal et des images

5 APPLICATIONS 5.1 Lecture et affichage d’une vidéo

ti/data/videos.

+ Lire une video ”.264”.

-A quoi correspond le format de fichier ”.264”?format h264, reposant sur le mpeg4, comme le m4v, mais encore pluscompact

-

Comparer les pourcentages d’occupation du GPP et du DSP pour leslectures des formats ”.264” et ”.m4v”, comparer aussi la taille des fichiersvideos. Conclusions?le GPP est utilise globalement de la meme maniere pour les 2 formats,pour le h264 le DSP est plus sollicite. Au niveau des tailles de fichiers(commandes ls -l dans le repertoire des videos) on observe l’efficacitede la compression h264 : le fichier est significativement plus petit que le.m4v, or on n’observe pas de difference de la qualite de rendu video surl’ecran... il y a plus de travail de decompression a faire pour le h264, etle DSP s’en charge.

27 / 27