©frédéric bastien 2006 université de montréal 1 lisatek lisatek pour concevoir des processeurs

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

Upload: estee-lecocq

Post on 04-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

11

LISATekLISATek

LISATek pour concevoir des LISATek pour concevoir des processeursprocesseurs

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

22

Plan de la Plan de la présentationprésentationCaractéristiqueCaractéristiqueLe codage du modèleLe codage du modèlePipelinePipelineSynthèseSynthèseGénération de documentationGénération de documentationModèle déjà existantModèle déjà existantConclusionConclusionRéférenceRéférence

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

33

Caractéristique publicitaireCaractéristique publicitaire

Environnement de développement Environnement de développement intégré pour le design de processeur intégré pour le design de processeur et la création d'outils de et la création d'outils de développement de logiciel (tools développement de logiciel (tools chains).chains).

Aucune expertise en conception de Aucune expertise en conception de processeur n’est requise.processeur n’est requise.

Diminue en nombre de mois le temps Diminue en nombre de mois le temps de conception de processeur.de conception de processeur.

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

44

Caractéristique publicitaireCaractéristique publicitaire

Élimine des années de travail pour la Élimine des années de travail pour la création d'outils de développement de création d'outils de développement de programme – même pour des programme – même pour des processeurs non crée avec LISATekprocesseurs non crée avec LISATek

Garantie la compatibilité du simulateur Garantie la compatibilité du simulateur d'instruction, des outils de création de d'instruction, des outils de création de programme et du RTL. [C'est dû au fait programme et du RTL. [C'est dû au fait que tout est dérivé de la même source]que tout est dérivé de la même source]

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

55

Caractéristique publicitaireCaractéristique publicitaire

L'environnement de développement L'environnement de développement des programmes permet le des programmes permet le développement des programmes avant développement des programmes avant la disponibilité du silicone.la disponibilité du silicone.

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

66

Vue globaleVue globale

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

77

Autres caractéristique Autres caractéristique

Précis à l'instruction ou au cyclePrécis à l'instruction ou au cycleDébuggeur inclus.Débuggeur inclus.Profileur inclus.Profileur inclus.Aide à la conception des instructions, des Aide à la conception des instructions, des ressources et du compilateur.ressources et du compilateur.Peut générer l'assembleur, le linker, le HDL Peut générer l'assembleur, le linker, le HDL (VHDL ou Vérilog) synthétisable (avec (VHDL ou Vérilog) synthétisable (avec certaine restriction), le compilateur C, PSP certaine restriction), le compilateur C, PSP (Package Support Processor) et la (Package Support Processor) et la documentation du jet d’instruction.documentation du jet d’instruction.Langage du modèle semblable au C.Langage du modèle semblable au C.

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

88

Le codage du modèleLe codage du modèle

On définit les Ressources globalesOn définit les Ressources globalesRESOURCERESOURCE{ ...}{ ...}

On définit les opérations (instructions, On définit les opérations (instructions, opérandes)opérandes) OPERATION{ ...}OPERATION{ ...}

Les opérations main et reset sont Les opérations main et reset sont nécessaire pour générer le simulateur.nécessaire pour générer le simulateur.

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

99

La section La section RESOURCERESOURCERESOURCE{RESOURCE{

BUS char common_bus{BUS char common_bus{ ADDRTYPE(unsigned long);ADDRTYPE(unsigned long); BLOCKSIZE(8,8);BLOCKSIZE(8,8); };};

MEMORY_MAP{MEMORY_MAP{ BUS(common_bus), RANGE(0x0000, 0x0fff)BUS(common_bus), RANGE(0x0000, 0x0fff)

-> prog_mem[(31..0)];-> prog_mem[(31..0)]; BUS(common_bus), RANGE(0x1000, 0x1fff)BUS(common_bus), RANGE(0x1000, 0x1fff)

-> data_mem[(31..0)];-> data_mem[(31..0)]; }}

RAM char prog_mem{RAM char prog_mem{ SIZE(0x1000);SIZE(0x1000); BLOCKSIZE(8,8);BLOCKSIZE(8,8); FLAGS(R|X); // Obligatoire par défaut pas XFLAGS(R|X); // Obligatoire par défaut pas X };};

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

1010

La section La section RESOURCERESOURCE 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;CONTROL_REGISTER short ST;

bit[17] MUL_IN[0..1]; bit[17] MUL_IN[0..1];

long cycle, instruction_counter;long cycle, instruction_counter;

}}

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

1111

L’opération mainL’opération main

Est l’opération qui sera activée à Est l’opération qui sera activée à chaque cycle. chaque cycle.

C’est elle qui doit activer les autres C’est elle qui doit activer les autres opérations nécessaires. Donc, elle opérations nécessaires. Donc, elle appellera d’autres opérations.appellera d’autres opérations.

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

1212

L’opération mainL’opération mainOPERATION main { OPERATION main {

DECLARE { INSTANCE decode; }DECLARE { INSTANCE decode; }BEHAVIOR { char tmp1, tmp2; BEHAVIOR { char tmp1, tmp2; common_bus.read(PC+1, &tmp1); common_bus.read(PC+1, &tmp1); common_bus.read(PC, &tmp2);common_bus.read(PC, &tmp2);

IR = (((unsigned char)tmp1) << 8) IR = (((unsigned char)tmp1) << 8) | ((unsigned char) tmp2);| ((unsigned char) tmp2);

decode();decode();PC += 2; PC += 2;

}} }}

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

1313

L’opération resetL’opération reset

Sers à mettre les ressources du Sers à mettre les ressources du processeur à des valeurs par défaut.processeur à des valeurs par défaut.

Sers à initialiser le processeur au Sers à initialiser le processeur au démarrage.démarrage.

Sert lors d’une réinitialisions du Sert lors d’une réinitialisions du processeur.processeur.

Cette opération contient qu’une Cette opération contient qu’une partie comportementale (behavior).partie comportementale (behavior).

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

1414

L’opération resetL’opé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;

} }

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

1515

LISA_PROGRAM_COUNTERLISA_PROGRAM_COUNTERLISA_PROGRAM_COUNTERLISA_PROGRAM_COUNTER est une est une

variable spécifique de LISA qui variable spécifique de LISA qui contient l’adresse de début du contient l’adresse de début du programme qui roule sur le programme qui roule sur le processeur. C’est défini à partir du processeur. C’est défini à partir du fichier ELF/COFF quand le programme fichier ELF/COFF quand le programme est chargé.est chargé.

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

1616

L’opération decodeL’opération decode

OPERATION decode {

DECLARE { GROUP instruction = { NOP }; }

CODING AT (PC) { IR == instruction }

SYNTAX { instruction }

BEHAVIOR {instruction(); }

}

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

1717

L’opération NOPL’opération NOP

OPERATION NOP {

CODING { 0b0[16] }

SYNTAX { "NOP" }// NOP

BEHAVIOR { printf("Nothing to do\n"); }

}

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

1818

L’opération ADDL’opé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; }

}

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

1919

reg16reg16

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

}

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

2020

Stockage de donnéesStockage 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);

}}

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

2121

Contrôle de flot de donnéeContrô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; } }

}

}

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

2222

Contrôle de flot de donnéeContrô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 }

} } }

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

2323

Les ressources des pipelinesLes ressources des pipelines

Ajout de la ressource dans RESOURCEAjout de la ressource dans RESOURCE– PIPELINE pipe = { FD; AG; EX }; PIPELINE pipe = { FD; AG; EX };

Ajout des codes dans le main:Ajout des codes dans le main:– PIPELINE(pipe).execute();PIPELINE(pipe).execute();– PIPELINE(pipe).shift(); PIPELINE(pipe).shift();

Ajout de la section ACTIVATION dans Ajout de la section ACTIVATION dans les opérationsles opérations– ACTIVATION { decode } ACTIVATION { decode }

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

2424

Pipeline opérationPipeline opération

PIPELINE(pipe).execute();PIPELINE(pipe).execute();

PIPELINE(pipe).shift();PIPELINE(pipe).shift();

PIPELINE(pipe).flush();PIPELINE(pipe).flush();

PIPELINE(pipe).stall(cycles); //default PIPELINE(pipe).stall(cycles); //default 00

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

2525

L’opération main d’une pipelineL’opération main d’une pipelineOPERATION 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 }

}

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

2626

Les opérations d’une pipelineLes opérations d’une pipelineOPERATION 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 }

}

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

2727

Registre de pipelineRegistre de pipeline

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

2828

Registre de pipelineRegistre de pipelineÉvite les conflits de données.Évite les conflits de données.

RESOURCE{RESOURCE{

……PIPELINE_REGISTER IN pipe {PIPELINE_REGISTER IN pipe {

unsigned short instr;unsigned short instr;

short pc;short pc;

}; };

……

}}

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

2929

Registre de pipelineRegistre de pipelinePIPELINE_REGISTER(PIPELINE_REGISTER(pipe_identpipe_ident, , stage1 / stage1 / stage2 stage2 ).).elementelement PIPELINE_REGISTER(PIPELINE_REGISTER(pipe_identpipe_ident, , stage1 / stage1 / stage2 stage2 ).execute()).execute() PIPELINE_REGISTER(PIPELINE_REGISTER(pipe_identpipe_ident, , stage1 / stage1 / stage2 stage2 ).flush()).flush() PIPELINE_REGISTER(PIPELINE_REGISTER(pipe_identpipe_ident, , stage1 / stage1 / stage2 stage2 ).shift()).shift() PIPELINE_REGISTER(PIPELINE_REGISTER(pipe_identpipe_ident, , stage1 / stage1 / stage2 stage2 ).stall()).stall() PIPELINE_REGISTER(PIPELINE_REGISTER(pipe_identpipe_ident, , stage1 / stage1 / stage2 stage2 ).stalled()).stalled()

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

3030

SynthèseSynthèseUNITUNIT– Les opérations assignées à une unité doivent être Les opérations assignées à une unité doivent être

activées par d’autres opérations.activées par d’autres opérations.– Toutes les opérations dans l’unité doivent être dans le Toutes les opérations dans l’unité doivent être dans le

même étage du pipeline.même étage du pipeline.USESUSES– Les interconnections de/a des ressources qui ne sont pas Les interconnections de/a des ressources qui ne sont pas

dans l’étage courant du pipeline doivent être spécifier dans l’étage courant du pipeline doivent être spécifier par le mot clé USES.par le mot clé USES.

– Le mot-clé USES n’est pas requis si on active l’analyse Le mot-clé USES n’est pas requis si on active l’analyse comportementale dans la configuration.comportementale dans la configuration.

– Elle est nécessaire seulement si l’opération a une section Elle est nécessaire seulement si l’opération a une section BEHAVIOR.BEHAVIOR.

REGISTERREGISTER– Pour agir comme un Flip-Flop utiliser le mot clé Pour agir comme un Flip-Flop utiliser le mot clé

TClocked.TClocked.

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

3131

SynthèseSynthèseUNITUNITUNIT Fetch {fetch;};UNIT Fetch {fetch;};UNIT AddressGeneration {load_address;};UNIT AddressGeneration {load_address;};UNIT LoadStoreBranches {LDL,LDH,LDR,STR,BC,B,BDS;};UNIT LoadStoreBranches {LDL,LDH,LDR,STR,BC,B,BDS;};UNIT Arithmetic {MUL,ADD, reset_branch_flag;}; UNIT Arithmetic {MUL,ADD, reset_branch_flag;};

USES USES BEHAVIOR USES ( READ src1, src2; WRITE dst; ) { BEHAVIOR USES ( READ src1, src2; WRITE dst; ) {

dst = src1 + src2;dst = src1 + src2; }}

REGISTERREGISTERREGISTER TClocked<short> R[0..15]; REGISTER TClocked<short> R[0..15];

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

3232

SynthèseSynthèseBEHAVIOR BEHAVIOR – Une règle importante de LISATek 2.0 pour la Une règle importante de LISATek 2.0 pour la

génération de HDL est que les appelles de génération de HDL est que les appelles de fonction de pipeline comme flushes et stalls fonction de pipeline comme flushes et stalls doivent être appelé de la section ACTIVATION. doivent être appelé de la section ACTIVATION. Les fonctions de pipeline appelé dans la Les fonctions de pipeline appelé dans la section BEHAVIOR sont ignoré pour la section BEHAVIOR sont ignoré pour la génération du code HDL.génération du code HDL.

– Comme l’instruction Comme l’instruction load_addrload_addr est assigné a est assigné a une unité, l’appel dans l’instruction une unité, l’appel dans l’instruction insn_memory_accessinsn_memory_access doit être remplacer par doit être remplacer par une activation.une activation.

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

3333

SynthèseSynthèse

BEHAVIORBEHAVIOROPERATION insn_memory_access IN OPERATION insn_memory_access IN

pipe.AG {pipe.AG {

// ... // ...

BEHAVIOR { // load_addr(); }BEHAVIOR { // load_addr(); }

ACTIVATION { insn, ACTIVATION { insn, load_addr }load_addr }

}  } 

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

3434

Génération de documentationGénération de documentationSi crée un processeur VLIW il faut utiliser Si crée un processeur VLIW il faut utiliser le mots clé INSTRUCTION a la place des le mots clé INSTRUCTION a la place des opérations qui on dans leur hiérarchie des opérations qui on dans leur hiérarchie des instructions. S’il n’est pas présent, le instructions. S’il n’est pas présent, le simulateur va utiliser la racine.simulateur va utiliser la racine.Permet de documenter les instructions et Permet de documenter les instructions et les opérandesles opérandesLa section DOCUMENTATION peut être La section DOCUMENTATION peut être mise dans un IF-THEN-ELSE, SWITCH-CASE mise dans un IF-THEN-ELSE, SWITCH-CASE ou OPERATIONou OPERATION

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

3535

Génération de documentationGénération de documentation

Format utilisé pour décrire une Format utilisé pour décrire une instruction.instruction.– DOCUMENTATION ( “ InstructionName DOCUMENTATION ( “ InstructionName

” ) { commentaire }” ) { commentaire }

Format utilisé pour décrire une Format utilisé pour décrire une opérandes.opérandes.– DOCUMENTATION { commentaire sur DOCUMENTATION { commentaire sur

une ligne}une ligne}

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

3636

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

3737

Les modèles déjà existantsLes modèles déjà existantsIl y a plusieurs modèles déjà fournis, dont Il y a plusieurs modèles déjà fournis, dont tous ceux des tutoriels.tous ceux des tutoriels.Il y a des processeurs RISC à 4 étages qui Il y a des processeurs RISC à 4 étages qui sont synthétisables et dont on peut générer sont synthétisables et dont on peut générer le compilateur Cle compilateur CIl y a des VLIWIl y a des VLIWIl y a une FFTIl y a une FFTIl y a des modèles incomplets pour partir un Il y a des modèles incomplets pour partir un processeur RISC, VLIW ou RISC avec des processeur RISC, VLIW ou RISC avec des instructions de tailles différence (8 et 16 instructions de tailles différence (8 et 16 bits)bits)

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

3838

ConclusionConclusionLISATek semble est un produit qui rend LISATek semble est un produit qui rend plus facile la création d’un processeur plus facile la création d’un processeur pour quelqu’un qui n’est pas pour quelqu’un qui n’est pas expérimenter.expérimenter.LISATek simplifie la création d’outils de LISATek simplifie la création d’outils de développement de logiciel.développement de logiciel.Un non expert peut créer un processeur. Un non expert peut créer un processeur. Mais pour avoir une bonne performance Mais pour avoir une bonne performance en vitesse à la synthèse, je pense qu’il en vitesse à la synthèse, je pense qu’il doit bien comprendre le fonctionnement doit bien comprendre le fonctionnement et les implémentations possibles.et les implémentations possibles.

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

©Frédéric Bastien 2006©Frédéric Bastien 2006Université de MontréalUniversité de Montréal

LisaTekLisaTek

3939

RéférenceRéférence

www.coware.comwww.coware.com

LISA 2.0 Language Tutorial : The QSIP LISA 2.0 Language Tutorial : The QSIP Architecture (HTML)Architecture (HTML)

LISA Language Reference ManualLISA Language Reference Manual

INFINEONSUCCESS.pdfINFINEONSUCCESS.pdf

LISATEKSTMSUCCESSFINAL.PDFLISATEKSTMSUCCESSFINAL.PDF