©Frédéric Bastien 2006 Université de Montréal 1 LISATek LISATek pour concevoir des processeurs.

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

sont des registres 32 bits
Les fonctions A quoi ça sert ?
Introduction au Langage C,C++
Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Rappels C.
Développement logiciel sur micro-contrôleurs PIC en C
Introduction au langage C
Formation universitaire à .NET: Introduction à C#
ARCHITECTURE INTERNE d’un MICROPROCESSEUR
Jacques Lonchamp IUT Nancy Charlemagne – DUT Informatique 1A
(Classes prédéfinies – API Java)
Objectif de l’exposé.
A abstraction b assembleur c nombre binaire d bit e cache f UC g puce h compilateur i famille dordinateurs j contrôle k chemin de données l défaut m dé
Objectifs Identifier l’interface entre le logiciel de plus bas niveau et le matériel Comprendre la problématique de l’architecture du jeu d’instruction.
la programmation en langage C
C.
Objectifs Nous allons concevoir une mise en œuvre contenant un noyau de jeu d’instructions. Nous verrons comment l’architecture de jeu d’instructions.
Le Concept du programme enregistré
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Flow de conception (4h)-demo
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Système d’exploitation : Assembleur
ARCHITECTURE GLOBALE CAPTAGE Traitement DES des données GRANDEURS
Cours 8 5. Appels de fonctions Le matériel Concepts de pile
Initiation aux bases de données et à la programmation événementielle
Structure de la famille de DSP Motorola 56300
Plan de l’exposé Introduction Revue de littérature Méthodologie
Des outils pour le développement logiciel
Système d’exploitation : Assembleur
Programmation Initiation Aux Langages C et C++ (2) Bruno Permanne 2006.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Automatisation des déplacement d’un véhicule
Formation en alternance
GPA770: Microélectronique appliquée
Programmation concurrente
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
La programmation en langage C
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI
L'Unité centrale (CPU) Le CPU doit être rapide (mesuré en temps de CPU) UNITE DE CONTROLE Générer les signaux de control/temps Contrôler le décodage/exécution.
Structures des données
Programmation Système et Réseau (sous Linux)
Cours Architecture des Systèmes Informatiques
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Arithmétique entière.
Un survol du language C.
3-Présentation d’un µP simple
L’architecture du processeur Xtensa de Tensilica
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Modélisation VHDL de.
TP N°4 – M2 EEA SM Conception en Vue du Test. Objectifs Réaliser le flot complet de synthèse – test – synthèse en vue du test Utilisation d’un design.
Cours n° 1 Présentation du langage C++
Module I3 algorithmique et programmation
Entrées / Sorties.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Architecture et technologie des ordinateurs II
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Microcontrôleurs PIC. 1ère séance Présentation du PIC16F876 Outils de programmation du PIC Le langage C Exemples d’applications simples 2ème séance Présentation.
ISBN Chapitre 10 L'implémentation des sous- programmes.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. tél Fax Cours Architecture des.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
1 Programmation en C++ Marianne Morris. 2 Intro générale à la programmation On a déjà étudié le langage assembleur Langage de bas niveau Meilleur que.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O. et au.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Flot de conception de.
Simulateur de microcontrôleur Intel 80C51
Patricia Renault UPMC 2005/2006
Semaine 5 Registres spéciaux et périphériques internes Projet initial en ingénierie informatique et travail en équipe INF1995 Jérôme Collin et al.
Initiation aux bases de données et à la programmation événementielle
Formations Système Embarqué & Informatique Industrielle
Transcription de la présentation:

©Frédéric Bastien 2006 Université de Montréal 1 LISATek LISATek pour concevoir des processeurs

2 ©Frédéric Bastien 2006 Université de Montréal LisaTek Plan de la présentation Caractéristique Le codage du modèle PipelineSynthèse Génération de documentation Modèle déjà existant ConclusionRéférence

3 ©Frédéric Bastien 2006 Université de Montréal LisaTek Caractéristique publicitaire Environnement de développement intégré pour le design de processeur et la création d'outils de développement de logiciel (tools chains). Aucune expertise en conception de processeur nest requise. Diminue en nombre de mois le temps de conception de processeur.

4 ©Frédéric Bastien 2006 Université de Montréal LisaTek Caractéristique publicitaire Élimine des années de travail pour la création d'outils de développement de programme – même pour des processeurs non crée avec LISATek Garantie la compatibilité du simulateur d'instruction, des outils de création de programme et du RTL. [C'est dû au fait que tout est dérivé de la même source]

5 ©Frédéric Bastien 2006 Université de Montréal LisaTek Caractéristique publicitaire L'environnement de développement des programmes permet le développement des programmes avant la disponibilité du silicone.

©Frédéric Bastien 2006 Université de Montréal 6 Vue globale

7 ©Frédéric Bastien 2006 Université de Montréal LisaTek Autres caractéristique Précis à l'instruction ou au cycle Débuggeur inclus. Profileur inclus. Aide à la conception des instructions, des ressources et du compilateur. Peut générer l'assembleur, le linker, le HDL (VHDL ou Vérilog) synthétisable (avec certaine restriction), le compilateur C, PSP (Package Support Processor) et la documentation du jet dinstruction. Langage du modèle semblable au C.

8 ©Frédéric Bastien 2006 Université de Montréal LisaTek Le codage du modèle On définit les Ressources globales RESOURCE {...} On définit les opérations (instructions, opérandes)OPERATION{...} Les opérations main et reset sont nécessaire pour générer le simulateur.

©Frédéric Bastien 2006 Université de Montréal 9 La section RESOURCE RESOURCE{ BUS char common_bus{ ADDRTYPE(unsigned long); ADDRTYPE(unsigned long); BLOCKSIZE(8,8); BLOCKSIZE(8,8); }; };MEMORY_MAP{ BUS(common_bus), RANGE(0x0000, 0x0fff) BUS(common_bus), RANGE(0x0000, 0x0fff) -> prog_mem[(31..0)]; BUS(common_bus), RANGE(0x1000, 0x1fff) BUS(common_bus), RANGE(0x1000, 0x1fff) -> data_mem[(31..0)]; } RAM char prog_mem{ SIZE(0x1000); SIZE(0x1000); BLOCKSIZE(8,8); BLOCKSIZE(8,8); FLAGS(R|X); // Obligatoire par défaut pas X FLAGS(R|X); // Obligatoire par défaut pas X }; };

©Frédéric Bastien 2006 Université de Montréal 10 La section RESOURCE RAM char data_mem{ RAM char data_mem{ SIZE(0x1000); SIZE(0x1000); BLOCKSIZE(8,8); BLOCKSIZE(8,8); FLAGS(R|W); FLAGS(R|W); }; }; PROGRAM_COUNTER int PC; PROGRAM_COUNTER int PC; REGISTER short R[0..15]; REGISTER short R[0..15]; REGISTER unsigned short IR; REGISTER unsigned short IR; CONTROL_REGISTER short ST; bit[17] MUL_IN[0..1]; bit[17] MUL_IN[0..1]; long cycle, instruction_counter; long cycle, instruction_counter;}

11 ©Frédéric Bastien 2006 Université de Montréal LisaTek Lopération main Est lopération qui sera activée à chaque cycle. Cest elle qui doit activer les autres opérations nécessaires. Donc, elle appellera dautres opérations.

12 ©Frédéric Bastien 2006 Université de Montréal LisaTek Lopération main OPERATION main { DECLARE { INSTANCE decode; } BEHAVIOR { char tmp1, tmp2; common_bus.read(PC+1, &tmp1); common_bus.read(PC, &tmp2); IR = (((unsigned char)tmp1) << 8) | ((unsigned char) tmp2); decode(); PC += 2; }}

13 ©Frédéric Bastien 2006 Université de Montréal LisaTek Lopération reset Sers à mettre les ressources du processeur à des valeurs par défaut. Sers à initialiser le processeur au démarrage. Sert lors dune réinitialisions du processeur. Cette opération contient quune partie comportementale (behavior).

14 ©Frédéric Bastien 2006 Université de Montréal LisaTek Lopération reset OPERATION reset { BEHAVIOR { for (int i = 0 ; i < 16 ; i++) { R[i] = 0; } IR = 0; ST = 0; MUL_IN[0] = MUL_IN[1] = 0; cycle = instruction_counter = 0; PC = LISA_PROGRAM_COUNTER; }

15 ©Frédéric Bastien 2006 Université de Montréal LisaTek LISA_PROGRAM_COUNTER LISA_PROGRAM_COUNTER est une variable spécifique de LISA qui contient ladresse de début du programme qui roule sur le processeur. Cest défini à partir du fichier ELF/COFF quand le programme est chargé.

16 ©Frédéric Bastien 2006 Université de Montréal LisaTek Lopération decode OPERATION decode { DECLARE { GROUP instruction = { NOP }; } CODING AT (PC) { IR == instruction } SYNTAX { instruction } BEHAVIOR {instruction(); } }

17 ©Frédéric Bastien 2006 Université de Montréal LisaTek Lopération NOP OPERATION NOP { CODING { 0b0[16] } SYNTAX { "NOP" }// NOP BEHAVIOR { printf("Nothing to do\n"); } }

18 ©Frédéric Bastien 2006 Université de Montréal LisaTek Lopération ADD OPERATION ADD { DECLARE { GROUP src1, src2, dst = { reg16 }; } CODING { 0b0011 dst src1 src2 } SYNTAX { "ADD" ~" " dst "," src1 "," src2 } //ADD R[1],R[2],R[3] BEHAVIOR { dst = src1 + src2; } }

19 ©Frédéric Bastien 2006 Université de Montréal LisaTek reg16 OPERATION reg16 { DECLARE { LABEL index; }//LABEL variable local CODING { index=0bx[4] } SYNTAX { "R[" ~index=#U ~"]" } // R[4], index est un caractère EXPRESSION { R[index] } //index est un entier }

20 ©Frédéric Bastien 2006 Université de Montréal LisaTek Stockage de données OPERATION STR { DECLARE { GROUP address = { addr8 }; GROUP addr_mode = { direct_addressing || indirect_addressing }; INSTANCE reg16, load_addr; } CODING { 0b101 addr_mode address reg16 } SYNTAX { "STR" ~" " reg16 "," address } BEHAVIOR { load_addr(); char tmp1, tmp2; tmp1 = (reg16 >> 8) & 0x00fff; tmp2 = reg16 & 0x00ff; common_bus.write(AR+1, &tmp1); common_bus.write(AR, &tmp2); }

21 ©Frédéric Bastien 2006 Université de Montréal LisaTek Contrôle de flot de donnée OPERATION load_addr { DECLARE { REFERENCE addr_mode, address; } SWITCH (addr_mode) { CASE direct_addressing: { BEHAVIOR { AR = ((R[0] << 8) | address); } }CASE indirect_addressing: { BEHAVIOR { AR = address; } } }

22 ©Frédéric Bastien 2006 Université de Montréal LisaTek Contrôle de flot de donnée OPERATION addr8 { DECLARE { LABEL addr; REFERENCE addr_mode; INSTANCE reg16;} SWITCH (addr_mode) { CASE direct_addressing: { CODING { addr=0bx[8] } SYNTAX { ~SYMBOL("0x" addr=#X) } EXPRESSION { addr } } CASE indirect_addressing: { CODING { reg16 0bx[4] } SYNTAX { reg16 } EXPRESSION { reg16 } } } }

23 ©Frédéric Bastien 2006 Université de Montréal LisaTek Les ressources des pipelines Ajout de la ressource dans RESOURCE –PIPELINE pipe = { FD; AG; EX }; Ajout des codes dans le main: –PIPELINE(pipe).execute(); –PIPELINE(pipe).shift(); Ajout de la section ACTIVATION dans les opérations –ACTIVATION { decode }

24 ©Frédéric Bastien 2006 Université de Montréal LisaTek Pipeline opération PIPELINE(pipe).execute();PIPELINE(pipe).shift();PIPELINE(pipe).flush(); PIPELINE(pipe).stall(cycles); //default 0

25 ©Frédéric Bastien 2006 Université de Montréal LisaTek Lopération main dune pipeline OPERATION main { DECLARE { INSTANCE decode; } BEHAVIOR { char tmp1, tmp2; common_bus.read(PC+1, &tmp1); common_bus.read(PC, &tmp2); IR = (((unsigned char)tmp1) << 8) | ((unsigned char) tmp2); PIPELINE(pipe).execute(); PIPELINE(pipe).shift(); cycle += 1; } ACTIVATION { decode } }

26 ©Frédéric Bastien 2006 Université de Montréal LisaTek Les opérations dune pipeline OPERATION decode IN pipe.FD { DECLARE { GROUP instruction = { insn_memory_access || insn_no_memory_access };} CODING AT (PC) { IR == instruction } SYNTAX { instruction } BEHAVIOR { PC += 2; instruction_counter += 1; } ACTIVATION { instruction } }

27 ©Frédéric Bastien 2006 Université de Montréal LisaTek Registre de pipeline

28 ©Frédéric Bastien 2006 Université de Montréal LisaTek Registre de pipeline Évite les conflits de données. RESOURCE{… PIPELINE_REGISTER IN pipe { unsigned short instr; short pc; };…}

29 ©Frédéric Bastien 2006 Université de Montréal LisaTek Registre de pipeline PIPELINE_REGISTER(pipe_ident, stage1 / stage2 ).element PIPELINE_REGISTER(pipe_ident, stage1 / stage2 ).execute() PIPELINE_REGISTER(pipe_ident, stage1 / stage2 ).flush() PIPELINE_REGISTER(pipe_ident, stage1 / stage2 ).shift() PIPELINE_REGISTER(pipe_ident, stage1 / stage2 ).stall() PIPELINE_REGISTER(pipe_ident, stage1 / stage2 ).stalled()

30 ©Frédéric Bastien 2006 Université de Montréal LisaTek Synthèse UNIT –Les opérations assignées à une unité doivent être activées par dautres opérations. –Toutes les opérations dans lunité doivent être dans le même étage du pipeline. USES –Les interconnections de/a des ressources qui ne sont pas dans létage courant du pipeline doivent être spécifier par le mot clé USES. –Le mot-clé USES nest pas requis si on active lanalyse comportementale dans la configuration. –Elle est nécessaire seulement si lopération a une section BEHAVIOR. REGISTER –Pour agir comme un Flip-Flop utiliser le mot clé TClocked.

31 ©Frédéric Bastien 2006 Université de Montréal LisaTek Synthèse UNIT UNIT Fetch {fetch;}; UNIT AddressGeneration {load_address;}; UNIT LoadStoreBranches {LDL,LDH,LDR,STR,BC,B,BDS;}; UNIT Arithmetic {MUL,ADD, reset_branch_flag;}; USES BEHAVIOR USES ( READ src1, src2; WRITE dst; ) { dst = src1 + src2; }REGISTER REGISTER TClocked R[0..15];

32 ©Frédéric Bastien 2006 Université de Montréal LisaTek Synthèse BEHAVIOR –Une règle importante de LISATek 2.0 pour la génération de HDL est que les appelles de fonction de pipeline comme flushes et stalls doivent être appelé de la section ACTIVATION. Les fonctions de pipeline appelé dans la section BEHAVIOR sont ignoré pour la génération du code HDL. –Comme linstruction load_addr est assigné a une unité, lappel dans linstruction insn_memory_access doit être remplacer par une activation.

33 ©Frédéric Bastien 2006 Université de Montréal LisaTek Synthèse BEHAVIOR OPERATION insn_memory_access IN pipe.AG { //... BEHAVIOR { // load_addr(); } ACTIVATION { insn, load_addr } }

34 ©Frédéric Bastien 2006 Université de Montréal LisaTek Génération de documentation Si crée un processeur VLIW il faut utiliser le mots clé INSTRUCTION a la place des opérations qui on dans leur hiérarchie des instructions. Sil nest pas présent, le simulateur va utiliser la racine. Permet de documenter les instructions et les opérandes La section DOCUMENTATION peut être mise dans un IF-THEN-ELSE, SWITCH- CASE ou OPERATION

35 ©Frédéric Bastien 2006 Université de Montréal LisaTek Génération de documentation Format utilisé pour décrire une instruction. –DOCUMENTATION ( InstructionName ) { commentaire } Format utilisé pour décrire une opérandes. –DOCUMENTATION { commentaire sur une ligne}

36 ©Frédéric Bastien 2006 Université de Montréal LisaTek

37 ©Frédéric Bastien 2006 Université de Montréal LisaTek Les modèles déjà existants Il y a plusieurs modèles déjà fournis, dont tous ceux des tutoriels. Il y a des processeurs RISC à 4 étages qui sont synthétisables et dont on peut générer le compilateur C Il y a des VLIW Il y a une FFT Il y a des modèles incomplets pour partir un processeur RISC, VLIW ou RISC avec des instructions de tailles différence (8 et 16 bits)

38 ©Frédéric Bastien 2006 Université de Montréal LisaTek Conclusion LISATek semble est un produit qui rend plus facile la création dun processeur pour quelquun qui nest pas expérimenter. LISATek simplifie la création doutils de développement de logiciel. Un non expert peut créer un processeur. Mais pour avoir une bonne performance en vitesse à la synthèse, je pense quil doit bien comprendre le fonctionnement et les implémentations possibles.

39 ©Frédéric Bastien 2006 Université de Montréal LisaTek Référence LISA 2.0 Language Tutorial : The QSIP Architecture (HTML) LISA Language Reference Manual INFINEONSUCCESS.pdfLISATEKSTMSUCCESSFINAL.PDF