Etude et réalisation d'un microprocesseur général

Fabrice Bellard et Sylvain Delas

1 Cahier des charges

2 Solutions envisagées

2.1 Taille des mots

2.2 Architecture

2.3 Jeu d'instruction

Un format homogène simplifie beaucoup le décodeur d'instruction. Des instructions sur 1 octet simplifient le séquenceur, mais un problème se pose pour le chargement de constantes de grande taille ( 8 ou 16 bits ).

D'un autre côté, si on inclut un champ d'adresse dans les instructions, la taille moyenne des programmes sera plus faible.

2.4 Les périphériques

Une gestion hardware (notamment des afficheurs) rend le débogage plus facile, mais occupe beaucoup de CLB. Une gestion totalement software complique sensiblement le logiciel, mais donne plus de souplesse.

3 Solution retenue

3.1 Architecture générale

3.2 Jeu d'instruction retenu

3.3 Les outils de développement

Nous avons réalisé un macro-assembleur pour générer facilement les séquences de code les plus courantes. Un simulateur complet (incluant la simulation du hardware) a été réalisé sous XWindows et sur Macintosh.

4 Bilan

4.1 Retour au cahier des charges

Le microprocesseur fonctionne. Il utilise 190 CLB. Nous avons programmé une calculatrice 4 opérations avec affichage en décimal et un jeu de labyrinthe. Cela suffit à démontrer que notre microprocesseur est général.

La version testée atteint une vitesse de 0.3 MIPS, et peut être accélérée jusqu'à 1 MIPS.

La gestion par logiciel des périphériques permet d'avoir une grande souplesse d'utilisation.

4.2 Regrets et améliorations possibles



Tue Oct 15 03:37:32 MET 1996
Fabrice Bellard (fabrice.bellard at free.fr)