PROCESSEUR SOFTCORE LIBRE

Dimension: px
Commencer à balayer dès la page:

Download "PROCESSEUR SOFTCORE LIBRE"

Transcription

1 ENSEIRB- MATMECA PROCESSEUR SOFTCORE LIBRE Guillaume JUGLIN Helmi BOUAJLA Hela GUESMI Sully DRU Encadré par Bertrand LEGAL

2 Sommaire I. Introduction... 5 II. Méthodes et choix de l optimisation Présentation du processeur :... 6 a. Le projet plasma :... 6 b. Architecture du processeur et schéma blocs :... 7 c. Plasma et le jeu d instructions MIPS : Contexte du projet_s9 :... 9 a. Méthode d optimisation... 9 b. Moyens et outils mis à disposition : Choix de la méthode a. Objectif b. Identification des besoins c. Ajout d une instruction III. La chaine de compression JPEG Introduction Etude du code des fonctions de la chaine JPEG Modification : iquantification a. Définition de la fonction en VHDL : b. Instruction dans le processeur : c. Test de l instruction : d. Résultats : Modification : RLE a. Définition de la fonction en VHDL : b. Instruction dans le processeur : c. Test de l instruction : d. Résultats : IV. Décodeur MP Présentation : Etude du système : Modification : MULSHIFT a. Instruction dans le processeur : b. Définition de la fonction en VHDL : c. Test de l instruction : Page 2

3 d. Résultats : Modification : MADD a. Définition de la fonction en VHDL : b. Test de l instruction : c. Résultats : V. Conclusion Page 3

4 Table des illustrations : Figure 1 : Carte Spartan 3E... 6 Figure 2: Plasma CPU site... 7 Figure 3: Diagramme bloc... 7 Figure 4: Equipements IMS Figure 5: Ports PCIe Figure 6: Outil Gprof Figure 7:Présentation de la chaine JPEG Figure 8: Compilation de la chaine JPEG à l'aide de gprof Figure 9: Code VHDL dmult Figure 10: Insertion instructions dans le processeur Figure 11:code assembleur généré Figure 12: exécution après l'ajout de l'instruction Figure 13: exécution avant l'ajout de l'instruction Figure 14: Code VHDL de l'instruction outrle Figure 15: code assembleur généré Figure 16: exécution avant l'ajout de l'instruction Figure 17 : exécution après l'ajout de l'instruction Figure 18: Temps exécution sans modification Figure 19: Temps d'exécution des fonctions à l'aide de l'outil Gprof Figure 20: Détermination de la nouvelle instruction Figure 21: Description de l'instruction VHDL de mul_32msb Figure 22: Code assembleur correspondant à la modification Figure 23: Temps d'exécution après modification de MULSHIFT Figure 24: Description de l'instruction VHDL de sum Figure 25: Temps d'exécution après modification de MADD Page 4

5 I. Introduction Ce projet, mené sur 6 semaines, s est déroulé au sein du laboratoire IMS. Il consiste en l optimisation d un cœur de processeur en vue d applications spécifiques telles que la compression JPEG ou encore le décodeur MP3. Le but étant d optimiser les temps de calculs d un processeur plasma par modification de son jeu d instructions, l ajout d instructions assembleur passe par la description de fonctions combinatoires en VHDL destinées à améliorer les possibilités de l ALU (Unité arithmétique et logique). L optimisation d une telle architecture passe par la prise en main du système et des outils mis à disposition au cours de ce projet : l arborescence du cœur de processeur mais aussi un ensemble de testbench pour les différentes applications étudiées. L étude a été mené grâce à une virtualisation du système fourni par l encadrant permettant de réaliser le maximum de tests sans toutefois corrompre le système existant. En plus de saisir l architecture du système, il a fallu également prendre en main les différents algorithmes utilisés dans les applications ciblées. La raison de cette étude algorithmique sera développée plus tard dans ce rapport, après avoir présenté le système cible du projet. Une méthodologie sera également présentée sur l ajout d une nouvelle instruction avant de terminer par des aspects plus concrets avec deux applications directes : la compression JPEG et le décodeur MP Page 5

6 II. Méthodes et choix de l optimisation 1. Présentation du processeur : a. Le projet plasma : Plasma CPU est un domaine public qui a été créé en 2001 par Steve Rhoads. Ce microprocesseur RISC 32-bits, implémenté en VHDL avec 2 ou 3 étages de pipeline, tourne à 25 MHz sur une carte Xilinx Spartan-3E FPGA. Avec un contrôleur d interruption, Contrôleurs UART, SRAM ou DDR SDRAM, et contrôleur Ethernet, ce processeur mène actuellement le serveur web « : Figure 1 : Carte Spartan 3E Page 6

7 Figure 2: Plasma CPU site b. Architecture du processeur et schéma blocs : Le CPU est implémenté avec 2 ou 3 étages de pipeline, avec un étage supplémentaire pour la lecture et l écriture mémoire (read and write). Figure 3: Diagramme bloc Page 7

8 Par exemple une instruction ADD (simple addition) va passer par les étapes suivantes : Etape 0 : - Le conteur programme va passer de l entité "pc_next" à l entité «mem_ctr» qui va chercher l opcode dans la mémoire. Etape 1: - La mémoire renvoie l opcode. Etape 2: - L entité " Mem_ctr" passe l opcode à l entité "Control". - "Control" converti l opcode en un opcode 60-bit et envoie les signaux de contrôle aux autres entités. - Basé sur les signaux de control "rs_index" et "rt_index", "reg_bank" envoie les "reg_source" et "reg_target" (codés sur 32 bits) au "bus_mux". Etape 3 : - Basé sur "a_source" et "b_source", "bus_mux" va multiplexer "reg_source" en "a_bus" et "reg_target" en "b_bus". - Basé sur "alu_func ", "alu" additionnes les valeurs de "a_bus" et "b_bus" et la place le résultat dans "c_bus". - Basé sur "c_source", "bus_mux" va multiplexer "c_bus" dans "reg_dest". - Basé sur "rd_index", "reg_bank" enregistre "reg_dest" dans le registre convenable. Etape 4 : - Ecrire ou lire dans la mémoire si nécessaire. c. Plasma et le jeu d instructions MIPS : - le jeu d instructions : Le jeu d instruction en général est l'ensemble des opérations qu un processeur d ordinateur peut exécuter, c'est-à-dire l'ensemble des circuits logiques qui y sont câblés. Ces circuits permettent d'effectuer des opérations élémentaires (addition, ET logique ) ou plus complexes (division, passage en mode basse consommation ). (RISC). On distingue en général le jeu d'instructions complexe (CISC) et jeu d'instructions réduit Page 8

9 - L'architecture MIPS et le Plasma L architecture MIPS (en anglais : microprocessor without interlocked pipeline stages) est une architecture de processeur de type Reduced instruction set computer (RISC) développée par la société MIPS Technologies (alors appelée MIPS Computer Systems), basée à Mountain View en Californie. Les processeurs fabriqués selon cette architecture ont surtout été utilisés dans les systèmes SGI. On les retrouve aussi dans plusieurs systèmes embarqués, comme les ordinateurs de poche, les routeurs Cisco et les consoles de jeux vidéo. Le processeur Plasma est compatible avec toutes les instructions Mips 1. C'est-à-dire que tout programme compilé avec Mips1 peut être compilé avec le processeur Plasma. 2. Contexte du projet_s9 : Etant donné que le processeur Plasma ne contenant que les instructions standards de base, nous avons été amené dans le cadre de ce projet à apporter des améliorations à ce processeurs permettant d'optimiser son fonctionnement. a. Méthode d optimisation Comme il s agit d un processeur RISC, les instructions, simples par nature, sont exécutées en un seul cycle d'horloge. Donc pour rendre l'exécution des programmes de différentes applications (Compression JPEG, MP3..) plus rapide, on a choisi de l optimiser en lui rajoutant de nouvelles instructions. Cette opération va nous permettre de gagner en termes de temps d exécution. b. Moyens et outils mis à disposition : Le projet se déroule dans le laboratoire IMS où tout est mis en place. Le processeur Plasma sur lequel on va travailler est implanté sur un FPGA qui est relié à l ordinateur par un bus PCIE (PCI Express) comme le montre le schéma suivant : Page 9

10 Figure 4: Equipements IMS - Bus PCIE Le PCI Express, abrégé PCI-E ou PCIe est un standard développé par Intel et introduit en Il spécifie un bus local série («bus PCI express») et un connecteur qui sert à connecter des cartes d extension sur la carte mère d un ordinateur. Il est destiné à remplacer tous les connecteurs d extension d un PC, dont le PCI et l AGP. Figure 5: Ports PCIe La principale raison d avoir utilisé le bus PCI EXPRESS pour dialoguer avec la carte est son débit. En effet, suivant les applications qui pourraient être inclus sur la carte, sa vitesse pourrait être un atout dans son utilisation Page 10

11 3. Choix de la méthode a. Objectif Le but de cette partie est de présenter de manière générale la méthode visant à ajouter une instruction au plasma puis de la mise en œuvre d une procédure de simulation. b. Identification des besoins Pour ajouter des instructions au processeur, on a besoin d un outil qui définit nos besoins en termes de redondances des instructions et le nombre de fois elles sont appelées. L outil Gprof est un des outils qui permet d'apprendre où le programme a dépensé son temps et combien de fois les fonctions étaient appelées. Cette information peut nous montrer quels éléments de notre programme sont plus lents que prévu, et peut-être utile pour la réécriture des programmes pour qu ils s exécutent plus rapidement. Il peut aussi nous dire quelles fonctions sont appelées plus ou moins souvent que prévu. Cela peut nous aider à repérer les bugs qui ont été par ailleurs inaperçus. Gprof est utilisé sur des programmes qui sont trop grandes ou trop complexes à analyser par la lecture de la source. Cependant, la façon dont le programme est exécuté aura une incidence sur l'information qui apparaît dans les données du profil. Si on n'utilise pas une caractéristique du programme pendant qu'il est profilé, aucune information de profil ne sera générée pour cette fonctionnalité. Pour se servir de cet outil, trois étapes sont à suivre : compiler et lier le programme avec un profilage actif. Cela se fait en ajoutant l option -pg au moment de la compilation. > gcc../source/*.c pg o fichier_à_exécuter. Exécuter le programme pour générer un fichier profile de données. Ce fichier sera appelé gmon.out. >. / fichier_à_exécuter Exécuter gprof pour interpréter les informations qui existe dans le fichier gmon.out. On peut mettre l option more pour avoir un affichage optimisé des fonctions appelées. >gprof fichier_à_exécuter Page 11

12 Le résultat de cet outil doit rassembler au schéma ci-dessous : Figure 6: Outil Gprof c. Ajout d une instruction Ce projet a pour but l écriture d instructions machine en VHDL afin d optimiser les temps de traitement du processeur. Cette opération passe à la compréhension globale du système existant. En effet le cœur de traitement s appuie sur une architecture complexe basée sur une arborescence précise. On décrit ci-dessous le processus à suivre pour l ajout d une fonction VHDL. Ecriture de la fonction VHDL : Un répertoire spécifique est créé pour recueillir l ensemble des fonctions ajoutées lors de ce projet : c est le dossier : /home/legal/plasma_s9/vhdl/ims/s9. A l intérieur de ce dossier on ne va ajouter que des fonctions combinatoires, des calculs «élémentaires» ou plus simplement des calculs pouvant se réaliser sur un seul cycle d horloge. Ceci est fait dans l optique d une amélioration sensible des temps de calculs du processeur en remplaçant une suite de fonctions assembleurs par une opération nouvellement crée qui utilisera la description matérielle réalisée dans ce dossier. L opération codée dans cette partie doit se réaliser avec deux entrées de 32 bits et une sortie sur 32 bits. Une fois cette opération réalisée, il faut spécifier à l outil de calcul que la ressource, nouvellement créée, existe et est disponible. Cette opération passe par la modification du fichier «comb_alu1.vhd»(présent dans le répertoire /home/legal/plasma_s9/vhdl/ims/). On y retrouve la convention précitée de 64 bits en entrée et 32 bits en sortie (chaque module devant s adapter à ces ports d entrée/sortie). Plusieurs changements sont nécessaires dans ce fichier : La déclaration du nouveau composant. La création d un nouveau signal intermédiaire pour affecter le résultat du calcul réalisé. L affectation conditionnelle en fonction d un code d opération Page 12

13 A ce stade, notre fonction n est toujours pas effective. Il faut dire au fichier de control («control.vhd» dans le répertoire /home/legal/plasma_s9/vhdl) que notre fonction est effective. Pour ce faire on récupère le code d opération qu on a précédemment établi et on ajoute notre module comme suit (ici on a un exemple d un espace libre et d un espace où on a ajouté une fonction) : when "111010" => --X3C func_alu_comb_1 := func; when "111011" => --X3D a_source := A_FROM_REG_SOURCE; b_source := B_FROM_REG_TARGET; c_source := C_FROM_ALU; alu_function := ALU_NOTHING; shift_function := SHIFT_NOTHING; mult_function := MULT_NOTHING; func_alu_comb_1 := "000101"; Une fois ces opérations effectuées, il reste à modifier un fichier makefile dans le répertoire vhdl/build_dir. Il faut y déclarer le lien symbolique vers le module nouvellement créé (par exemple : $(VHDL_DIR)/ims/S9/SUM_32b.vhd \ ) Création de la fonction assembleur associée : A ce stade on a réalisé un bloc vhdl réalisant une opération mais on n a pas encore déclaré une nouvelle fonction assembleur. Pour ce faire il faut changer de «zone» de travail. On va modifier un fichier du compilateur afin de lui indiquer l existence d une nouvelle fonction. On se place dans le répertoire : /home/legal/build-scripts /work/binutils-2.21/opcodes et on modifie le fichier mips-opc.c. L ajout d une fonction se fait comme suit : {"sumc", "d,s,t",0x d, 0xfc0007ff,WR_d RD_t RD_s, 0,I1} La liaison avec le fichier control.vhd se fait par le code hexadécimal (ici en rouge). Le nom de la fonction assembleur (ici en vert) doit s écrire uniquement en minuscule en utilisant le «.» comme séparateur pour éviter les problèmes par la suite. Une fois toutes ces opérations effectuées, il faut recompiler le noyau pour intégrer l ajout de la ou les nouvelle(s) instruction(s) machine («make && make install» dans le répertoire /home/legal/build-scripts /work/binutils-build). Test de la nouvelle fonctionnalité : Une fois qu on a ajouté la nouvelle fonction assembleur, il faut valider son fonctionnement. Pour cela un fichier est mis à notre disposition. Dans le répertoire /home/legal/plasma_s9/tools/test_asip, on modifie le fichier main.c afin d effectuer des test sur les opérations élémentaires que l on ajoute au cœur de processeur. Pour cela on crée des fonctions dans lesquelles on va appeler les fonctions assembleurs définies au préalable. Cet appel se présente comme suit : inline int instr_sumc(int a, int b){ int res; asm volatile ("sumc %0, %1, %2 \n\t" : "=r" (res) : "r" (a), "r" (b) ); return res; } Page 13

14 Intégration de la fonction assembleur à la chaine de traitement : A ce stade la fonction assembleur est disponible et validée pour intégration dans la chaine de traitement souhaitée. On modifie le code source en fonction des besoins recensés dans le dossier correspondant (ces dossiers de test se trouvent dans /home/legal/plasma_s9/tools/). Après cette modification il faut recompiler la fonction main.c de ce dossier. Ceci génère un fichier «code.txt» qui est directement copié dans le répertoire /home/legal/plasma_s9/vhdl. Ce fichier servira à l élaboration d un testbench dans le dossier /home/legal/plasma_s9/vhdl/build_dir. L exécution du testbench ainsi généré va servir à quantifier l intérêt de la fonction assembleur développée à travers le temps d exécution affiché en fin de simulation. Remarques : Lors de la recompilation dans le dossier build_dir il est important de faire un «make clean» afin que les nouveaux paramètres soient pris en compte. La commande exacte à taper est : make clean && make simtest. Pour évaluer le gain réel il faudrait également faire une synthèse ISE et vérifier si le gain temporel a un rendement réel quant à l occupation spatiale de la fonction développée Page 14

15 III. La chaine de compression JPEG 1. Introduction La compression JPEG est une application très utilisée dans une grande partie des systèmes embarqués. Elle est constituée de plusieurs algorithmes permettant de compresser des données. Ces algorithmes sont très récurrents dans les applications de traitement du signal. La figure ci-dessous présente les différents blocs de la chaine JPEG : DataIN Conversio n Couleurs Quantificat ion DCT ZIGZAG RLE DataOut Figure 7:Présentation de la chaine JPEG La fonction conversion-couleurs permet de passer de la base des couleurs (R,G,B) à la base (Y,Cb,Cr). La fonction quantification consiste à diviser la matrice par une autre, appelée matrice de quantification, et qui contient 8 8 coefficients savamment choisis par le codeur. La fonction DCT définie la transformée de fourrier des différents données. La fonction ZIGZAG est une méthode qui permet de réarranger les données en balayant les matrices dans un ordre différent (zigzag) afin de maximiser la compression des données. La fonction RLE se charge de supprimer la redondance temporelle des informations et de la coder par un couple. 2. Etude du code des fonctions de la chaine JPEG En utilisant l outil gprof, on peut avoir une idée sur l utilisation de chaque fonction de la chaine JPEG et le temps mis par chacune d elle au cours de l exécution. La figure ci-dessous montre le résultat de compilation du programme à l aide de l outil gprof : Figure 8: Compilation de la chaine JPEG à l'aide de gprof Page 15

16 On remarque que les fonctions qui mettent plus du temps à d exécuter sont les fonctions DCT, DCT RLE et Quantification. Les fonctions conversion-couleurs et conversion-couleurs-inverse sont les plus appelées. Donc le travail pour améliorer les performances du processeur consiste à chercher les redondances des instructions les plus couteuses au niveau temporel et essayer de les coder en une seule instruction pour le processeur. 3. Modification : iquantification La première instruction qu on a pu identifier est une instruction dans la fonction iquantification qui consiste à multiplier une matrice par une matrice constante comme on le voit cidessous : Ces lignes de codes permettent de faire 64 multiplications en utilisant 7 instructions à chaque fois. Donc l idée consiste de coder chaque multiplication en une seule instruction du processeur (dmult). En effet les variables tab et qtable sont de type short, donc codée chacune d elle en 16 bits. En jouant sur le fait que le processeur peur accepter deux entrées codées sur 32 bits et une sortie codée sur 32 bits, dmult va assurer une double multiplication tab[y] = tab[y] * qtable[y] et tab[y+1] = tab[y+1] * qtable[y+1] en ayant en entrée tab[i] et tab[i+1] codées en une seule variable de 32 bits et pareillement pour qtable[i] et qtable[i+1]. Ceci va permettre de gagner 384 périodes au niveau de l exécution comme montre le code ci-dessous : a. Définition de la fonction en VHDL : Le code VHDL de cette instruction est développé ci-dessous : Page 16

17 b. Instruction dans le processeur : Figure 9: Code VHDL dmult Une fois le code VHDL est fait on ajoute l instruction au fichier mips-opc.c pour que le processeur en tienne compte : c. Test de l instruction : Figure 10: Insertion instructions dans le processeur Pour vérifier le bon fonctionnement de notre instruction et sa tenue-compte par le processeur, on a lancé un test qui permet de mettre à l entrée deux entiers et d afficher à la sortie de l instruction un entier qui permet de concaténer le résultat de multiplication des 16 bits de poids faible des deux entiers et la multiplication des bits de poids faible dans un seul entier de 32 bits comme on le voit ci-dessous : On peut bien vérifier que le processeur a bien tenu compte de la nouvelle instruction en regardant le code assembleur généré : Figure 11:code assembleur généré Page 17

18 d. Résultats : L exécution de la chaine JPEG avec l ajout de la nouvelle instruction dmult met un temps de ns, alors que son exécution initiale met ns. Figure 12: exécution après l'ajout de l'instruction Figure 13: exécution avant l'ajout de l'instruction Ceci permet de gagner ns à chaque appel de la fonction iquantification. 4. Modification : RLE La deuxième instruction qu on peut ajouter au processeur est l instruction qui se trouve dans la fonction RLE. Cette instruction consiste à remplir le tableau à la sortie de la fonction : Cette ligne de code est appelée jusqu'à 64 fois et utilise à chaque fois 4 instructions. La solution consiste à mettre en entrée deux variables cpt et last codée chacune d elle sur 16 bits et en sortie la variable out. Ce qui nous permet de coder la ligne en un seul cycle d horloge comme précisé ci-dessous : a. Définition de la fonction en VHDL : Le code VHDL de cette instruction est développé ci-dessous : Figure 14: Code VHDL de l'instruction outrle Page 18

19 b. Instruction dans le processeur : Une fois le code VHDL est fait on ajoute l instruction au fichier mips-opc.c pour que le processeur en tienne compte : c. Test de l instruction : Pour tester cette instruction, on a fait le même test que dans l autre instruction et le résultat affiché valide notre raisonnement : On peut bien vérifier que le processeur a bien tenu compte de la nouvelle instruction en regardant le code assembleur généré : d. Résultats : Figure 15: code assembleur généré L exécution de la chaine JPEG avec l ajout de la nouvelle instruction outrle met un temps de ns, alors que son exécution initiale met ns. Figure 16: exécution avant l'ajout de l'instruction Figure 17 : exécution après l'ajout de l'instruction Ceci permet de gagner ns à chaque appel de la fonction RLE Page 19

20 IV. Décodeur MP3 1. Présentation : Le MPEG-1/2 Audio Layer 3, plus connu sous son abréviation de MP3, est la spécification sonore du standard MPEG-1/MPEG-2, du Moving Picture Experts Group (MPEG). C'est un algorithme de compression audio capable de réduire drastiquement la quantité de données nécessaire pour restituer de l'audio, mais qui, pour l'auditeur, ressemble à une reproduction du son original non compressé : avec une bonne compression la différence de qualité devenant difficilement perceptible. Le but de cette partie est donc de créer de nouvelles instructions dans le but d accélérer la vitesse de décompression qui pourrait un problème dans certaines applications et de limiter le pourcentage de temps CPU. 2. Etude du système : Avant de commencer à créer de nouvelles instructions, il est important de connaitre le système à améliorer. Pour cela, nous avons lancé une première exécution pour nous indiquer le temps que le programme met pour s exécuter intégralement. Figure 18: Temps exécution sans modification La photo ci-dessus nous montre que le programme se termine après un peu moins de 48 ms. Maintenant, il suffit de terminer les fonctions du programme qui sont exécutées le plus de fois ou qui prennent le plus de temps. En effet, s il est possible de gagner quelques microsecondes sur une fonction qui est appelée plus de mille fois, le résultat pourrait en être bien intéressant. L outil Gprof permet d avoir une idée sur l utilisation de chaque fonction du décodeur MP3 et le temps mis par chacune d elle au cours de l exécution. La figure ci-dessous montre le résultat de compilation du programme à l aide de l outil Gprof : Page 20

21 Figure 19: Temps d'exécution des fonctions à l'aide de l'outil Gprof La figure ci-dessus nous présente les principales fonctions du décodage MP3 qui prennent le plus de temps ainsi que le nombre de fois ou elles sont appelées. Comme nous pouvons le constater 2 fonctions méritent une attention particulière : MADD64 et MULSHIFT32 En effet, leur nombre d appels est très important par rapport aux autres fonctions du programme. Nous avons plus de 18 millions d appels pour la fonction MADD64 (ce qui représente 25% du temps du programme) et plus de 4 millions pour la fonction MULSHIFT32. Pour information, si nous pouvons diminuer le temps d exécution de 10ns pour MADD64, cela nous ferai gagner 10 ms. Nous allons donc, par la suite, essayer de créer ou modifier des instructions dans un but d optimisation et de gain de temps pour l exécution du programme Page 21

22 3. Modification : MULSHIFT32 La fonction MULSHIFT32 est une fonction permettant de multiplier deux variables de 32bits et de ne récupérer que les bits de poids fort. Le code permettant de réaliser cette fonction est défini ci-dessous : static inline int MULSHIFT32_old(int x, int y) { y = y >> 2; int64 r = ( int64)x * ( int64)y; r = r >> 30; return (int)r; } Nous remarquons que pour réaliser cette fonction, il est nécessaire de faire une multiplication, de faire un décalage et de redimensionner la donnée avant de la renvoyer. Le but est de remplacer c est 3 instructions. Décalage, multiplication et de nouveau décalage en une seule instruction. L implantation du processeur plasma sur un FPGA va nous permettre de créer de nouvelles instructions en langage VHDL utilisable par le processeur. a. Instruction dans le processeur : Tout d abord, il est nécessaire de nommer la nouvelle instruction qui va être utilisée par la suite dans le code de décodeur MP3. Nous allons donc appelé cette nouvelle instruction «mul_32msb» comme définie ci-dessous : Figure 20: Détermination de la nouvelle instruction b. Définition de la fonction en VHDL : Après avoir indiqué au processeur le nom de la fonction, il nous reste plus qu à la définir afin qu elle réalise la fonction désirée. Le code VHDL ci-dessous nous montre le code VHDL permettant de réaliser la multiplication et la récupération des 32 bit de poids fort. Cependant, les fonctions décrites en VHDL ne pourront prendre que 2 données de 32 bit et entrée et 1 donnée de 32 en sortie Page 22

23 Figure 21: Description de l'instruction VHDL de mul_32msb Maintenant que notre nouvelle instruction est définie, il nous suffit de l utiliser dans la fonction MULSHIFT32 et de constater si ce changement nous a permis de gagner du temps dans l exécution du programme. c. Test de l instruction : Après modification, nous remarquons que l opération précédemment réalisée en 3 instructions se réalise en une seule fois à l aide de la nouvelle instruction : mul_32msb static inline int MULSHIFT32(int x, int y) { int res; asm volatile ("mul_32msb %0, %1, %2 \n\t" : "=r" (res) : "r" (x), "r" (y) ); return res; } Le code assembleur ci-dessous nous montre bien l utilisation de la fonction mul_32msb dans le décodage Mp3 et sa réalisation en 1 seule ligne assembleur Page 23

24 Figure 22: Code assembleur correspondant à la modification d. Résultats : Après avoir créée la nouvelle instruction, nous allons maintenant voir si ce changement nous a apporté un gain de temps dans le Décodeur MP3. Pour cela, nous avons lancé une exécution pour nous indiquer le temps que le programme met pour s exécuter intégralement. Figure 23: Temps d'exécution après modification de MULSHIFT32 La photo ci-dessus nous montre que le programme se termine après un peu près 37 ms. Nous avons donc gagné 10 ms (soit 21%) en ne rajoutant qu une nouvelle instruction et en l utilisant seulement dans une fonction Page 24

25 4. Modification : MADD64 La fonction MADD64 est une fonction permettant de multiplier deux variables de 32bits et d additionner ce résultat avec une autre variable. Le code permettant de réaliser cette fonction est défini ci-dessous : static inline int64 MADD64( int64 sum, int x, int y) { int64 mul = (( int64)x * ( int64)y); sum = sum + mul; return sum; } Nous remarquons que pour réaliser cette fonction, il est nécessaire de faire une multiplication et une somme. Pour la multiplication nous allons utiliser la fonction précédemment définie : mul_32msb. Cependant pour la somme 64 bits, nous allons réaliser comme précédemment une fonction «mul_32lsb» qui va réaliser une multiplication de 2 données de 32 bit et ne renvoyer que le 32 bit de poids faible car, comme nous l avons indiqué pour MULSHIFT32, les instructions que nous créons ne peuvent prendre que 2 données de 32 bit en entrée et 1 donnée de 32 bit en sortie. Nous réaliserons aussi une fonction faisant la somme de 2 données de 32 bits. a. Définition de la fonction en VHDL : Après avoir indiqué au processeur le nom de la fonction (mul_32lsb et sum), il nous reste plus qu à les définir afin qu elle réalise la fonction désirée. L instruction «mul_32lsb» ne sera pas décrite car elle est identique à mul_32msb. La différence est que «mul_32lsb» ne revoie que les 32bits de poids faible et non les 32 bit de poids fort. Le code VHDL ci-dessous nous montre le code VHDL permettant de réaliser l addition de 2 données de 32 bit : Figure 24: Description de l'instruction VHDL de sum Page 25

26 b. Test de l instruction : Après modification, nous allons tester notre programme en ayant implanté nos 2 nouvelles instructions ainsi que celle défini précédemment. Voici la définition de la nouvelle fonction MADD64 décrites à l aide des nouvelles instructions. union Uni{ long long a; int b[2]; }; static inline int64 MADD64( int64 sum, int x, int y) { union Uni toto; toto.a = sum; int MulMSB; int MulLSB; asm volatile ("mul_32msb %0, %1, %2 \n\t" : "=r" (MulMSB) : "r" (x), "r" (y) ); asm volatile ("mul_32lsb %0, %1, %2 \n\t" : "=r" (MulLSB) : "r" (x), "r" (y) ); ); ); asm volatile ("sum %0, %1, %2 \n\t" : "=r" (toto.b[0]) : "r" (MulLSB), "r" (toto.b[0]) asm volatile ("sum %0, %1, %2 \n\t" : "=r" (toto.b[1]) : "r" (MulMSB), "r" (toto.b[1]) return toto.a; } La petite astuce est d utiliser une union pour pouvoir partager le même espace mémoire avec 2 variables pour pouvoir stocker le résultat de la somme Page 26

27 c. Résultats : Après avoir créé la nouvelle instruction, nous allons maintenant voir si ce changement nous a apporté un gain de temps dans le Décodeur MP3. Pour cela, nous avons lancé une exécution pour nous indiquer le temps que le programme met pour s exécuter intégralement. Figure 25: Temps d'exécution après modification de MADD64 La photo ci-dessus nous montre que le programme se termine après un peu près 9 ms. Nous avons donc gagné 38 ms (soit 80%). Le résultat est exceptionnel car en ne rajoutant 3 nouvelles instructions nous arrivons à faire baisser considérablement le temps d exécution du programme Page 27

28 V. Conclusion Ce projet nous a permis de toucher de près un SOPC complet ayant comme processeur l OpenCore Plasma. Dans le but d optimiser les performances de ce processeur en termes de temps d exécution, on a été amené à rajouter de nouvelles instructions machine en VHDL. Cette opération passe à la compréhension globale du système existant d architecture complexe. La méthode suivie s est basée sur l étude du code déjà existant afin de rechercher les redondances et trouver un moyen pour remplacer des lignes de code par une seule instruction machine et ainsi gagner en termes de temps d exécution. Certes les instructions ajoutées nous ont permis de gagner un temps remarquable, mais ce résultat n était confirmé que par simulation. On devrait tester les nouvelles fonctionnalités en les implémentant sur la carte et ainsi analyser le comportement réel des programmes sur la plateforme existante. L étape suivante consisterait à conclure au niveau du compromis entre le gain en termes de temps d exécution et la perte au niveau de l occupation matérielle par les instructions ajoutées. Pour finir, nous tenons à remercier notre encadrant pour nous avoir aidé dans ce projet Page 28

Architecture des Ordinateurs. Partie II:

Architecture des Ordinateurs. Partie II: Architecture des Ordinateurs Partie II: Le port Floppy permet le raccordement du lecteur de disquette àla carte mère. Remarque: Le lecteur de disquette a disparu il y a plus de 6 ans, son port suivra.

Plus en détail

ASR1 TD7 : Un microprocesseur RISC 16 bits

ASR1 TD7 : Un microprocesseur RISC 16 bits {Â Ö Ñ º ØÖ Ý,È ØÖ ºÄÓ Ù,Æ ÓÐ ºÎ ÝÖ Ø¹ ÖÚ ÐÐÓÒ} Ò ¹ÐÝÓÒº Ö ØØÔ»»Ô Ö Óº Ò ¹ÐÝÓÒº Ö» Ö Ñ º ØÖ Ý»¼ Ö½» ASR1 TD7 : Un microprocesseur RISC 16 bits 13, 20 et 27 novembre 2006 Présentation générale On choisit

Plus en détail

IV- Comment fonctionne un ordinateur?

IV- Comment fonctionne un ordinateur? 1 IV- Comment fonctionne un ordinateur? L ordinateur est une alliance du hardware (le matériel) et du software (les logiciels). Jusqu à présent, nous avons surtout vu l aspect «matériel», avec les interactions

Plus en détail

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996] Mesure de performances [Architecture des ordinateurs, Hennessy & Patterson, 1996] Croissance des performances des microprocesseurs Avant le milieu des années 80, le gain dépendait de la technologie. Après,

Plus en détail

Exécution des instructions machine

Exécution des instructions machine Exécution des instructions machine Eduardo Sanchez EPFL Exemple: le processeur MIPS add a, b, c a = b + c type d'opération (mnémonique) destination du résultat lw a, addr opérandes sources a = mem[addr]

Plus en détail

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants : GIF-3002 SMI et Architecture du microprocesseur Ce cours discute de l impact du design du microprocesseur sur le système entier. Il présente d abord l architecture du cœur ARM Cortex M3. Ensuite, le cours

Plus en détail

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION 145 NOTION DE PROGRAMMATION 1/ Complétons notre microprocesseur Nous avons, dans les leçons précédentes décrit un microprocesseur théorique, cependant il s inspire du 6800, premier microprocesseur conçu

Plus en détail

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Haute Ecole d Ingénierie et de Gestion Du Canton du Vaud MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Programmation en mode simulation 1. DOCUMENTS DE RÉFÉRENCE...

Plus en détail

Matériel & Logiciels (Hardware & Software)

Matériel & Logiciels (Hardware & Software) CHAPITRE 2 HARDWARE & SOFTWARE P. 1 Chapitre 2 Matériel & Logiciels (Hardware & Software) 2.1 Matériel (Hardware) 2.1.1 Présentation de l'ordinateur Un ordinateur est un ensemble de circuits électronique

Plus en détail

On distingue deux grandes catégories de mémoires : mémoire centrale (appelée également mémoire interne)

On distingue deux grandes catégories de mémoires : mémoire centrale (appelée également mémoire interne) Mémoire - espace destiné a recevoir, conserver et restituer des informations à traiter - tout composant électronique capable de stocker temporairement des données On distingue deux grandes catégories de

Plus en détail

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11)

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11) 1/ Généralités : Un ordinateur est un ensemble non exhaustif d éléments qui sert à traiter des informations (documents de bureautique, méls, sons, vidéos, programmes ) sous forme numérique. Il est en général

Plus en détail

GPA770 Microélectronique appliquée Exercices série A

GPA770 Microélectronique appliquée Exercices série A GPA770 Microélectronique appliquée Exercices série A 1. Effectuez les calculs suivants sur des nombres binaires en complément à avec une représentation de 8 bits. Est-ce qu il y a débordement en complément

Plus en détail

Une version javascript sera disponible directement dans le cours prochainement.

Une version javascript sera disponible directement dans le cours prochainement. Author : Cédric Vanconingsloo Ce cours est principalement axé sur la compréhension du fonctionnement d'un ordinateur et l'étude du seul langage qu'il connaisse, le binaire. De ce fait, le cours est relativement

Plus en détail

La mémoire. Un ordinateur. L'octet. Le bit

La mémoire. Un ordinateur. L'octet. Le bit Introduction à l informatique et à la programmation Un ordinateur Un ordinateur est une machine à calculer composée de : un processeur (ou unité centrale) qui effectue les calculs une mémoire qui conserve

Plus en détail

Démontage d'un ordinateur

Démontage d'un ordinateur Espaces multimédias Communauté de Communes Moyenne Vilaine et Semnon : Démontage d'un ordinateur 1- A quoi sert-il de démonter son ordinateur? A) Par simple curiosité B) Pour nettoyer C) Pour remplacer

Plus en détail

PROJET ALGORITHMIQUE ET PROGRAMMATION II

PROJET ALGORITHMIQUE ET PROGRAMMATION II PROJET 1 ALGORITHMIQUE ET PROGRAMMATION II CONTENU DU RAPPORT A RENDRE : o Fiche signalétique du binôme o Listing des différents fichiers sources o CD sources o Il sera tenu compte de la présentation du

Plus en détail

Cours Informatique 1. Monsieur SADOUNI Salheddine

Cours Informatique 1. Monsieur SADOUNI Salheddine Cours Informatique 1 Chapitre 2 les Systèmes Informatique Monsieur SADOUNI Salheddine Un Système Informatique lesystème Informatique est composé de deux parties : -le Matériel : constitué de l unité centrale

Plus en détail

Compilation (INF 564)

Compilation (INF 564) Présentation du cours Le processeur MIPS Programmation du MIPS 1 Compilation (INF 564) Introduction & architecture MIPS François Pottier 10 décembre 2014 Présentation du cours Le processeur MIPS Programmation

Plus en détail

Transmission d informations sur le réseau électrique

Transmission d informations sur le réseau électrique Transmission d informations sur le réseau électrique Introduction Remarques Toutes les questions en italique devront être préparées par écrit avant la séance du TP. Les préparations seront ramassées en

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007 Introduction à l architecture des ordinateurs Adrien Lebre Décembre 2007 Plan - partie 1 Vue d ensemble La carte mère Le processeur La mémoire principal Notion de bus Introduction à l architecture des

Plus en détail

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs Cours 4 5 novembre 2012 Archi 1/22 Micro-architecture Archi 2/22 Intro Comment assembler les différents circuits vus dans les cours précédents pour fabriquer un processeur?

Plus en détail

Rappels d architecture

Rappels d architecture Assembleur Rappels d architecture Un ordinateur se compose principalement d un processeur, de mémoire. On y attache ensuite des périphériques, mais ils sont optionnels. données : disque dur, etc entrée

Plus en détail

Représentation d un entier en base b

Représentation d un entier en base b Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

ACTIVITÉ DE PROGRAMMATION

ACTIVITÉ DE PROGRAMMATION ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,

Plus en détail

Informatique Industrielle Année 2004-2005. Architecture des ordinateurs Note de cours T.Dumartin

Informatique Industrielle Année 2004-2005. Architecture des ordinateurs Note de cours T.Dumartin Informatique Industrielle Année 2004-2005 Architecture des ordinateurs Note de cours T.Dumartin 1 GENERALITES 5 1.1 INTRODUCTION 5 1.2 QU ENTEND-T-ON PAR ARCHITECTURE? 5 1.3 QU EST CE QU UN MICROPROCESSEUR?

Plus en détail

Architecture des ordinateurs Introduction à l informatique

Architecture des ordinateurs Introduction à l informatique Architecture des ordinateurs Introduction à l informatique 17 septembre 2004 1 2 3 4 5 6 Les interrupteurs... 0V 5V Ce sont des composants électroniques qui laissent pser un courant principal lorsque la

Plus en détail

Cours 3 : L'ordinateur

Cours 3 : L'ordinateur Cours 3 : L'ordinateur Abdelkrim Zehioua 2éme année Licence Gestion Faculté des sciences Économiques et sciences de Gestion Université A, Mehri - Constantine 2 Plan du cours 1.Définitions de l'ordinateur

Plus en détail

TD : Codage des images

TD : Codage des images TD : Codage des images Les navigateurs Web (Netscape, IE, Mozilla ) prennent en charge les contenus textuels (au format HTML) ainsi que les images fixes (GIF, JPG, PNG) ou animée (GIF animée). Comment

Plus en détail

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique Architecture d ordinateur : introduction Dimitri Galayko Introduction à l informatique, cours 1 partie 2 Septembre 2014 Association d interrupteurs: fonctions arithmétiques élémentaires Elément «NON» Elément

Plus en détail

Conception de circuits numériques et architecture des ordinateurs

Conception de circuits numériques et architecture des ordinateurs Conception de circuits numériques et architecture des ordinateurs Frédéric Pétrot Année universitaire 2014-2015 Structure du cours C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 Codage des nombres en base 2, logique

Plus en détail

ISO/CEI 11172-3 NORME INTERNATIONALE

ISO/CEI 11172-3 NORME INTERNATIONALE NORME INTERNATIONALE ISO/CEI 11172-3 Première édition 1993-08-01 Technologies de l information - Codage de l image animée et du son associé pour les supports de stockage numérique jusqu à environ Ii5 Mbit/s

Plus en détail

Tout savoir sur le matériel informatique

Tout savoir sur le matériel informatique Tout savoir sur le matériel informatique Thème de l exposé : Les Processeurs Date : 05 Novembre 2010 Orateurs : Hugo VIAL-JAIME Jérémy RAMBAUD Sommaire : 1. Introduction... 3 2. Historique... 4 3. Relation

Plus en détail

Leçon 1 : Les principaux composants d un ordinateur

Leçon 1 : Les principaux composants d un ordinateur Chapitre 2 Architecture d un ordinateur Leçon 1 : Les principaux composants d un ordinateur Les objectifs : o Identifier les principaux composants d un micro-ordinateur. o Connaître les caractéristiques

Plus en détail

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN 1. DÉVELOPPEMENT D'APPLICATION (CONCEPTEUR ANALYSTE) 1.1 ARCHITECTURE MATÉRIELLE DU SYSTÈME INFORMATIQUE 1.1.1 Architecture d'un ordinateur Processeur,

Plus en détail

Vers du matériel libre

Vers du matériel libre Février 2011 La liberté du logiciel n est qu une partie du problème. Winmodems Modem traditionnel Bon fonctionnement Plus cher Electronique propriétaire Blob sur DSP intégré au modem Bien reçu par les

Plus en détail

Structure de base d un ordinateur

Structure de base d un ordinateur Structure de base d un ordinateur 1-Définition de l ordinateur L ordinateur est un appareil électronique programmable qui traite automatiquement les informations. Il est constitué de l unité centrale et

Plus en détail

TD Architecture des ordinateurs. Jean-Luc Dekeyser

TD Architecture des ordinateurs. Jean-Luc Dekeyser TD Architecture des ordinateurs Jean-Luc Dekeyser Fiche 1 Nombres de l informatique Exercice 1 Une entreprise désire réaliser la sauvegarde de ses données sur un site distant. Le volume de données à sauvegarder

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Alcatel OmniPCX Enterprise TSC-IP V1 (4098RE)

Alcatel OmniPCX Enterprise TSC-IP V1 (4098RE) Alcatel OmniPCX Enterprise TSC-IP V1 (4098RE) NOTE : Les spécifications Produit contenues dans ce document peuvent évoluer sans information préalable. Les produits et services décrits dans ce document

Plus en détail

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu Travaux d études et de recherches Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu Étudiant : Luc Michel Encadrants : Frédéric Pétrot Nicolas Fournel 23 mai 2010 TABLE DES MATIÈRES

Plus en détail

Quoi de neuf en LabVIEW FPGA 2010?

Quoi de neuf en LabVIEW FPGA 2010? Quoi de neuf en LabVIEW FPGA 2010? Yannick DEGLA Ingénieur d Application Fonctionnalités de LabVIEW FPGA 2010 Nœud d intégration d IP - Importer directement des fichiers.xco de Xilinx ou vos propres VHDL

Plus en détail

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis

Plus en détail

Éléments d'architecture des ordinateurs

Éléments d'architecture des ordinateurs Chapitre 1 Éléments d'architecture des ordinateurs Machines take me by surprise with great frequency. Alan Turing 1.1 Le Hardware Avant d'attaquer la programmation, il est bon d'avoir quelques connaissances

Plus en détail

REALISATION d'un. ORDONNANCEUR à ECHEANCES

REALISATION d'un. ORDONNANCEUR à ECHEANCES REALISATION d'un ORDONNANCEUR à ECHEANCES I- PRÉSENTATION... 3 II. DESCRIPTION DU NOYAU ORIGINEL... 4 II.1- ARCHITECTURE... 4 II.2 - SERVICES... 4 III. IMPLÉMENTATION DE L'ORDONNANCEUR À ÉCHÉANCES... 6

Plus en détail

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits Architecture des ordinateurs TD1 - Portes logiques et premiers circuits 1 Rappel : un peu de logique Exercice 1.1 Remplir la table de vérité suivante : a b a + b ab a + b ab a b 0 0 0 1 1 0 1 1 Exercice

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Prise en main. Prise en main - 0

Prise en main. Prise en main - 0 Prise en main 0404 Prise en main - 0 1- Introduction Creative Professional Merci d avoir choisi le Digital Audio System 0404 d E-MU. Nous avons conçu ce produit E-MU pour qu il soit logique, intuitif et

Plus en détail

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes

Plus en détail

Un ordinateur, c est quoi?

Un ordinateur, c est quoi? B-A.BA Un ordinateur, c est quoi? Un ordinateur, c est quoi? Un ordinateur est une machine dotée d'une unité de traitement lui permettant d'exécuter des programmes enregistrés. C'est un ensemble de circuits

Plus en détail

Mesurer les performances (CPU) sous Linux

Mesurer les performances (CPU) sous Linux Titre : Mesurer les performances (CPU) sous Linux Date : 22/07/2015 Page : 1/7 Mesurer les performances (CPU) sous Linux Résumé : Il existe des outils permettant de tracer les temps CPU utilisés (profiling).

Plus en détail

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. Sciences et Technologies de l Industrie et du Développement Durable Formation des enseignants parcours : ET24 Modèle de

Plus en détail

Structure et fonctionnement d'un ordinateur : hardware

Structure et fonctionnement d'un ordinateur : hardware Structure et fonctionnement d'un ordinateur : hardware Introduction : De nos jours, l'ordinateur est considéré comme un outil indispensable à la profession de BDA, aussi bien dans les domaines de la recherche

Plus en détail

Chapitre 4 : Les mémoires

Chapitre 4 : Les mémoires 1. Introduction: Chapitre 4 : Les mémoires Nous savons que dans un ordinateur toutes les informations : valeur numérique, instruction, adresse, symbole (chiffre, lettre,... etc.) sont manipulées sous une

Plus en détail

MAC-TC: programmation d un plate forme DSP-FPGA

MAC-TC: programmation d un plate forme DSP-FPGA MAC-TC: programmation d un plate forme DSP-FPGA Tanguy Risset avec l aide de: Nicolas Fournel, Antoine Fraboulet, Claire Goursaud, Arnaud Tisserand - p. 1/17 Plan Partie 1: le système Lyrtech Introduction

Plus en détail

Cours Langage C/C++ Programmation modulaire

Cours Langage C/C++ Programmation modulaire Cours Langage C/C++ Programmation modulaire Thierry Vaira BTS IRIS Avignon tvaira@free.fr «v0.1 Rappel Programmation modulaire (1/2) Le découpage d'un programme en sous-programmes est appelée programmation

Plus en détail

Chapitre 1 I:\ Soyez courageux!

Chapitre 1 I:\ Soyez courageux! Chapitre 1 I:\ Soyez courageux! Pour ne rien vous cacher, le langage d'assembleur (souvent désigné sous le terme "Assembleur", bien que ce soit un abus de langage, puisque "Assembleur" désigne le logiciel

Plus en détail

Représentation des Nombres

Représentation des Nombres Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...

Plus en détail

TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES

TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES 1 DECOUVERTE DE LA VIRTUALISATION... 2 1.1 1.2 CONCEPTS, PRINCIPES...2 UTILISATION...2 1.2.1 Formation...2

Plus en détail

Département informatique de l université d Angers

Département informatique de l université d Angers Département informatique de l université d Angers Amélioration d'un logiciel d'émulation du fonctionnement d'un microprocesseur x8 6 SCHAEFFER Florian ROUSSEAUX Billy L3 Informatique Responsable du projet:

Plus en détail

Systèmes embarqués D.Rossier

Systèmes embarqués D.Rossier D.Rossier Manuel IEM (v0.2) Manuel d'utilisation pour les laboratoires IEM Auteur: G. Boutillier / C. Bardet Objectif Cette documentation donne de brèves explications sur l'utilisation des différents outils,

Plus en détail

Auteur LARDOUX Guillaume Contact guillaume.lardoux@epitech.eu Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Auteur LARDOUX Guillaume Contact guillaume.lardoux@epitech.eu Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA Auteur LARDOUX Guillaume Contact guillaume.lardoux@epitech.eu Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA Sommaire 1. Introduction 2. Installation 3. Fonctionnement 4. Développement 5. Démonstration 2

Plus en détail

Installation et prise en main

Installation et prise en main TP1 Installation et prise en main Android est le système d'exploitation pour smartphones, tablettes et autres appareils développé par Google. Pour permettre aux utilisateurs d'installer des applications

Plus en détail

Les systèmes embarqués Introduction. Richard Grisel Professeur des Universités Université de Rouen Nacer Abouchi Professeur ESCPE Lyon

Les systèmes embarqués Introduction. Richard Grisel Professeur des Universités Université de Rouen Nacer Abouchi Professeur ESCPE Lyon Les systèmes embarqués Introduction Richard Grisel Professeur des Universités Université de Rouen Nacer Abouchi Professeur ESCPE Lyon Introduction aux systèmes embarqués Définition. Caractéristiques d

Plus en détail

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès www.haouati.com haouaticpge@gmail.com

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès www.haouati.com haouaticpge@gmail.com Partie 1 Professeur : Haouati Abdelali CPGE Lycée Omar Ibn Lkhattab - Meknès www.haouati.com haouaticpge@gmail.com Partie I : Généralités et algorithmique de base 1. Environnement matériel et logiciel

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Architecture matérielle des systèmes informatiques

Architecture matérielle des systèmes informatiques Architecture matérielle des systèmes informatiques IDEC, Renens. Version novembre 2003. Avertissement : ce support de cours n est pas destiné à l autoformation et doit impérativement être complété par

Plus en détail

Informatique Générale

Informatique Générale Informatique Générale Guillaume Hutzler Laboratoire IBISC (Informatique Biologie Intégrative et Systèmes Complexes) guillaume.hutzler@ibisc.univ-evry.fr Cours Dokeos 625 http://www.ens.univ-evry.fr/modx/dokeos.html

Plus en détail

Quelques éléments de compilation en C et makefiles

Quelques éléments de compilation en C et makefiles Quelques éléments de compilation en C et makefiles Guillaume Feuillade 1 Compiler un programme C Le principe de la compilation consiste à passer d un ensemble de fichiers de code à un programme exécutable

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

Cours 1 : Qu est-ce que la programmation?

Cours 1 : Qu est-ce que la programmation? 1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre

Plus en détail

Fonctionnement et performance des processeurs

Fonctionnement et performance des processeurs Fonctionnement et performance des processeurs Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1 Plan Fonctionnement des processeurs Unités de calcul

Plus en détail

Le Programme SYGADE SYGADE 5.2. Besoins en équipement, logiciels et formation. UNCTAD/GID/DMFAS/Misc.6/Rev.7

Le Programme SYGADE SYGADE 5.2. Besoins en équipement, logiciels et formation. UNCTAD/GID/DMFAS/Misc.6/Rev.7 CONFÉRENCE DES NATIONS UNIES SUR LE COMMERCE ET LE DÉVELOPPEMENT UNITED NATIONS CONFERENCE ON TRADE AND DEVELOPMENT Le Programme SYGADE SYGADE 5.2 Besoins en équipement, logiciels et formation UNCTAD/GID/DMFAS/Misc.6/Rev.7

Plus en détail

TRAAM STI 2013-2014 Acquisition et exploitations pédagogiques des données sur un système pédagogique

TRAAM STI 2013-2014 Acquisition et exploitations pédagogiques des données sur un système pédagogique TRAAM STI 2013-2014 Acquisition et exploitations pédagogiques des données sur un système pédagogique Bilan technique et éléments de développement Fonctionnalités attendues Une vingtaine d établissements

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

Programmation C++ (débutant)/instructions for, while et do...while

Programmation C++ (débutant)/instructions for, while et do...while Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

Chapitre 18 : Transmettre et stocker de l information

Chapitre 18 : Transmettre et stocker de l information Chapitre 18 : Transmettre et stocker de l information Connaissances et compétences : - Identifier les éléments d une chaîne de transmission d informations. - Recueillir et exploiter des informations concernant

Plus en détail

Créer un document composite avec NéoOffice J et le partager

Créer un document composite avec NéoOffice J et le partager OU BIEN On veut que les élèves mettent en relation du texte et des images trouvées sur internet (ce sont eux qui devront les chercher ou bien on va les insérer dans le document et à eux de les mettre en

Plus en détail

CM2 L architecture MIPS32

CM2 L architecture MIPS32 CM2 L architecture MIPS32 Olivier Marchetti (CM-TD-TP) Alexandre Brière (TD-TP) Laboratoire d informatique de Paris 6 Pôle SoC UPMC Année 2014-2015 Instructions MIPS Contrôle Données en MIPS E/S en MIPS

Plus en détail

Chapitre 1 : Introduction aux méthodologies de conception et de vérification pour SE

Chapitre 1 : Introduction aux méthodologies de conception et de vérification pour SE Chapitre 1 : Introduction aux méthodologies de conception et de vérification pour SE 1. Rappel de ce qu est un SE 2. Conception au niveau système (ESL) Méthodologie de conception (codesign logiciel/matériel)

Plus en détail

V- Manipulations de nombres en binaire

V- Manipulations de nombres en binaire 1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,

Plus en détail

Livrable 2.1 Rapport d analyse et de restructuration de code monothread des modules P, T, Q et F de l encodage MPEG-4 AVC

Livrable 2.1 Rapport d analyse et de restructuration de code monothread des modules P, T, Q et F de l encodage MPEG-4 AVC Groupe des Ecoles des Télécommunications Institut National des Télécommunications Département ARTEMIS Advanced Research & TEchniques for Multidimensional Imaging Systems Livrable 2.1 Rapport d analyse

Plus en détail

Conversion d un entier. Méthode par soustraction

Conversion d un entier. Méthode par soustraction Conversion entre bases Pour passer d un nombre en base b à un nombre en base 10, on utilise l écriture polynomiale décrite précédemment. Pour passer d un nombre en base 10 à un nombre en base b, on peut

Plus en détail

QUESTION 1 {2 points}

QUESTION 1 {2 points} ELE4301 Systèmes logiques II Page 1 de 8 QUESTION 1 {2 points} En se servant de paramètres électriques donnés dans le Tableau 1 ci-dessous, on désire déterminer la fréquence d opération du compteur présenté

Plus en détail

GCOS 7 sur microprocesseur standard Diane Daniel POIRSON 14 octobre 2004 Matériels 64 / DPS 7 / DPS 7000 Architecture & Evolution - Daniel POIRSON 1

GCOS 7 sur microprocesseur standard Diane Daniel POIRSON 14 octobre 2004 Matériels 64 / DPS 7 / DPS 7000 Architecture & Evolution - Daniel POIRSON 1 sur microprocesseur standard Diane Daniel POIRSON 14 octobre 2004 Matériels 64 / DPS 7 / DPS 7000 Architecture & Evolution - Daniel POIRSON 1 Pourquoi aller vers les processeurs standard? Considérations

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

Introduction à l informatique en BCPST

Introduction à l informatique en BCPST Introduction à l informatique en BCPST Alexandre Benoit BCPST L informatique en BCPST «L enseignement de l informatique en classes préparatoires de la filière BCPST a pour objectif d introduire puis de

Plus en détail

Ajouter de la mémoire à son ordinateur

Ajouter de la mémoire à son ordinateur Ajouter de la mémoire à son ordinateur Votre ordinateur se traine et vous avez envie de lui donner un coup de fouet? Ajoutez-lui de la mémoire! En augmentant la mémoire vive de votre ordinateur, le disque

Plus en détail

IFT1215 Introduction aux systèmes informatiques

IFT1215 Introduction aux systèmes informatiques Introduction aux circuits logiques de base IFT25 Architecture en couches Niveau 5 Niveau 4 Niveau 3 Niveau 2 Niveau Niveau Couche des langages d application Traduction (compilateur) Couche du langage d

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

UE Programmation Impérative Licence 2ème Année 2014 2015

UE Programmation Impérative Licence 2ème Année 2014 2015 UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative

Plus en détail

Electron S.R.L. SERIE B46 - SYSTEMES DIDACTIQUES DE TELEPHONIE

Electron S.R.L. SERIE B46 - SYSTEMES DIDACTIQUES DE TELEPHONIE Electron S.R.L. Design Production & Trading of Educational Equipment SERIE B46 - SYSTEMES DIDACTIQUES DE TELEPHONIE Specifications may change without notic Page 1 of 9 File BROCHURE B46xx B4610 UNITE DIDACTIQUE

Plus en détail

Informatique industrielle A7-19571 Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Informatique industrielle A7-19571 Systèmes temps-réel J.F.Peyre. Partie I : Introduction Informatique industrielle A7-19571 Systèmes temps-réel J.F.Peyre Partie I : Introduction Plan de la première partie Quelques définitions Caractéristiques communes des applications temps-réel Exemples d

Plus en détail

Informatique. Les réponses doivent être données en cochant les cases sur la dernière feuille du sujet, intitulée feuille de réponse

Informatique. Les réponses doivent être données en cochant les cases sur la dernière feuille du sujet, intitulée feuille de réponse Questions - Révision- - 1 er Semestre Informatique Durée de l examen : 1h pour 40 questions. Aucun document n est autorisé. L usage d appareils électroniques est interdit. Les questions faisant apparaître

Plus en détail

Windows serveur 2008 installer hyperv

Windows serveur 2008 installer hyperv Windows serveur 2008 installer hyperv 1 Description Voici la description fournit par le site Microsoft. «Windows Server 2008 Hyper-V est le moteur de virtualisation (hyperviseur) fourni dans Windows Server

Plus en détail

Etudier l influence de différents paramètres sur un phénomène physique Communiquer et argumenter en utilisant un vocabulaire scientifique adapté

Etudier l influence de différents paramètres sur un phénomène physique Communiquer et argumenter en utilisant un vocabulaire scientifique adapté Compétences travaillées : Mettre en œuvre un protocole expérimental Etudier l influence de différents paramètres sur un phénomène physique Communiquer et argumenter en utilisant un vocabulaire scientifique

Plus en détail