Suivez-nous sur X
|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Note : traduction par David Brunet.
Les AmigaOne X1000 et X5000 d'A-EON Technology disposent d'une fonctionnalité unique pour un ordinateur personnel :
un coprocesseur programmable par l'utilisateur et ayant son propre port d'extension !
Microcontrôleur multicoeur 32 bits, la puce Xena est en fait un XS1-L16A (anciennement XS1-L2) de chez XMOS. La puce Xena
est câblée à la fois avec le processeur et avec le port d'extension 98 broches nommé Xorro.
Dans cette série d'articles, je vais documenter mes recherches sur la puce Xena et son intégration avec le nouveau port
d'extension Xorro. J'espère éclairer le potentiel de cette création qu'A-EON Technology a apporté à sa dernière ligne
d'ordinateurs AmigaOne, et démontrer comment vous pourrez l'utiliser pour concevoir vos propres projets logiciels ou
matériels.
Dans le passé, la gamme d'ordinateurs Commodore a bénéficié d'un large éventail d'options d'extensions matérielles personnalisées,
dont beaucoup ont commencé en tant que projets de loisir réalisés par une personne ou un petit groupe. En remontant au temps
du Commodore PET, et en passant par les Commodore 64 et 128, Commodore avait inclus l'interface "User Port" qui fut essentiellement
un port parallèle et série combiné qui se connectait à la puce MOS 6526 CIA (Complex Interface Adapter). Bien que Commodore ait
probablement prévu cette interface pour les imprimantes et les modems, l'accès direct aisé à la puce CIA via les
commandes PEEK et POKE en BASIC, et le fait que cette interface ait été publiquement documentée, ont fait que les utilisateurs Commodore
ont rapidement pu utiliser leur machine pour contrôler à peu près tout : avec par exemple un compte-tour pour voitures télécommandées,
la prise en compte des points dans une partie de bowling ou encore pour équilibrer les arbres de transmission dans un garage en
Pologne !
Plus tard, alors que le Commodore Amiga commença à apparaître sur le marché, les utilisateurs furent encore plus créatifs
pour trouver des moyens pour étendre leur machine favorite. Aujourd'hui, la scène des projets informatiques artisanaux a
tout simplement explosé avec toute une gamme de microcontrôleurs et de FPGA (Field Programmable Gate Arrays) plus accessibles
et utilisés chaque jour dans de nouveaux projets de loisir ou professionnels.
En incluant la puce Xena et le port Xorro comme partie intégrante des nouvelles machines AmigaOne, A-EON Technology pousse
les projets de loisir (et professionnels) à un tout autre niveau. A présent, au lieu de concevoir votre sympathique projet
matériel avec un composant fixe comme une puce CIA, vous pouvez adapter la puce contrôleur pour qu'elle fonctionne avec votre
matériel. Imaginez si vous pouviez redessiner complètement la logique interne de la puce CIA pour qu'elle fonctionne partout
où vous en avez besoin. Imaginez maintenant qu'au lieu d'un seul fil d'exécution logique, vous pouviez en avoir 16 qui fonctionnent
tous en même temps. Imaginez aussi que chacun de ces fils d'exécution puisse exécuter une logique complexe à une vitesse
de 63 MIPS, simultanément, et réagir aux lignes de contrôle internes et externes en 10 nanosecondes (soit 10 milliardièmes
de seconde). Maintenant, imaginez... ok, ok, je m'arrête. Commençons par regarder de plus près ce quelle puce XMOS Xena est en
réalité.
En prenant une photo de la puce Xena présente sur l'AmigaOne X5000 et en comparant les chiffres inscrits dessus avec ceux
de la numérotation de chez XMOS, nous en déduisons le fait suivant : la puce Xena est un 16L7C10.
- "16" pour 16 coeurs logiques.
- "L" pour la famille de produits "General Purpose" (Usage Général) de XMOS.
- "7" indique la mémoire (dans ce cas 128 ko au total, 64 ko pour chaque tuile ("Tile").
- "C" pour "Commercial" (au niveau de la température).
- "10" indique la vitesse en MIPS (dans ce cas 1000 MIPS).
Selon le guide "Ordering Information" (Informations de commande) de chez XMOS, le code produit de notre puce est "XS1-L16A-128-QF124-C10".
En utilisant ce numéro de produit, nous pouvons en apprendre plus sur cette puce. Une recherche rapide dans Google pour
ce numéro de produit renvoie plusieurs réponses, notamment un lien de téléchargement pour la feuille de données
XS1-L16A-128-QF124 provenant du site Web www.xmos.com.
Voyons maintenant le schéma des circuits de la puce Xena (XMOS XS1-L16A) :
La puce Xena comprend deux coeurs de processeur appelés "xCORE Tiles" et 16 coeurs logiques xCORE (huit par tuile). Elle
est cadencée par un oscillateur PLL (Phase-Locked Loop) à 25 MHz configuré pour un fonctionnement en x20, ce qui permet
à Xena d'atteindre les 500 MHz. Le tableau suivant indique comment la vitesse de 1000 MIPS par tuile est distribuée
entre les différents coeurs logiques de tuile. Selon la fiche technique XS1-L16A-128-QF124, si jusqu'à quatre
coeurs logiques sont actifs, les cycles de traitement disponibles sont répartis entre les quatre coeurs ou, dans ce cas,
les quatre premiers coeurs reçoivent 125 MIPS chacun. Maintenant, si plus de quatre coeurs sont actifs sur la tuile,
les cycles sont d'au moins 1/n cycles pour "n" coeurs ou, auquel cas, cinq coeurs reçoivent 100 MIPS chacun, six coeurs
reçoivent 83 MIPS chacun, sept coeurs reçoivent 71 MIPS chacun et, enfin, si les huit coeurs fonctionnent simultanément dans
une tuile donnée, ils reçoivent 63 MIPS chacun.
De plus, les coeurs logiques qui attendent un déclencheur d'événement ou qui ne sont pas assignés à une tâche, sont
"endormis" et libèrent tous les cycles de traitement pour les autres coeurs. Cela signifie que la vitesse prédite
par coeur est souvent plus élevée, mais ces valeurs sont le nombre de MIPS minimum garanti par coeur.
Ceci est une distinction très importante. Durant l'exécution normale des fils d'exécution d'un programme dans un
environnement multitâche (dans ce cas, sous AmigaOS 4), il est presque impossible de déterminer le nombre de cycles
de traitement qu'un fil d'exécution donné a obtenu. Ceci dépend de la charge du processeur, de la priorité des
tâches, etc. Cependant, avec la puce Xena, votre code fonctionne sur une architecture RISC 32 bits dédiée où toutes les
instructions du processeur (à l'exception des divisions) peuvent être exécutées à raison d'une instruction par cycle d'horloge.
De même, l'accès à la mémoire interne SRAM (64 ko par tuile) se fait également en un cycle.
Les microcontrôleurs programmables et multicoeurs de XMOS se placent dans un marché de niche entre les microcontrôleurs
statiques en mono fil d'exécution et les FPGA complets. Avec une fonctionnalité intégrée de système d'exploitation temps réel
(RTOS), un temps de réponse de 10 nanosecondes pour ses entrées/sorties, des temps d'exécution totalement prédictibles et
la possibilité d'être programmée dans un langage apparenté au C (nommé Cross-C ou xC), la puce XMOS vous permet d'effectuer
des tâches logicielles qui nécessiteraient normalement un matériel dédié.
Xena est câblée sur la carte mère de l'AmigaOne X5000 afin de communiquer avec le processeur et son propre port d'extension,
appelé "Xorro". Le nom "Xena" est un clin d'oeil aux circuits spécialisés présents dans les Amiga Classic des années
1980 et 1990 (Agnus, Alice, Denise, Paula...). Le nom "Xorro" est également un clin d'oeil aux Amiga Classic qui étaient
pourvus du système d'extension Zorro II/III. Le port Xorro est physiquement un connecteur PCI Express x8 (98 broches)
qui est positionné en ligne avec un port PCI Express x1 normal (les deux ports peuvent être utilisés simultanément). Alors
que le port Xorro dispose d'un connecteur physique comme celui d'un PCI Express x8 standard, il n'est pas câblé de la même
manière et il n'est pas compatible avec les cartes PCI Express x8 standard.
Au lieu de cela, Xorro est directement connecté à la puce Xena via une série de ports d'entrées/sorties ainsi que les ports
XLink de Xena qui lui permettent de se connecter à une série de puces XMOS supplémentaire. Ce schéma des circuits issu
du manuel technique de l'AmigaOne X5000 (reproduit ici avec l'autorisation d'A-EON Technology) vous donne une idée de la façon
dont la puce Xena se connecte à la fois su port Xorro et au processeur.
L'architecture du XMOS-XS1, qui est celle de Xena, peut être considérée comme le successeur moderne de la célèbre technologie
Inmos Transputer des années 1980 qui fut la pionnière au niveau de l'architecture micropuce spécialement conçue pour le calcul
en parallèle.
Plus précisément, David May, professeur d'informatique à l'Université de Bristol, fut l'architecte des technologies
Transputer et des coeurs XMOS. Il détient 33 brevets (beaucoup d'autres sont en instance) sur le thème de la technologie
des microprocesseurs. David May est aussi l'un des fondateurs de XMOS, société qu'il créa quand il acheva ses études.
Les puces XMOS-XS1 tirent parti d'un modèle similaire d'exécution en parallèle, extensible via le matériel, comme les
puces Transputer l'étaient à l'époque. Chaque puce XMOS-XS1 peut contenir une ou plusieurs tuiles (des "Tiles") et chaque
tuile peut avoir un ou plusieurs coeurs logiques. Tous les coeurs logiques peuvent communiquer entre eux dans la
même tuile, et même avec d'autres coeurs logiques présents dans d'autres tuiles. De plus, grâce aux liens vers d'autres
puces XMOS-XS1, ils peuvent communiquer en toute transparence avec d'autres coeurs logiques placés sur des tuiles
d'autres puces XMOS-XS1 !
Dans le cas de l'AmigaOne X5000, cela signifie que la puce Xena peut avoir des fonctions tournant en parallèle sur n'importe
lequel des 16 coeurs locaux (cela ressemble en gros à des fils d'exécution matériels). Chacune de ces fonctions (ou tâches) peut
interagir avec chacune des autres grâce aux deux extrémités du canal. Ensuite, via le port Xorro, vous pouvez ajouter
des puces XMOS supplémentaires et ainsi étendre la capacité de calcul.
La présence de la puce Xena et du port d'extension Xorro sur l'AmigaOne X5000 ouvre la porte à de nombreuses possibilités
d'extensions commerciales ou créées par l'utilisateur. La puce Xena peut être utilisée en tant que coprocesseur pour le
processeur principal ou bien, via le port Xorro, en tant que contrôleur matériel haute performance.
Les possibilités ne sont limitées que par l'imagination de l'utilisateur. Il convient de noter que dans tous les autres
cas, les puces XMOS sont programmées de façon externe via un port JTAG, alors que sur AmigaOne X5000, où l'interface JTAG
est déjà connectée au processeur, on peut programmer Xena (ou toute autre puce XMOS connectée via le port Xorro) depuis
AmigaOS 4. En outre, la puce Xena pourrait être programmée pour interagir avec une application AmigaOS 4 (native PowerPC)
en lui ouvrant les portes de la puissance du calcul en parallèle. La carte mère de l'AmigaOne X5000 peut gérer à la fois
les interfaces de programmation et de débogage de systèmes externes, et ceux internes de Xena, vous pouvez donc profiter
pleinement des outils de développement et de débogage de XMOS qui fonctionnent sur du matériel externe.
J'espère que cette introduction vous a donné une idée de ce que représente la puce Xena et vous permet de réfléchir aux
types d'applications qui peuvent être réalisées avec elle. Dans l'article suivant, je vais aborder plus en détail les outils
de développement et voir comment AmigaOS 4 peut charger des programmes sur Xena. En attendant, voici quelques liens interessants
pour une lecture approndie sur le sujet :
|