Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parTimothée Herve Modifié depuis plus de 9 années
1
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel Langages de description architecturale
2
Pourquoi parler de langages de description architecturale en INF8505? La conception d’un processeur embarqué configurable est une tâche difficile. On a besoin d’un mécanisme de description et modélisation du processeur afin de pouvoir: expérimenter avec différentes options et obtenir des métriques de performance attendues; produire une description synthétisable du processeur; développer automatiquement des outils de support pour le processeur (vérification, compilation, débogage). Les langages de programmation et les langages de description matérielle sont mal adaptés à la modélisation de processeurs. Les langages de description architecturale (ADL) viennent combler ce vide. 2 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
3
Survol de la présentation Un exemple pour commencer Langages de description architecturale (Architecture Description Languages – ADL): origines et besoins ADL: exploration de l’espace de conception et vérification Taxonomie des ADL et exemples: ADL structurels; ADL comportementaux; ADL mixtes. ADL LISA: un peu plus Résumé, conclusion, références 3 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
4
Exemple de description d’un processeur (0) Considérons le problème de description d’un processeur pour une application embarquée. Supposons qu’on adopte un modèle de processeur à usage général. On veut pouvoir varier plusieurs paramètres et observer la performance et le coût dans chaque cas. Supposons qu’on parte de rien (contrairement à utiliser un environnement comme celui offert par Tensilica). 4 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
5
Exemple de description d’un processeur (1) La description d’un processeur peut être divisée en deux parties: le chemin des données; et, l’unité de contrôle. Le chemin des données comprend les registres et les unités fonctionnelles. L’unité de contrôle détermine les opérations et micro-opérations à effectuer en fonction du programme. 5 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
6
Exemple de description d’un processeur (2) Pour la spécification du processeur via son jeu d’instructions, on doit en général considérer en premier son chemin des données. Celui-ci contient trois parties principales: le bloc des registres; l’unité fonctionnelle (e.g., UAL); et, l’accès à la mémoire des données. 6 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
7
Exemple de description d’un processeur (3) Une possibilité pour décrire un processeur est d’utiliser un langage de description matérielle comme VHDL. Par exemple, la description d’un bloc des registres peut se faire comme suit: 7 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel -- dans la partie déclarative de l’architecture type lesRegistres_type is array(0 to Nreg - 1) of signed(Wd - 1 downto 0); signal lesRegistres : lesRegistres_type; signal A : signed(Wd - 1 downto 0); signal choixA : integer range 0 to Nreg - 1; signal B : signed(Wd - 1 downto 0); signal choixB : integer range 0 to Nreg - 1; signal donnee : signed(Wd - 1 downto 0); signal choixCharge : integer range 0 to Nreg - 1; signal charge : std_logic; -- dans le corps de l’architecture process (CLK, reset) begin if rising_edge(CLK) then if reset = '1' then lesRegistres (others => '0')); else if charge = '1' then lesRegistres(choixCharge) <= donnee; end if; end process; -- signaux de sortie du bloc des registres A <= lesRegistres(choixA); B <= lesRegistres(choixB); sortieExterne <= B; À la place, on aimerait pouvoir écrire: « Je veux un bloc de 16 registres de 32 bits de type entiers-signés avec un port d’écriture et deux ports de lecture, et un signal de réinitialisation. »
8
Exemple de description d’un processeur (4) Pour la partie fonctionnelle, la description en VHDL est plus efficace en termes du nombre de concepts représentés par ligne de code. Il faut tout de même spécifier plusieurs détails, entre autre l’encodage numérique des opérations. 8 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel -- dans la partie déclarative de l’architecture signal F : signed(Wd - 1 downto 0); signal Z : std_logic; signal N : std_logic; signal op : integer range 0 to 7; -- dans le corps de l’architecture process(A, B, op) begin case op is when 0 => F <= A + B; when 1 => F <= A - B; when 2 => F <= shift_right(A, 1); when 3 => F <= shift_left(A, 1); when 4 => F <= not(A); when 5 => F <= A and B; when 6 => F <= A or B; when 7 => F <= A; when others => F 'X'); end case; end process;
9
Exemple de description d’un processeur (5) Il faut (bien sûr) définir les instructions et les grouper par types. Il faut spécifier leur encodage (on aimerait éviter d’avoir à le faire). 9 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel instructionbits 15-12bits 11-8bits 7-4bits 3-0 R dest ← R source1 ◊ R source2 {0|op 2 |op 1 |op 0 }destinationsource1source2 R dest ← MD[adresse]1000destinationadresse[7:4]adresse[3:0] MD[adresse] ← R source 1001sourceadresse[7:4]adresse[3:0] JUMP adresse1100conditionadresse[7:4]adresse[3:0] STOP1111---
10
Exemple de description d’un processeur (6) Les choses se gâtent quand vient le temps de décrire le cycle des instructions. 10 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel -- dans la partie déclarative de l’architecture type type_etat is (depart, querir, decoder, stop, ecrireMemoire, lireMemoire, opUAL, jump); signal etat : type_etat; signal PC : integer range 0 to (2 ** Mi - 1); -- compteur de programme signal IR : std_logic_vector(Wi - 1 downto 0); -- registre d'instruction -- dans le corps de l’architecture process (CLK, reset) begin if rising_edge(CLK) then if reset = '1' then etat <= depart; else case etat is when depart => PC <= 0; etat <= querir; when querir => IR <= memoireInstructions(PC); PC <= PC + 1; etat <= decoder; when decoder => if (IR(15) = '0') then etat <= opUAL; else case IR(14 downto 12) is when "000" => etat <= lireMemoire; when "001" => etat <= ecrireMemoire; when "100" => etat <= jump; when "111" => etat <= stop; when others => etat <= stop; end case; end if; when opUAL | lireMemoire | ecrireMemoire => -- etc. … end case; end if; end process;
11
Exemple de description d’un processeur (7) En plus, il faut faire explicitement l’assignation de valeurs aux différents signaux de contrôle à l’aide d’énoncés concurrents Les signaux de contrôle dépendent soit de l’état courant de la machine, de la valeur du registre des instructions, ou des deux. 11 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel adresseMemoireDonnees <= to_integer(unsigned(IR(7 downto 0))); lectureEcritureN <= '0' when etat = ecrireMemoire else '1'; choixSource <= 0 when etat = opUAL else 3; choixCharge <= to_integer(unsigned(IR(11 downto 8))); choixA <= to_integer(unsigned(IR(7 downto 4))); choixB <= to_integer(unsigned(IR(11 downto 8))) when etat = ecrireMemoire else to_integer(unsigned(IR(3 downto 0))); charge <= '1' when etat = opUAL or etat = lireMemoire else '0'; op <= to_integer(unsigned(IR(14 downto 12)));
12
Exemple de description d’un processeur (8) On pourrait aussi utiliser un langage de haut niveau comme C, mais alors il est difficile (voir impossible) de modéliser la concurrence dans le processeur. 12 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
13
Jeu d’instructions vs microarchitecture vs réalisation Architecture du jeu d’instructions (Instruction Set Architecture – ISA) Le contrat avec le programmeur et le compilateur. Définit l’apparence fonctionnelle du processeur Opérations, types de données, modes d’adressage, registres visibles, etc. Implémentation ou microarchitecture Point de vue du concepteur du processeur Circuits logiques qui implémentent l’architecture Pipelines, unités fonctionnelles, registres physiques Réalisation Point de vue du concepteur de circuit ou de la puce Réalisation physique des circuits logiques Portes, cellules, transistors, fils, etc. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel 13
14
Survol de la présentation Un exemple pour commencer Langages de description architecturale (Architecture Description Languages – ADL): origines et besoins ADL: exploration de l’espace de conception et vérification Taxonomie des ADL et exemples: ADL structurels; ADL comportementaux; ADL mixtes. ADL LISA: un peu plus Résumé, conclusion, références 14 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
15
ADL: origines Le concept d’ADL existe dans le domaine du logiciel depuis un certain temps (voir références à la fin). Le terme architecture réfère au composantes du système: leur comportement; et leurs interactions. L’architecture d’un système est souvent représentée par un diagramme de blocs. Un ADL vient formaliser la représentation. Quelques besoins pour un ADL: représenter les composantes du système; représenter leurs interconnexions; exploiter l’abstraction et l’encapsulation; représenter le comportement dynamique; permettre la production d’outils ou d’autres artéfacts à partir de la description. 15 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
16
ADL et autres langages Pour un ADL qui décrit un processeur, on devrait pouvoir représenter: les composantes du processeur; leurs interconnexions; le comportement du processeur via son jeu d’instructions. La différence entre les ADL et les autres langages vient surtout: du niveau d’abstraction désiré: trop haut: on a le comportement global du système, mais pas de ses composantes; trop bas: on est perdu dans les détails (e.g. VHDL). de la possibilité d’illustrer la concurrence et la synchronisation. 16 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel P. Ienne et R. Leupers, Customizable Embedded Processors, Morgan Kaufmann, 2007.
17
Besoin pour des ADL On a besoin d’un mécanisme de description et modélisation du processeur afin de pouvoir: expérimenter avec différentes options et obtenir des métriques de performance et de coût; produire une description synthétisable du processeur; développer automatiquement des outils de support pour le processeur (vérification, compilation, simulation, débogage). Les langages de programmation et les langages de description matérielle sont mal adaptés à la modélisation de processeurs. Un ADL devrait: permettre de décrire un processeur du plus haut niveau possible; et, offrir une corrélation claire et directe entre la spécification et la description. 17 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
18
À quoi servent les ADL Décrire un processeur n’est pas un but en soi. On a besoin: d’une liste des interconnexions (netlist) afin de pouvoir implémenter le processeur en matériel; de vérifier que la description est conforme aux spécifications; des outils de développement: compilateur, simulateur, assembleur, débogueur. 18 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel P. Ienne et R. Leupers, Customizable Embedded Processors, Morgan Kaufmann, 2007.
19
Jeu d’instructions vs microarchitecture vs réalisation Architecture du jeu d’instructions (Instruction Set Architecture – ISA) Le contrat avec le programmeur et le compilateur. Définit l’apparence fonctionnelle du processeur Opérations, types de données, modes d’adressage, registres visibles, etc. Implémentation ou microarchitecture Point de vue du concepteur du processeur Circuits logiques qui implémentent l’architecture Pipelines, unités fonctionnelles, registres physiques Réalisation Point de vue du concepteur de circuit ou de la puce Réalisation physique des circuits logiques Portes, cellules, transistors, fils, etc. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel 19
20
Survol de la présentation Un exemple pour commencer Langages de description architecturale (Architecture Description Languages – ADL): origines et besoins ADL: exploration de l’espace de conception et vérification Taxonomie des ADL et exemples: ADL structurels; ADL comportementaux; ADL mixtes. ADL LISA: un peu plus Résumé, conclusion, références 20 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
21
Exploration de l’espace de conception avec un ADL Un processus de conception itératif peut être suivi à l’aide: d’une description d’un processeur avec un ADL; d’outils d’interprétation de la description pour produire des modèles et outils de conception et d’évaluation. 21 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel P. Ienne et R. Leupers, Customizable Embedded Processors, Morgan Kaufmann, 2007.
22
Flot de vérification avec un ADL (1) À partir d’une spécification, on produit la description du processeur avec un ADL (idéalement: la même chose). Il faut vérifier que la description correspond bien à la spécification. À partir de la description, on produit le simulateur, la liste des interconnexions et des cas de test. La liste des interconnexions est implémentée. Le système implémenté est comparé à la liste des interconnexions, tout en vérifiant des propriétés spécifiques. Les vecteurs de test sont appliqués au simulateur ainsi qu’au système implémenté, et on vérifie que la sortie est la même dans les deux cas. On observe qu’on a effectivement deux chemins à partir de la description du processeur en ADL. 22 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel P. Ienne et R. Leupers, Customizable Embedded Processors, Morgan Kaufmann, 2007.
23
Flot de vérification avec un ADL (2) 23 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel P. Ienne et R. Leupers, Customizable Embedded Processors, Morgan Kaufmann, 2007.
24
Survol de la présentation Un exemple pour commencer Langages de description architecturale (Architecture Description Languages – ADL): origines et besoins ADL: exploration de l’espace de conception et vérification Taxonomie des ADL et exemples: ADL structurels; ADL comportementaux; ADL mixtes. ADL LISA: un peu plus Résumé, conclusion, références 24 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
25
Taxonomie des ADL On peut classifier les ADL dans un espace à deux dimensions: par le contenu: structurel, comportemental ou mixte; par l’objectif: synthèse, validation, compilation, et simulation. Pour la dimension du contenu, on détermine la nature de l’information capturée par l’ADL. Pour la dimension de l’objectif, on détermine le produit principal obtenu de la description par ADL. Il y a une certaine correspondance entre le contenu et l’objectif. 25 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel classification des ADL contenu structurelmixtecomportemental objectif synthèse MIMOLA LISA, EXPRESSION ? validation compilation ?ISDL, nML simulation
26
ADL structurels Les ADL structurels représentent un processeur à un niveau proche du transfert par registre (Register Transfer Level – RTL). Il est relativement facile d’obtenir une liste d’interconnections à partir d’une description en langage structurel. Il est difficile d’obtenir le jeu d’instructions à partir de la structure. Exemple: MIMOLA (Université Dortmund, début des années 1990): grandes similarités avec VHDL et Verilog, syntaxe inspirée de Pascal. 26 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel LOCATION_FOR_PROGRAMCOUNTER PCReg; LOCATION_FOR_INSTRUCTIONS IM[0..1023];... MODULE Alu (IN i1, i2: (15:0); OUT outp: (15:0)); IN ctr: (1:0)); CONBEGIN outp <− CASE ctr OF 0: i1 + i2 ; 1: i1 - i2 ; 2: i1 AND i2 ; 3: i1 ; END AFTER 1; CONEND;... CONNECTIONS ALU.outp -> ACC.inp ACC.outp -> ALU.inp
27
ADL structurels: exemple Mimola détaillé (1) 27 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel MODULE SimpleProcessor (IN inp:(7:0); OUT outp:(7:0)); STRUCTURE IS -- outermost module is a structural one TYPE InstrFormat = FIELDS -- 21-bit horizontal instruction word imm: (20:13); RAMadr: (12:5); RAMctr: (4); mux: (3:2); alu: (1:0); END; Byte = (7:0); Bit = (0); -- scalar types PARTS -- instantiate behavioral modules IM: MODULE InstrROM (IN adr: Byte; OUT ins: InstrFormat); VAR storage: ARRAY[0..255] OF InstrFormat; CONBEGIN ins <- storage[adr]; CONEND; PC, REG: MODULE Reg8bit (IN data: Byte; OUT outp: Byte); VAR R: Byte; CONBEGIN R := data; outp <- R; CONEND; PCIncr: MODULE IncrementByte (IN data: Byte; OUT inc: Byte); CONBEGIN outp <- INCR data; CONEND;
28
ADL structurels: exemple Mimola détaillé (2) 28 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel RAM: MODULE Memory (IN data, adr: Byte; OUT outp: Byte; FCT c: Bit); VAR storage: ARRAY[0..255] OF Byte; CONBEGIN CASE c OF: 0: NOLOAD storage; 1: storage[adr] := data; END; outp <- storage[adr]; CONEND; ALU: MODULE AddSub (IN d0, d1: Byte; OUT outp: Byte; FCT c: (1:0)); CONBEGIN -- "%" denotes binary numbers outp <- CASE c OF %00: d0 + d1; %01: d0 - d1; %1x: d0; END; CONEND; MUX: MODULE Mux3x8 (IN d0,d1,d2: Byte; OUT outp: Byte; FCT c: (1:0)); CONBEGIN outp <- CASE c OF 0: d0; 1: d1; ELSE: d2; END; CONEND; CONNECTIONS -- controller: -- data path: PC.outp -> IM.adr; IM.ins.imm -> MUX.d0; PC.outp -> PCIncr.data; inp -> MUX.d1; -- primary input PCIncr.outp -> PC.data; RAM.outp -> MUX.d2; IM.ins.RAMadr -> RAM.adr; MUX.outp -> ALU.d1; IM.ins.RAMctr -> RAM.c; ALU.outp -> REG.data; IM.ins.alu -> ALU.c; REG.outp -> ALU.d0; IM.ins.mux -> MUX.c; REG.outp -> outp; -- primary output END; LOCATION_FOR_PROGRAMCOUNTER PC; LOCATION_FOR_INSTRUCTIONS IM; END; -- STRUCTURE
29
ADL comportementaux Les ADL comportementaux représentent directement le jeu d’instructions du processeur et ignorent les ‘détails’ structurels. En pratique, il faut quand même fournir un minimum d’information structurelle, comme par exemple le nombre de registres et la taille des mémoires. Exemple: nML (Université Technique de Berlin, début des années 1990). 29 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel op num_instruction(a:num_action, src:SRC, dst:DST) action { temp_src = src; temp_dst = dst; a.action; dst = temp_dst; } op num_action = add | sub | mul | div op add() action = { temp_dst = temp_dst + temp_src }...
30
ADL mixtes Les ADL mixtes représentent à la fois la structure et le comportement du processeur. Exemple: LISA (Language for Instruction Set Architectures), développé à l’Université Technique de Aachen, au milieu des années 1990. «The development of a new language was necessary in order to cover the gap between coarse ISA models used in compilers, and instruction-set simulators on the one hand, and detailed models used for hardware design on the other.» Zivojnovic et al., 1996. 30 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
31
Survol de la présentation Un exemple pour commencer Langages de description architecturale (Architecture Description Languages – ADL): origines et besoins ADL: exploration de l’espace de conception et vérification Taxonomie des ADL et exemples: ADL structurels; ADL comportementaux; ADL mixtes. ADL mixte LISA: un peu plus Résumé, conclusion, références 31 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
32
LISA: un peu plus (1) Le comportement du processeur est défini par: son état interne; les fonctions de transition entre les états; et, les entrées et sorties. 32 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
33
LISA: un peu plus (2) Le langage décrit: les éléments d’entreposage; et, le comportement des instructions à exécuter. 33 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel LISA Modeling Fundamentals, CoWare inc., Dec. 2006.
34
LISA: un peu plus (3) Le jeu d’instructions est représenté par une hiérarchie dans un graphe acyclique dirigé. 34 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel LISA Modeling Fundamentals, CoWare inc., Dec. 2006.
35
LISA: un peu plus (4) La définition d’une instruction comporte trois composantes: la syntaxe; l’encodage; et, le comportement. 35 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel LISA Modeling Fundamentals, CoWare inc., Dec. 2006.
36
LISA: un peu plus (5) Les ‘ressources’ du processeur incluent les registres et les ports d’entrées et sorties. La déclaration des ‘ressources’ utilise des mots clés du langage, comme REGISTER et PROGRAM_COUNTER. 36 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel LISA Modeling Fundamentals, CoWare inc., Dec. 2006.
37
LISA: un peu plus (6) La mémoire est déclarée avec entre autres les mots clés RAM et MEMORY_MAP. 37 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel LISA Modeling Fundamentals, CoWare inc., Dec. 2006.
38
LISA: un peu plus (7) Les instructions sont décrites par les mots clés OPERATION, SYNTAX, CODING et BEHAVIOR. 38 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel LISA Modeling Fundamentals, CoWare inc., Dec. 2006.
39
LISA: un peu plus (8) On peut déclarer une hiérarchie d’opérations, ce qui a pour effet de simplifier leur encodage. 39 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel LISA Modeling Fundamentals, CoWare inc., Dec. 2006.
40
LISA: un peu plus (9) Il est possible de déclarer des opérandes génériques (qui peuvent provenir de n’importe quel registre). 40 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel LISA Modeling Fundamentals, CoWare inc., Dec. 2006.
41
LISA: un peu plus (10) Il est possible de forcer le partage de ressources entre différentes opérations, comme par exemple LOAD et ALU qui écrivent toutes deux dans un registre. 41 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel LISA Modeling Fundamentals, CoWare inc., Dec. 2006.
42
Quelques références P. Mishra et N. Dutt, « Architecture Description Languages », dans P. Ienne et R. Leupers, Customizable Embedded Processors, Morgan Kaufman, 2007. Clements, P.C., "A survey of architecture description languages," Proceedings of the 8th International Workshop on Software Specification and Design, pp.16-25, March 1996. W. Qin, S. Malik, « Architecture Description languages for retargetable compilation, » in The Compiler Design Handbook: Optimizations & Machine Code Generation, CRC Press, 2002, Y. N. Srikant and Priti Shankar, Editors. [en ligne par la bibliothèque] Zivojnovic, V.; Pees, S.; Meyr, H., "LISA-machine description language and generic machine model for HW/SW co-design," Workshop on VLSI Signal Processing, pp.127-136, 1996. http://www.ieeexplore.ieee.org/iel3/4071/12058/00558311.pdf 42 INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.