Salut. Ce message est mon premier sur ce site que je fréquente depuis un moment, je me suis inscrit seulement maintenant pour commenter cette dépêche.
Je ne suis pas un expert dans le domaine de l'architecture de processeur et de la micro-électronique en général, donc les termes que je vais utiliser risquent de ne pas être très précis.
Si je résume, ce processeur a d'un côté une limitation du nombre d'instructions qui peuvent être implémentées à cause du nombre limité de bits disponible pour leur identifiant, et de l'autre pour chaque coeur une mémoire de 32Ko (la SPM) dans laquelle on peut manuellement stocker des données directement ou en passant par le DMA.
Du coup, pourquoi ne pas créer une sorte de "palette d'instructions", fonctionnant de la même manière que les palettes de couleurs pour les anciennes consoles de jeu vidéo, qui serait stockée dans cette mémoire de 32Ko?
L'avantage principal des palettes de couleur est justement de pouvoir les représenter de manière plus compacte dans une image, en échange d'une limitation des couleurs disponible pour l'image à celles présentes dans la palette (exemple: une palette de 256 couleurs codées en 32-bits, permettant de représenter la couleur de chaque pixel d'une image donnée avec une valeur codée sur 8 bits).
Ici, l'idée serait la même, puisque les 7 bits de l'opcode actuel ne serviraient plus à représenter directement une instruction réelle, mais serait un pointeur vers l'identifiant de cette même instruction, stocké dans la palette et codé sur un plus grand nombre de bits.
Ainsi, si ces identifiants ont par exemple une taille de 16-bits, on pourrait représenter au total plus de 32'000 instructions, mais seules 128 d'entre-elles seraient utilisables directement par chaque coeur car stockées dans cette palette d'une taille de 256 octets.
Il faudrait donc, si c'est nécessaire, pouvoir changer les valeurs dans la palette en fonction des instructions nécessaires à l'exécution des différents programmes.
Cela pourrait se faire en modifiant directement les différentes entrées de la palette.
Il serait également possible de créer plusieurs palettes (par exemple, 4 palettes de 32 instructions chacune), avec les différentes instructions qui y seraient réparties en fonction de la fréquence de leur utilisation, et ainsi remplacer complètement la palette des instructions les moins fréquentes par une autre palette.
Dans tous les cas, ce serait au compilateur de gérer en amont la création et le chargement de ces palettes. Et il faudrait une instruction spéciale permettant au coeur processeur de savoir combien de palettes existent pour pouvoir y accéder en interprétant correctement l'ancien opcode de 7 bits (premiers bits pour la palette, derniers pour l'instruction dans la palette).
Que pensez vous de cette idée? Est-ce qu'elle serait facilement implémentable?
Est-ce que le cache SPM peut utilisé comme une "palette RAM" avec 256 octets réservé d'office, ou bien faut-il créer une mémoire cache supplémentaire dédiée?
# "Palette d'instruction": solution au nombre limité d'instructions?
Posté par De_passage . En réponse à la dépêche AltairX : le processeur du futur ?. Évalué à 3.
Salut. Ce message est mon premier sur ce site que je fréquente depuis un moment, je me suis inscrit seulement maintenant pour commenter cette dépêche.
Je ne suis pas un expert dans le domaine de l'architecture de processeur et de la micro-électronique en général, donc les termes que je vais utiliser risquent de ne pas être très précis.
Si je résume, ce processeur a d'un côté une limitation du nombre d'instructions qui peuvent être implémentées à cause du nombre limité de bits disponible pour leur identifiant, et de l'autre pour chaque coeur une mémoire de 32Ko (la SPM) dans laquelle on peut manuellement stocker des données directement ou en passant par le DMA.
Du coup, pourquoi ne pas créer une sorte de "palette d'instructions", fonctionnant de la même manière que les palettes de couleurs pour les anciennes consoles de jeu vidéo, qui serait stockée dans cette mémoire de 32Ko?
L'avantage principal des palettes de couleur est justement de pouvoir les représenter de manière plus compacte dans une image, en échange d'une limitation des couleurs disponible pour l'image à celles présentes dans la palette (exemple: une palette de 256 couleurs codées en 32-bits, permettant de représenter la couleur de chaque pixel d'une image donnée avec une valeur codée sur 8 bits).
Ici, l'idée serait la même, puisque les 7 bits de l'opcode actuel ne serviraient plus à représenter directement une instruction réelle, mais serait un pointeur vers l'identifiant de cette même instruction, stocké dans la palette et codé sur un plus grand nombre de bits.
Ainsi, si ces identifiants ont par exemple une taille de 16-bits, on pourrait représenter au total plus de 32'000 instructions, mais seules 128 d'entre-elles seraient utilisables directement par chaque coeur car stockées dans cette palette d'une taille de 256 octets.
Il faudrait donc, si c'est nécessaire, pouvoir changer les valeurs dans la palette en fonction des instructions nécessaires à l'exécution des différents programmes.
Cela pourrait se faire en modifiant directement les différentes entrées de la palette.
Il serait également possible de créer plusieurs palettes (par exemple, 4 palettes de 32 instructions chacune), avec les différentes instructions qui y seraient réparties en fonction de la fréquence de leur utilisation, et ainsi remplacer complètement la palette des instructions les moins fréquentes par une autre palette.
Dans tous les cas, ce serait au compilateur de gérer en amont la création et le chargement de ces palettes. Et il faudrait une instruction spéciale permettant au coeur processeur de savoir combien de palettes existent pour pouvoir y accéder en interprétant correctement l'ancien opcode de 7 bits (premiers bits pour la palette, derniers pour l'instruction dans la palette).
Que pensez vous de cette idée? Est-ce qu'elle serait facilement implémentable?
Est-ce que le cache SPM peut utilisé comme une "palette RAM" avec 256 octets réservé d'office, ou bien faut-il créer une mémoire cache supplémentaire dédiée?