La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Cours #9 Conception.

Présentations similaires


Présentation au sujet: "INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Cours #9 Conception."— Transcription de la présentation:

1 INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Cours #9 Conception et réalisation de processeurs à usage général

2 INF3500 : Conception et implémentation de systèmes numériques Plan pour aujourdhui Mise en contexte Retour sur les processeurs à usage spécifique Processeurs à usage général: introduction Chemin des données Unité de contrôle 2 + Des précisions sur les notes de cours, des exemples et une parenthèse sur VHDL!

3 INF3500 : Conception et implémentation de systèmes numériques La machine distributrice 3 Comment réaliser ce processeur? Concevoir un processeur à usage spécifique? Utiliser un processeur à usage général?

4 INF3500 : Conception et implémentation de systèmes numériques Deux types de processeurs Un processeur est un type spécial de système numérique dont le but est de traiter des données par une succession détapes simples, pouvant résulter en un traitement global complexe. Un processeur doit acquérir des données, les traiter, et produire un résultat sous forme numérique ou vidéo. On distingue deux types principaux de processeurs : – Les processeurs à usage général peuvent être programmés. Le programme exécuté par un processeur est gardé en mémoire sous la forme dune liste dinstructions. On réfère souvent à ce type de processeur par le nom de « microprocesseur ». Un microcontrôleur est un cas particulier dun processeur à usage général. Un processeur spécialisé est un processeur à usage général auquel on a ajouté des instructions spéciales. – Les processeurs à usage spécifique sont des processeurs non programmables qui sont conçus dans le but de répondre à un besoin unique. Ils sont plus simples et plus efficaces que les processeurs à usage général. Ils ne peuvent pas en général être facilement reprogrammés. 4 (notes, section 5.1)

5 INF3500 : Conception et implémentation de systèmes numériques Parties dun processeur Un processeur est composé de deux parties: – Le chemin des données (datapath) traite les données. Il inclut: des registres; des unités fonctionnelles (comme une unité arithmétique et logique) un mécanisme de commutation pour transférer et manipuler les données. – Lunité de contrôle (control unit) est responsable du séquençage des opérations à exécuter par le chemin de données selon des entrées externes et le résultat des opérations. 5 (notes, section 5.1)

6 INF3500 : Conception et implémentation de systèmes numériques Plan pour aujourdhui Mise en contexte Retour sur les processeurs à usage spécifique Processeurs à usage général: introduction Chemin des données Unité de contrôle 6 + Des précisions sur les notes de cours, des exemples et une parenthèse sur VHDL!

7 INF3500 : Conception et implémentation de systèmes numériques Exemple de processeur à usage spécifique: transmetteur RS (notes, section 6.4) Le chemin des données ne contient que les registres nécessaires. La machine à états de lunité de contrôle ne peut faire quune seule tâche.

8 INF3500 : Conception et implémentation de systèmes numériques Exemple de processeur à usage spécifique: joueur de Blackjack 8 (notes, section 6.7) Le chemin des données ne contient que les registres nécessaires. La machine à états de lunité de contrôle ne peut faire quune seule tâche.

9 INF3500 : Conception et implémentation de systèmes numériques Du processeur à usage spécifique au processeur à usage général Pour changer la tâche dun processeur à usage spécifique, il faut: – ajouter les registres et structures de calculs nécessaires à son chemin des données; – changer la machine à états de son unité de contrôle; et, – changer les signaux de contrôle entre le chemin des données et lunité de contrôle. Un processeur à usage général doit pouvoir effectuer nimporte quelle tâche quun processeur à usage spécifique, mais avec: – un chemin des données fixe; – une unité de contrôle fixe; et, – des signaux de contrôle fixes. Un processeur à usage général doit pouvoir être programmé sans changer sa structure ni ses interconnexions. Pour effectuer une tâche différente, au lieu de changer la machine à états, on la traverse de différentes façons en fonction du programme entreposé en mémoire. 9 (notes, section 9.1)

10 INF3500 : Conception et implémentation de systèmes numériques Plan pour aujourdhui Mise en contexte Retour sur les processeurs à usage spécifique Processeurs à usage général: introduction Chemin des données Unité de contrôle 10 + Des précisions sur les notes de cours, des exemples et une parenthèse sur VHDL!

11 INF3500 : Conception et implémentation de systèmes numériques Processeurs à usage général Certains processeurs à usage général, comme les processeurs Core de Intel et les processeurs FX-8000 de AMD, sont destinés principalement au marché des stations de travail et des ordinateurs portables. Ces circuits sont dune complexité inouïe et sont le résultat du travail de centaines dingénieurs-années. Dautres processeurs, comme les ARM, MIPS, Intel 8051 et TMS320 sont moins bien connus mais sont fréquemment utilisés dans des applications embarquées comme les dispositifs mobiles et le domaine de lautomobile. Les processeurs à usage général sont habituellement fabriqués à très, très grande échelle. Leurs coûts de développement faramineux peuvent donc être répartis sur un très grand nombre dunités, rendant rentable leur production et mise en marché. Il est intéressant dobserver que le développement de chaque nouvelle génération de processeur se fait à laide de stations de travail équipées de processeurs de la génération précédente. En dautres mots, sans la puissance de calcul des processeurs daujourdhui, on serait incapable de concevoir les processeurs de demain. 11 (notes, section 9.1)

12 INF3500 : Conception et implémentation de systèmes numériques Jeu dinstructions Le jeu dinstructions (Instruction Set Architecture – ISA) est la spécification de toutes les instructions pouvant être effectuées par le processeur, leur encodage numérique, et linventaire des ressources mises à la disponibilité des programmeurs (comme des registres, des piles, des coprocesseurs, etc.). Le jeu dinstructions est le contrat entre les concepteurs du processeur et les programmeurs. On peut catégoriser les jeux dinstructions selon plusieurs dimensions. Une dimension concerne la forme du chemin des données du processeur, selon quil contient ou non des registres et de la mémoire. Les processeurs de type registre-registre (register-register ou load-store) sont les plus populaires. Pour ce type de processeur, les opérations peuvent être effectuées uniquement sur des valeurs gardées dans des registres. Il est possible de transférer des données entre les registres et la mémoire. Aujourdhui on considère des processeurs basés sur larchitecture Harvard, c'est- à-dire qui ont des mémoires séparées pour le programme et les données (contrairement à larchitecture Von Neumann). 12 (notes, section 9.1) Voir:

13 INF3500 : Conception et implémentation de systèmes numériques Micro-opérations du chemin des données La grande taille du jeu dinstructions dun processeur à usage général implique quil faut pouvoir supporter un grand nombre de micro-opérations. On peut classifier les micro-opérations en trois groupes : – le chargement de données de lextérieur ou une mémoire vers un bloc de registres; – la transformation des données grâce à une unité arithmétique et logique; et, – lentreposage de données en mémoire ou leur transfert vers lextérieur. 13 (notes, section 9.1)

14 INF3500 : Conception et implémentation de systèmes numériques Exemple daujourdhui Le processeur PolyRISC au complet 14 (pas dans les notes) Inspiré du processeur MIPS: Patterson & Hennessy, Computer Organization and Design, 5 th ed., Morgan Kaufmann, 2013.

15 INF3500 : Conception et implémentation de systèmes numériques Plan pour aujourdhui Mise en contexte Retour sur les processeurs à usage spécifique Processeurs à usage général: introduction Chemin des données Unité de contrôle 15 + Des précisions sur les notes de cours, des exemples et une parenthèse sur VHDL!

16 INF3500 : Conception et implémentation de systèmes numériques Architecture dun chemin des données Un chemin des données a deux parties principales: – un bloc de registres qui conserve les données à traiter et des résultats précédents, de façon à pouvoir combiner toutes ces valeurs dans de nouveaux calculs. – des unités fonctionnelles pour effectuer des opérations sur les données conservées dans les registres. Des modules combinatoires permettent de choisir, router et contrôler le flot dinformation entre les registres et les unités fonctionnelles. 16 (notes, section 5.2) Lunité fonctionnelle peut parfois avoir un état entreposé dans des éléments à mémoire. Information sur un calcul précédent (p. ex. négatif, zéro, etc.). Pour effectuer un calcul sur plusieurs cycles. Pour garder en mémoire une valeur spéciale (p. ex. un accumulateur).

17 INF3500 : Conception et implémentation de systèmes numériques Architecture dun chemin des données Exemple: processeur BlackFin 17 Analog Devices, BlackFin Embedded Processor ADSP-BF534/ADSP-BF536/ADSP-BF537, Le processeur Blackfin est un processeur à usage général, spécialisé pour le traitement du signal et dimages.

18 INF3500 : Conception et implémentation de systèmes numériques Exercices Donner la fonction logique pour les signaux de contrôle Montrer la valeur des signaux de contrôle pour différentes instructions Donner un exemple de programme Compiler un programme 18

19 INF3500 : Conception et implémentation de systèmes numériques Chemin des données dun processeur à usage général 19 (notes, section 9.2)

20 INF3500 : Conception et implémentation de systèmes numériques Effectuer des opérations Pour effectuer une instruction avec le chemin des données proposé, il sagit de donner les bonnes valeurs aux différents signaux de contrôle. Supposons que le bloc des registres contienne quatre registres R0, R1, R2, R3 et que la mémoire contienne 256 cellules. Par exemple, pour copier le contenu du registre R1 dans le registre R0, il faut: – aiguiller la valeur du registre R1 à lextérieur du bloc des registres; – indiquer à lUAL de neffectuer aucune opération; – passer à travers du multiplexeur de sélection ALU vs mémoire; – revenir à lentrée du bloc des registres, et aiguiller cette valeur dans R0; – le signal sur le port B du bloc des registres et de lUAL nest pas utilisé et est sans importance; – la mémoire ne doit pas charger de nouvelle valeur pendant cette opération. 20 (notes, section 9.2.9)

21 INF3500 : Conception et implémentation de systèmes numériques Effectuer lopération R0 R1 21 (notes, section 9.2.9) R0 R1 R2 R3 1- case op_UAL is when 0 => F_UAL := A; when 1 => F_UAL := B_UAL; when 2 => F_UAL := A + B_UAL; when 3 => F_UAL := A - B_UAL; when 4 => F_UAL := A and B_UAL; when 5 => F_UAL := A or B_UAL; when 6 => F_UAL := not(A); when 7 => F_UAL := A xor B_UAL; when others => F_UAL := (others => 'X'); end case; 0

22 INF3500 : Conception et implémentation de systèmes numériques Effectuer lopération R2 R1 + R3 (notes, section 9.2.9) R0 R1 R2 R3 13 case op_UAL is when 0 => F_UAL := A; when 1 => F_UAL := B_UAL; when 2 => F_UAL := A + B_UAL; when 3 => F_UAL := A - B_UAL; when 4 => F_UAL := A and B_UAL; when 5 => F_UAL := A or B_UAL; when 6 => F_UAL := not(A); when 7 => F_UAL := A xor B_UAL; when others => F_UAL := (others => 'X'); end case;

23 INF3500 : Conception et implémentation de systèmes numériques Effectuer lopération R2 R2 ET R3 (notes, section 9.2.9) R0 R1 R2 R3 13 case op_UAL is when 0 => F_UAL := A; when 1 => F_UAL := B_UAL; when 2 => F_UAL := A + B_UAL; when 3 => F_UAL := A - B_UAL; when 4 => F_UAL := A and B_UAL; when 5 => F_UAL := A or B_UAL; when 6 => F_UAL := not(A); when 7 => F_UAL := A xor B_UAL; when others => F_UAL := (others => 'X'); end case; ET 0 23

24 INF3500 : Conception et implémentation de systèmes numériques Effectuer lopération R3 M[25] (notes, section 9.2.9) R0 R1 R2 R3 -- case op_UAL is when 0 => F_UAL := A; when 1 => F_UAL := B_UAL; when 2 => F_UAL := A + B_UAL; when 3 => F_UAL := A - B_UAL; when 4 => F_UAL := A and B_UAL; when 5 => F_UAL := A or B_UAL; when 6 => F_UAL := not(A); when 7 => F_UAL := A xor B_UAL; when others => F_UAL := (others => 'X'); end case; … … 1 24

25 INF3500 : Conception et implémentation de systèmes numériques Effectuer lopération M[25] R0 25 (notes, section 9.2.9) R0 R1 R2 R3 -0 case op_UAL is when 0 => F_UAL := A; when 1 => F_UAL := B_UAL; when 2 => F_UAL := A + B_UAL; when 3 => F_UAL := A - B_UAL; when 4 => F_UAL := A and B_UAL; when 5 => F_UAL := A or B_UAL; when 6 => F_UAL := not(A); when 7 => F_UAL := A xor B_UAL; when others => F_UAL := (others => 'X'); end case; … … -

26 INF3500 : Conception et implémentation de systèmes numériques Effectuer lopération … 26 (notes, section 9.2.9) R0 R1 R2 R3 case op_UAL is when 0 => F_UAL := A; when 1 => F_UAL := B_UAL; when 2 => F_UAL := A + B_UAL; when 3 => F_UAL := A - B_UAL; when 4 => F_UAL := A and B_UAL; when 5 => F_UAL := A or B_UAL; when 6 => F_UAL := not(A); when 7 => F_UAL := A xor B_UAL; when others => F_UAL := (others => 'X'); end case; … …

27 INF3500 : Conception et implémentation de systèmes numériques Éléments à mémoire pour chemins des données Bloc de registres 27 (notes, section 9.2.3) Un bloc de registre peut avoir plusieurs ports dentrée et de sortie. Un registre peut à la fois être la cible dune écriture et la source pour lun des ports de sortie. Version coûteuse en multiplexeurs!

28 INF3500 : Conception et implémentation de systèmes numériques Éléments à mémoire pour chemins des données Bloc de registres: code VHDL 28 (notes, section 9.2.5) -- signaux du bloc des registres type lesRegistres_type is array(0 to Nreg - 1) of signed(Wd - 1 downto 0); signal lesRegistres : lesRegistres_type; signal A, B : signed(Wd - 1 downto 0); signal choixA, choixB, choixCharge : integer range 0 to Nreg - 1; signal chargeBR : std_logic; -- dans le corps de larchitecture process (CLK, reset, choixA, choixB) begin if rising_edge(CLK) then if reset = '1' then lesRegistres (others => '0')); else if chargeBR = '1' then -- MUX pour choixDonnee_BR if (instruction.categorie = memoire and instruction.details = 0) then lesRegistres(choixCharge) <= memoireDonnees(to_integer(F)); else lesRegistres(choixCharge) <= F; end if; end process; A <= lesRegistres(choixA); B <= lesRegistres(choixB); Dans cette description du bloc des registres: le nombre de ports dentrée est fixé à 1 le nombre de ports de sortie est fixé à 2 le nombre de registres est déterminé par le paramètre Nreg la largeur des registres est déterminée par le paramètre Wd

29 INF3500 : Conception et implémentation de systèmes numériques Unité arithmétique et logique 29 (notes, section 9.2.6) -- dans la partie déclarative de larchitecture type operationsUAL_type is (passeA, passeB, AplusB, AmoinsB, AetB, AouB, nonA, AouxB); signal op_UAL : operationsUAL_type; signal F : signed(Wd - 1 downto 0); signal Z, N : std_logic; -- dans le corps de larchitecture process(A, B, instruction) variable B_UAL, F_UAL : signed(Wd - 1 downto 0); begin if instruction.categorie = reg then -- MUX choixB_UAL B_UAL := B; else B_UAL := to_signed(instruction.valeur, B_UAL'length); end if; -- op_UAL case operationsUAL_type'val(instruction.details) is when passeA => F_UAL := A; when passeB => F_UAL := B_UAL; when AplusB => F_UAL := A + B_UAL; when AmoinsB => F_UAL := A - B_UAL; when AetB => F_UAL := A and B_UAL; when AouB => F_UAL := A or B_UAL; when nonA => F_UAL := not(A); when AouxB => F_UAL := A xor B_UAL; when others => F_UAL := (others => 'X'); end case; Dans cette description de lUAL: les opérations sont fixes lencodage est déterminé par lordre de la définition du type la largeur de lUAL est déterminée par le paramètre Wd if F_UAL = 0 then Z <= '1'; else Z <= '0'; end if; N <= F_UAL(F_UAL'left); F <= F_UAL; end process;

30 INF3500 : Conception et implémentation de systèmes numériques UAL - suite Deux bits, Z et N, indiquent respectivement un résultat nul ou négatif. Ces bits sont utilisés pour les branchements. La complexité de lUAL est une fonction de sa largeur et du nombre dopérations quelle doit supporter. 30 (notes, section 9.2.6)

31 INF3500 : Conception et implémentation de systèmes numériques Mémoire des données En théorie, un processeur avec un bloc des registres suffisamment grand naurait pas besoin dune mémoire des données associée. Cest souvent le cas pour les processeurs spécialisés. En pratique cependant, un processeur à usage général a toujours besoin dune telle mémoire. Pour la plupart des processeurs, la mémoire des données est placée à lextérieur de celui-ci. La mémoire des données a en général un port de sortie, un port dentrée, un port dadresse et un port de contrôle de lopération. La mémoire peut avoir plusieurs ports dentrée et de sortie. En général, il est utile que les cellules de la mémoire aient est la même taille que celles du bloc des registres, mais ce nest pas strictement nécessaire. Le port dadresse spécifie une cellule de la mémoire en particulier. Le signal charge_MD détermine si la cellule sera lue (0) ou écrite (1). 31 (notes, section 9.2.7)

32 INF3500 : Conception et implémentation de systèmes numériques Mémoire des données en VHDL Une mémoire vive peut être vue comme un bloc de registres de très grande taille, avec: – un (parfois deux) port de sortie – un (parfois deux) port dentrée – un (parfois deux) port dadresse – un port de contrôle de lopération. La description dune mémoire des données en VHDL peut prendre plusieurs formes, selon une multitude de paramètres. Ceux-ci incluent, entre autres : – le nombre de ports dentrée et de sortie; – le fait que les sorties soient synchrones ou asynchrones; – le nombre de cycles nécessaires à la mémoire pour déplacer des données; – la présence de signaux dactivation; et, – la spécification de valeurs initiales. 32 (notes, section 9.2.7) Il faut consulter la documentation du synthétiseur pour adopter le bon patron de code VHDL correspondant aux paramètres de la mémoire RAM désirée.

33 INF3500 : Conception et implémentation de systèmes numériques Mémoire des données en VHDL 33 (notes, section 9.2.7) -- dans la partie déclarative de larchitecture type memoireDonnees_type is array(0 to 2 ** Md - 1) of signed(Wd - 1 downto 0); signal memoireDonnees : memoireDonnees_type := (to_signed(99, Wd), to_signed(33, Wd), others => to_signed(31, Wd)); signal charge_MD : std_logic; process (CLK, F) begin if rising_edge(CLK) then if (instruction.categorie = memoire and instruction.details = 0) then memoireDonnees(to_integer(B)) <= F; end if; end process; Important: pas de signal de réinitialisation dans le modèle, ce qui empêcherait le synthétiseur dutiliser la mémoire distribuée. Dans cette description de la mémoire: le nombre de mots est déterminée par le paramètre Md la taille des mots est déterminée par le paramètre Wd habituellement, la lecture dune donnée nécessite un cycle dhorloge pour charger ladresse, ce nest pas modélisé ici

34 INF3500 : Conception et implémentation de systèmes numériques Comment se synthétise la mémoire dans un FPGA? Colonnes de blocs de mémoire intégrées à travers les CLBs. (Xilinx: Block RAM) LUTs des CLBs (Xilinx: Distributed RAM) 34 Source: Maxfield, © Mentor Graphics, 2004 Le choix peut être contrôlé par les paramètres du synthétiseur – démo à partir dActive-HDL. (notes, section 3.5.5)

35 INF3500 : Conception et implémentation de systèmes numériques Plan pour aujourdhui Mise en contexte Retour sur les processeurs à usage spécifique Processeurs à usage général: introduction Chemin des données Unité de contrôle 35 + Des précisions sur les notes de cours, des exemples et une parenthèse sur VHDL!

36 INF3500 : Conception et implémentation de systèmes numériques Unité de contrôle du processeur à usage général Lunité de contrôle dirige le chemin des données. Lunité de contrôle est composée des composantes suivantes : – un compteur de programme (Program Counter – PC) qui pointe à la prochaine instruction à exécuter; – une mémoire des instructions contenant le programme à exécuter; – un module pour décoder linstruction à exécuter, cest-à-dire de dériver les signaux de contrôle du chemin des données à partir de linstruction; – un module pour déterminer si un branchement a lieu ou non; – deux additionneurs pour calculer ladresse de la prochaine instruction. 36 (notes, section 9.3)

37 INF3500 : Conception et implémentation de systèmes numériques Unité de contrôle du processeur à usage général 37 (notes, section 9.3)

38 INF3500 : Conception et implémentation de systèmes numériques Choix dapproche pour lencodage des instructions Le code dune instruction doit permettre de spécifier sans ambiguïté tous les signaux de contrôle du chemin des données. Il y a trois grandes approches: CISC, RISC et NISC 38 (pas dans les notes) NISC Technology and Toolset, University of California Irvine, [en ligne: consulté le 2009/11/11 Nous choisissons lapproche RISC. Les signaux de contrôle du chemin des données sont encodés, ce qui réduit la taille du programme. La spécification du processeur monte alors au niveau du jeu dinstructions. Limplémentation peut être différente pour deux processeurs qui ont le même comportement.

39 INF3500 : Conception et implémentation de systèmes numériques Encodage des instructions en mémoire (1) Considération pour le format des instructions et de leur encodage en mémoire – Cest un problème à plusieurs solutions possibles. – On favorise la régularité, ce qui simplifie le décodage et accélère le processeur. – Lencodage, le jeux dinstructions et les modes dadressage sont intimement liés. Choix effectués ici: – Encodage sur un seul mot de 32 bits: chaque instruction sexécute en un seul cycle. – Le mot dinstruction est divisé en 6 champs. – Modes dadressage limités conformément à la philosophie RISC. 39 (notes, section 9.3.3) Inspiré du processeur MIPS: Patterson & Hennessy, Computer Organization and Design, 5 th ed., Morgan Kaufmann, 2013.

40 INF3500 : Conception et implémentation de systèmes numériques Encodage des instructions en mémoire (2) Catégorie 0: opération sur les registres – Le processeur a 32 registres dau moins 16 bits de large. – Avec 4 bits pour les détails, lUAL pourrait effectuer 16 opérations différentes, dont: A, B, A + B, A – B, A ET B, A OU B, NON(A), A OUX B A(15:0) × B(15:0), décaleG(A, B), décaleD(A, B) Etc. – Les bits 15:5 de linstruction pourraient servir à définir: des opérations supplémentaires aux 16 de base; et/ou des opérations sur plus de deux registres à la fois. 40 (notes, section 9.3.3)

41 INF3500 : Conception et implémentation de systèmes numériques Encodage des instructions en mémoire (3) Catégorie 1: opération sur un registre et une valeur codée dans linstruction – Les bits 15:0 de linstruction contiennent la valeur à utiliser. 41 (notes, section 9.3.3)

42 INF3500 : Conception et implémentation de systèmes numériques Encodage des instructions en mémoire (4) Catégorie 2: branchement – Il y a 16 conditions de branchement possibles. En pratique 8 suffisent. =,,,,, toujours (sans condition), jamais (ne pas brancher = NOP) – Les branchements sont limités à ±2 15 adresses par rapport au CP. – La valeur encodée dans linstruction est étendue sur 16 bits et est ajoutée à la valeur incrémentée du CP. 42 (notes, section 9.3.3)

43 INF3500 : Conception et implémentation de systèmes numériques Unité de branchement 43 (notes, section 9.3) -- signaux de l'unité de branchement type conditionBranchement_type is (egal, diff, ppq, pgq, ppe, pge, oui, non); signal brancher : std_logic; signal condition : conditionBranchement_type; -- unité de branchement process(Z, N, instruction) begin case conditionBranchement_type'val(instruction.details mod 8) is when egal => brancher <= Z; when diff => brancher <= not(Z); when ppq => brancher <= N; when pgq => brancher <= not(N); when ppe => brancher <= N or Z; when pge => brancher <= not(N) or Z; when oui => brancher <= '1'; when non => brancher <= '0'; end case; end process;

44 INF3500 : Conception et implémentation de systèmes numériques Compteur de programme 44 (notes, section 9.3) signal CP : integer range 0 to (2 ** Mi - 1); -- le compteur de programme process (CLK, reset) begin if rising_edge(CLK) then if reset = '1' then CP <= 0; else if instruction.categorie = branche and brancher = '1' then CP <= CP + instruction.valeur; else CP <= CP + 1; end if; end process;

45 INF3500 : Conception et implémentation de systèmes numériques Encodage des instructions en mémoire (5) Catégorie 3: chargement mémoire (Load-Store) – Ladresse effective est composée de la somme dun registre et dune valeur de déplacement. Ceci facilite laccès aux éléments dun tableau. – La mémoire des données peut avoir jusquà 2 32 mots de 32 bits (16 Go). 45 (notes, section 9.3.3)

46 INF3500 : Conception et implémentation de systèmes numériques Exemples dencodage dinstructions 46 (notes, section 9.3.3)

47 INF3500 : Conception et implémentation de systèmes numériques Exemple de programme 47 (notes, section 9.4)

48 INF3500 : Conception et implémentation de systèmes numériques Exercice de programmation Donnez les instructions et les codes numériques dun programme qui calcule la moyenne de 8 valeurs gardées en mémoire dans des cellules contigües à partir de ladresse (notes, section 9.6)

49 INF3500 : Conception et implémentation de systèmes numériques Exercice de programmation Donnez les instructions et les codes numériques dun programme qui multiplie deux nombres non signés de 8 bits. 49 (notes, section 9.6)

50 INF3500 : Conception et implémentation de systèmes numériques Mémoire des instructions en VHDL Une instruction est défini comme une structure à 5 champs. La mémoire des instructions est définie dans la partie déclarative de larchitecture comme un tableau constant dans lequel on place les valeurs des instructions du programme. 50 (notes, section 9.3.4) type instructionsCat_type is (reg, reg_valeur, branche, memoire); type instruction_type is record categorie : instructionsCat_type; details : natural range 0 to 15; reg1 : natural range 0 to Nreg - 1; reg2 : natural range 0 to Nreg - 1; valeur : integer range -2 ** (WImm - 1) to 2 ** (WImm - 1) - 1; end record; constant NOP : instruction_type := (branche, 7, 0, 0, 0); type memoireInstructions_type is array (0 to 2 ** Mi - 1) of instruction_type; constant memoireInstructions : memoireInstructions_type := ( (reg_valeur, operationsUAL_type'pos(passeB), 0, 0, 12), -- R0 := 12; (reg_valeur, operationsUAL_type'pos(passeB), 1, 0, 7), -- R1 := 7; (reg, operationsUAL_type'pos(AplusB), 0, 0, 1), -- R0 := R0 + R1; (reg, operationsUAL_type'pos(AouxB), 1, 0, 1), -- R1 := R0 OUX R1; (reg_valeur, operationsUAL_type'pos(AplusB), 1, 1, -3), -- R1 := R1 + 1; (branche, conditionBranchement_type'pos(oui), 0, 0, -1), -- goto loop; others => NOP);

51 INF3500 : Conception et implémentation de systèmes numériques Le problème du logiciel Lécriture directe dun programme en codes de 32 bits est ardue. Pour simplifier la tâche, on peut un assembleur qui donne automatiquement les codes numériques des instructions à partir de leur représentation symbolique. Pour les programmes très complexes, cependant, on utilise plutôt un compilateur qui accepte en entrée un programme dans un langage de haut niveau comme C ou Python et qui produit les codes des instructions. Le compilateur doit sappuyer sur une connaissance approfondie des instructions pouvant être réalisées par le processeur ainsi que des architectures de son chemin des données et de son unité de contrôle. Un simulateur et un débogueur seraient bien aussi … 51 (notes, section 9.4)

52 INF3500 : Conception et implémentation de systèmes numériques Un processeur pipeliné Le processeur montré ici exécute une instruction par cycle. Le chemin critique est: – CP MI Décodage BR UAL MD BR Tous les processeurs modernes décomposent le chemin critique à laide de la technique du pipeline. 52 (notes, section 9.5)

53 INF3500 : Conception et implémentation de systèmes numériques Notions à retenir et maîtriser Importance relative 1. Expliquer les différences et les forces relatives entre un processeur à usage spécifique et un processeur à usage général Chemin des données dun processeur à usage général: a.Donner un diagramme montrant les composantes, connexions et signaux de contrôle b.Montrer comment aiguiller les signaux pour effectuer des opérations c.Donner le code VHDL pour le bloc des registres, lUAL et la mémoire des données Unité de contrôle dun processeur à usage général: a.Donner un diagramme montrant les composantes et leurs connexions b.Expliquer comment effectuer lencodage et le décodage des instructions c.Interpréter et écrire des programmes simples pour le processeur d.Donner le code VHDL pour le compteur de programme, la mémoire des instructions et lunité de branchement Expliquer comment modifier le processeur pour lui ajouter des instructions: a.Expliquer les modifications au chemin des données b.Expliquer les modifications à lunité de contrôle c.Expliquer les modifications à lencodage des instructions 20 Total100 Résumé: processeur à usage général 53


Télécharger ppt "INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Cours #9 Conception."

Présentations similaires


Annonces Google