[gull] x86_64

Marc SCHAEFER schaefer at alphanet.ch
Mon Jun 5 14:21:03 CEST 2006


On Mon, Jun 05, 2006 at 01:59:49PM +0200, Marc Mongenet wrote:
> Ce qui fait qu'il est difficile d'ajouter des registres à un processeur
> RISC, sauf bien sûr s'il y avait des bits inutiles^Wréservés. :)

Il y a aussi parfois le concept de `page': on a une instruction de 16
bits, avec 8 bits qui permettent d'adresser 256 registres. Une
instruction spéciale permet de changer de page de registres, pour
addresser jusqu'à N x 256 registres.

On retrouve cela souvent dans les petits microcontrôleurs d'aujourd'hui et
de hier.

Par rapport au x86 de base (3 registres, dont 1 réellement utilisable
pour les opérations de l'ALU) et même les 16 registres du 68'000 de
1979, on a quand même plus de flexibilité, au prix d'un coût (voir plus
bas!)

Le `comble' de la gestion de page, c'est la gestion en cercle des
fenêtres de registres du SPARC:

   - la fenêtre actuelle, directement adressable (N registres)
   - la fenêtre précédente (les paramètres de la fonction appelée),
     directement adressable ou presque
   - la fenêtre suivante (où l'on prépare les paramètres de la fonction
     que l'on va appeler

avec M fenêtres possibles en matériel, ce qui permet -- même avec les
langages les plus affreux -- d'éviter les load/store mémoire.

Par contre, évidemment, quand on change de contexte (processus, thread
ou interruption) il y a plus à sauver: suivant le type d'application
c'est l'horreur.




More information about the gull mailing list