ASR1 – TD7 : Lara l’abeille S. Collange, A. Panhaleux
– pouvoir varier le nombre d’unités d’exécution à souhait sans toucher aux programmes
existants,
– partager le maximum de matériel (et d’effort de conception) entre l’exécution de la partie
séquentielle et de la partie parallèle.
Notre CGPU pourra fonctionner dans deux modes différents.
– Le processeur démarre en mode séquentiel. Ce mode offre toutes les fonctionnalités que
l’on est en droit d’attendre d’un CPU : calculs, lectures et écritures en mémoire à des
adresses arbitraires, structures de contrôle arbitraires, appels de fonctions.. .
Il doit également permettre de démarrer une section parallèle. On spécifie alors les bornes
de la boucle parallèle. On peut voir le corps de la boucle parallèle comme une fonction
séparée. Il faudra offrir au programmeur un moyen de passer des paramètres à ce corps
de boucle.
On prévoira aussi quelques moyens de discuter avec le contrôleur vidéo que vous faites
en DM : choix de la zone à afficher, signal de synchronisation verticale1.
– La partie parallèle doit être capable de lire n’importe où en mémoire (lecture de sprites,
textures...) On notera que si l’itération (i, j)lit ses données aux coordonnées (x+i, y +j),
c’est plus simple que si c’est à (ftordu(i, j), gbizarre (i, j)).
On doit pouvoir écrire le pixel résultant aux coordonnées (i, j)dans l’image finale. Cette
opération doit être efficace. Accessoirement, c’est pas plus mal si on peut écrire n’importe-
où aussi.
On doit pouvoir effectuer des if-then-else, des boucles for et while, et indiquer la fin de
l’itération.
La première partie consiste à définir le jeu d’instructions, le format du mot d’instructions,
et à l’essayer sur quelques exemples. La seconde partie construit le processeur lui-même.
3. Quelles structures de données notre processeur va-t-il être amené à manipuler ? Quel
espace d’adressage et modes d’adressage le processeur va-t-il employer ?
4. Quelle est la taille mémoire qu’il peut adresser ?
5. Combien d’instructions aura-t-il au maximum ?
6. Dessinez la boîte noire de ce processeur, comportant tous les signaux d’interface avec la
mémoire et le contrôleur vidéo.
1 Le jeu d’instructions
On va découper le mot d’instruction en différents champs codant (entre autres) l’instruction
à effectuer, ses différents opérandes, etc.
Le principe d’orthogonalité de la philosophie RISC dit que ce découpage doit être constant,
même pour des instructions très différentes.
1. Discutez le principe d’orthogonalité. Qu’en est-il dans le cas de notre CGPU?
1.1 Choix du nombre de registres
Il y a plusieurs grandes architectures possibles pour la partie calcul d’un processeur :
1. Ce qui nous permettra de faire du double-buffering entre autres choses rigolotes.
2