You are on page 1of 8

Le processeur RISC dédié à la logique floue

M. HACHICHA,
Ecole Nationale des Ingénieurs de Sfax
Laboratoire L.E.T.I
B.P. W 3038 SFAX TUNISIE Tel : 216 74 27 40 88 Fax : 216 74 27 55 95
Email : m.hachicha@ttnet.tn

Résumé

Ce papier présente une contribution a l’implémentation d’un processeur flou (PF) dans
un FPGA en utilisant le langage de programmation VHDL.
Le processeur flou est maintenant plus que jamais une nécessitée vue que l’application de la
logique floue a touché la plupart des domaines. Le processeur flou donne un dynamisme à la
résolution des problèmes en logique floue. En effet, ce processeur présente des avantages par
rapport aux processeurs flous existants puisqu’il est basé sur l’architecture des processeurs
classiques RISC et avec son jeu d’instructions il offre une solution software a coté du
hardware.

Mots clés : processeur flou, VHDL, dynamisme, RISC.


INTRODUCTION calculs, bref il exécute les instructions qui ont
La logique floue a déjà fait ses preuves dans été programmées[9].
les domaines d'applications suivants[3] Toutes ces opérations sont des informations
 Gestion de projet, numériques.
 Modélisation de prix, analyse Le processeur est en fait constitué[7]:
démographique des marchés  d'une unité de commande qui lit les
 Analyse de rentabilité pour l'achat de instructions et les décode
compagnies,  d'une unité de traitement (UAL - unité
 Gestion des aspirateurs, des systèmes de arithmétique et logique) qui exécute les
ventilation, des machines à laver et de instructions.
régulation thermique, Lorsque tous les éléments d'un processeur
 Pilotage d'un système d'autofocus sont regroupés sur une même puce, on parle
d'appareil photos et cameras vidéo, alors de microprocesseur.
 Système d'approche d'une station orbitale A chaque top d'horloge le processeur [7]:
pour la navette spatiale américaine,  lit l'instruction à exécuter en mémoire
 Lecture automatique, reconnaissance de  effectue l'instruction
caractères,  passe à l'instruction suivante
 Traitements d'images, l’ajustement de Les deux grandes générations de processeurs
luminosité, de couleur et de contraste des sont [5]:
télévisions Processeur CISC
De nos jours la logique floue a passé du stade CISC signifie "Complex Instruction Set
des essais aux stades des grandes réalisations . Computer" (machine à jeu d'instructions
la solution software devient indispensable a complexe). Cette technologie utilise des jeux
coté du hardware. Mais, l’utilisation d’un PC d'instructions de longueurs variables, de
avec un processeur classique va compromettre l'ordre de 160 instructions.
les performances de ces applications. d’ou il
faut un processeur flou avec des instructions Vu la complexité de cette architecture, elles
spécifiques aux applications de la logique prennent plus de temps à s'exécuter et
floue. demandent parfois plus d'un cycle d'horloge .
Un processeur est cadencé par sa propre
Dans un premier temps on va donner une idée horloge qui se mesure en MHz . Elle lui
sur les processeurs et sur la fournit une base de temps lui servant à
logique floue. Puis, nous allons cadencer les traitements.
montrer comment faire le lien
entre ces derniers et les En utilisant l'architecture CISC, le processeur
caractéristiques correspondante. ne peut exécuter qu'une seule opération à la
Ensuite, a l’aide d’un programme fois. Il n'a qu'un seul bus le reliant à la
de test, on expliquera la méthode mémoire[6].
de résolution des problèmes par le Processeur RISC
processeur flou. Enfin, la RISC , "Reduced Instruction Set Computer"
conclusion. (machine à jeu d'instructions réduit) , a un jeu
1- LES PROCESSEURS ET LA d’instructions plus réduit que celui de CISC.
LOGIQUE FLOUE En effet, il ne comporte que 70 instructions.
1-1- les processeurs Cette technologie est basée sur le fait que
Le processeur (CPU) est le cerveau de chacune des instructions du processeur sera de
l'ordinateur, c'est lui qui fait la coordination longueur courte et fixe, et pourra la plupart du
entre le reste des éléments, il se charge des temps se dérouler sur un cycle d'horloge. Les
opérations arithmétiques ne s'effectuent que
sur les registres. Les informations sont  L' ETABLISSEMENT DES REGLES
seulement déplacées d'un registre à l'autre liant les sorties aux entrées,
ceci afin d'en accélérer l'exécution et le  La COMBINAISON DES REGLES pour
calcul[4]. Par ailleurs, les processeurs RISC la génération des sorties
peuvent faire plusieurs opérations en même
temps et cela quelque soit la nature des
instructions. L'idée fondatrice de l'architecture La première étape du traitement d'un
RISC n'est pas de réduire le nombre problème par la logique floue consiste
d’instructions du processeur - bien que ce donc à modéliser chacune des entrées
dernier soit souvent inférieur à celui d'un du système par des courbes donnant
processeur CISC -, mais bel et bien de ne les degrés d'appartenance à différents
retenir que les instructions exécutables en un états identifiés pour ces entrées.
seul cycle CPU. Une instruction exécutée en
un cycle doit effectuer le chargement des Cette étape de quantification "floue"
données dans les branches de l'UAL depuis des variables d'entrée est aussi appelée
les registres ou la mémoire, puis opérer le fuzzification.
calcul et mémoriser le résultat. Il s'agit, La fuzzification des variables d'entrée est une
comme vous l'avez sûrement remarqué, d'une phase délicate du processus mis en oeuvre par
micro-instruction. la logique floue. Elle est souvent réalisée de
Bien sûr, les implications sont nombreuses, manière itérative et requiert de l'expérience.
mais s'il ne faut en retenir qu'une ce doit être Après avoir "fuzzifier" les variables d'entrée
que, sur une machine RISC, la diminution de et de sortie, il faut établir les règles liant les
la complexité matérielle est compensée par un entrées aux sorties. En effet, il ne faut pas
compilateur très évolué. perdre le but final que nous poursuivons qui
Les processeurs CISC ont vu la taille de leur consiste à chaque instant, à analyser l'état ou
jeu d'instructions croître de façon la valeur des entrées du système pour
exponentielle, ce qui s'est traduit par un déterminer l'état ou la valeur de toutes les
microprogramme très complexe. Tant que sorties.
l'accès à la mémoire centrale était pénalisant La defuzzification fonctionne suivant le
par rapport à une lecture en mémoire morte et principe suivant :
un décodage de micro-instructions de plus en Plus la condition sur les entrées est vraie,
plus long, l'architecture CISC était Plus l'action préconisée pour les sorties doit
satisfaisante. En outre, la tâche des être respectée. C’est en fait une combinaison
compilateurs était grandement simplifiée des règles selon leur degré d’activité.
puisqu'ils pouvaient apparier à moindre effort
2- LE PROCESSEUR FLOU
les langages de programmation de haut niveau
(C, Fortran, etc.) avec un langage machine d’après ce qui précède on peut comprendre
très riche. Dans les années 80, des études que pour fixer les paramètres du composant
statistiques menées sur les applications ont de traitement par logique floue, il faut qu’il
clairement montré que les programmes possède un certain dynamisme. Le processeur
générés par les compilateurs se contentaient le flou présente la meilleure solution.
plus souvent d'affectations, d'additions et de Le tableau1 résume les caractéristiques du
multiplications par des constantes. processeur flou
1-2- la logique floue Nombre d’E/S Jusqu'à 5/2
La résolution d'un problème par la logique Nombre de bits 8 bits
floue comprend 3 étapes[1][3] : Nombre de MFs Jusqu'à 7
 La QUANTIFICATION "FLOUE" des Nombre de règles Jusqu'à 16807
entrées / sorties du système,
Fonctions Toutes les formes
d’appartenance
Facteur 5bits  Les opérations d’accès au bus externe
d’appartenance 2-1- Les opérations arithmétiques et
Nombre de modes 1 logique floue
de sortie
Nombre maximum Jusqu'à 7 Les instructions de fuzzification:
de chevauchement  Fuzz : après la lecture de la mémoire des
Méthode d’inférence Yager antécédents, la donnée comporte 5 bits
Defuzzification pondération correspondant a la valeur  et 3 bits
correspondant au code du sous ensemble
Tableau1 : caractéristiques du PF
flou. La forme actuelle de cette donnée est
Le processeur flou réalisée est inspirée du non significative si elle n’est pas
processeur classique RISC puisqu’il présente accompagnée du code de l’entrée. Ce
la simplicité et la robustesse. dernier sera utilisée par l’instruction fuzz
le jeu d’instructions du processeur flou pour arranger cette donnée.
comprend 13 instructions, conformément à la  Genere : dans le cas de chevauchement
méthodologie RISC, elles ont tous la même entre deux sous ensembles flous par
taille d’un mot machine, c’est à dire 32 bits. variable alors, les facteurs d’appartenance
Pour faciliter au maximum la recherche et le sont complémentaires par rapport à la
décodage des instructions, les 13 instructions valeur unitaire. Pour cette raison et pour
sont codées sur un format unique. Celui-ci est limiter la taille de la mémoire des
composé de 4 champs indiquant le code antécédents ont a sauvegardé seulement
opération , une opérande source et une un facteur d’appartenance pour chaque
opérande destination : donc c’est une machine valeur de la variable. Le deuxième degrés
à deux opérandes. d’appartenance est généré par l’instruction
génère qui est une simple opération de
INSTRUCTION [#]Rd [#]Rsrc soustraction : 1- .
Les instructions d’inférence
31----28 27 26 25-------18 17--------------0  Adr_inf : elle prépare l’adresse d’une
Code op # # Rd ou Val Rsrc ou Val règle qui sera utilisée pour lire ou écrire
de la mémoire des règles.
Figure1 : format des instructions et syntaxe
 Adr_yager1 : prépare l’adresse de la
première variable de sortie pour lire de la
Dans la syntaxe montré en figure1, instruction mémoire des conséquences une valeur
représente le mnémonique de l’opération à déjà calculée par la méthode Yager.
exécuter, [#]Rd spécifie le registre destination
parmi les 16 registres courants accessibles qui  Adr_yager2 : prépare l’adresse de la
peut être un deuxième registre source pour deuxième variable de sortie pour lire de la
certaines instructions ou une opérande mémoire des conséquences une valeur
immédiate de 8 bits, [#]Rsrc le registre source déjà calculée par la méthode Yager.
ou une opérande immédiate de 18 bits. Dans L’instruction de defuzzification
les deux cas, la valeur immédiate est validée  Defuzz : c’est la dernière étape de tout
si l’option « # » est active. processus en logique floue. Cette
Les instructions du processeur flou peuvent defuzzification est partielle car elle traite
être divisées en 4 catégories les regles deux à deux. C’est la division
 Les opérations arithmétiques et d’une somme de produits par une somme
logique floue simple.
 Les opérations de branchement Les instructions arithmétiques
 Les opération d’accès a la mémoire
 Decr : décrémente une valeur codée sur 18  Out : le résultat fourni par le processeur
bits. Lorsque la valeur 0 est atteinte, le bit flou est souvent utilisée pour commander
d’état Z passe a 1. un processus. L’instruction Out permet le
 Reset : c’est une opération d’affectation, passage d’une donnée d’un registre
elle permet d’affecter une valeur de 18 interne vers l’extérieur à travers le bus
bits dans un registre. externe.
2-4- L’instruction de branchement.
2-2- Les instructions d’accès à la mémoire  Bnez : Cette instruction permet
d’effectuer des boucles d'itérations. Le
 Store : pour écrire une donnée dans la
branchement est conditionnée par le bit
mémoire des antécédents ou la mémoire
d’état Z.
des conséquences ou la mémoire des
règles.
 Load : pour lire une donnée de la mémoire La figure2 représente l’architecture du PF à 3
des antécédents ou la mémoire des étages de pipeline. Le premier cycle effectue
conséquences ou la mémoire des règles. la lecture (FETCH), le décodage de
l’instruction et la préparation de la prochaine
adresse CP. Le second cycle effectue la
2-3- Les instructions d’accès au bus externe lecture des opérandes et l’exécution de
 In : puisque dans la plupart des cas le l’opération. C’est donc le banc de registres et
processeur flou dialogue directement avec l’UAL floue qui sont activés. Enfin, le
un processus réel alors, ce processeur doit troisième cycle stocke le résultat dans le
communiquer avec l’extérieur à l’aide registre destination.
d’un bus externe. L’instruction In permet
d’enregistrer une valeur externe dans un
registre interne.
D_mem
Bus externe Adr_ext
Retour Adr_mem
anticipé
3 WRITE
2 READ
Rd
[23:8] [7 :0]
a
Banc de Constante UAL
registres #Rd [7 :0] floue
Rsrc
Z
b Sélection
CP MUX
Constante #Rsrc[17 :0]

1 FETCH-DECODE Adresse SEQUENCEUR


programme
Figure2 :Synoptique simplifié du chemin de données du PF

Les problèmes d’interdépendance du Fuzzification de la deuxième variable


pipeline sont résolus par deux bus d’entrée
supplémentaires.
00014 IN R2 IN2
Le problème intervient lorsqu’une
00018 LOAD R3 R2
instruction utilise pour registre source, le
registre destination de l’instruction 0001C FUZZ R2 R3
précédente. Or un simple regard au schéma 00020 GENERE R3 R2
du pipeline permet de constater que ce Fuzzification de la troisième variable
dernier ne sera écrit qu’au dernier cycle. d’entrée
Les deux bus permettent donc d’intercepter
00024 IN R4 IN3
les valeurs avant leur écriture dans le banc
de registre, si une instruction en nécessite 00028 LOAD R5 R4
l’usage. 0002C FUZZ R4 R5
3- EXEMPLE DE PROGRAMME 00030 GENERE R5 R4
la partie software de ce processeur est aussi Fuzzification de la quatrième variable
évidente que la partie hardware. Dans le d’entrée
programme suivant on voit en clair les 3 00034 IN R6 IN4
étapes de la logique floue :
00038 LOAD R7 R6
00000 RESET R15 10000
0003C FUZZ R6 R7
Fuzzification de la premier variable
d’entrée 00040 GENERE R7 R6
00004 IN R0 IN1 Fuzzification de la cinquième variable
d’entrée
00008 LOAD R1 R0
00044 IN R8 IN5
0000C FUZZ R0 R1
00048 LOAD R9 R8
00010 GENERE R1 R0
0004C FUZZ R8 R9 on ne peut pas dire que le processeur flou
est un nouveau produit puisqu’il existe
00050 GENERE R9 R8
déjà sur le marché comme celui de
Préparation de l’adresse d’inférence de la Thomson[2] ou d’autres [8][9] mais, la
première règle nouveauté apportée réside dans la partie
00054 RESET R10 00000 software qui était auparavant limitée a
00058 ADR_INF R10 R0 simulé la partie hardware. Dans ce
processeur flou on a réalisé un vraie jeu
0005C ADR_INF R10 R2
d’instructions, simple, et capable de former
00060 ADR_INF R10 R4 un programme complet de traitement en
00064 ADR_INF R10 R6 logique floue.
00068 ADR_INF R10 R8 Références
Inférence [1] « Every thing you always know
0006C LOAD R11 R10 about fuzzy logic »
00070 ADR_YAGER1 R10 R11 David l Brubaker, the Huntington Group.
00074 LOAD R12 R10 EDN, March 31, 1993.
[2] « La logique floue »
00078 ADR_YAGER2 R10 R11
MM.Le van suu et Lo-presti de SGS
0007C LOAD R13 R10
Thomson, décembre 96.
La deuxième règle
[3] « Pour y voir plus clair ...
00080 RESET R10 00000 ... dans la logique floue! »
00084 ADR_INF R10 R0 http://perso.club.internet.fr/bmantel/accueil
00088 ADR_INF R10 R2 2.html.
0008C ADR_INF R10 R4
00090 ADR_INF R10 R6 [4] « Organisation et conception des
00094 ADR_INF R10 R9 ordinateurs »
D.Patterson, J.Hennessy, Paris 1994.
00098 LOAD R11 R10
[5] « Les Architectures RISC »
0009C ADR_YAGER1 R10 R11
J.C.Heudin, C.Panetto.
000A0 LOAD R14 R10
000A4 DEFUZZ R12 R14
[6] « RISC/CISC »
000A8 ADR_YAGER2 R10 R11
http://www.esige.ch/reche99/CORD9901/
000AC LOAD R11 R10 risc.htm.
000B0 DEFUZZ R13 R11
------------------- [7] « Le micro-processeur »
00EF4 OUT R12 OUT1 http://www.commentcamarche.net/pc/
00EF8 OUT R13 OUT2
00EFC DECR R15 [8] « Architecture of a 50 MFIPS Fuzzy
00F00 BNEZ 00004 processor and the related 1μm VLSI
Ce programme est simulée en utilisant le CMOS Digital Circuits »
langage de description VHDL. Dans une E.Gandolfi, M.Masetti, I.D’antone,
phase ultérieure, on va faire la synthèse sur Université de Bologne, Italie.
un FPGA.
4- CONCLUSION
[9] « High Speed Digital Fuzzy Processor
for High Energy Physics Esperiment
Triggers »

You might also like