Chips Remembered: Le Scenix/Ubicom/Parallax SX

Si vous êtes bibliophile, aller dans une librairie d’occasion est une expérience nettement agréable. Bien sûr, vous pourriez découvrir un vieux livre que vous voulez lire. Mais au moins une partie de la ruée vers l’endorphine vient de voir de vieux amis. Pas des humains, mais des livres que vous avez lus il y a des années, voire des décennies. Le plus souvent, vous n’achetez pas le livre – vous en avez probablement un caché dans une boîte quelque part. Mais c’est un sentiment heureux de voir un vieil ami et peut-être feuilleter un passage ou deux parmi des étagères de livres moisis. J’aimerais que nous ayons quelque chose comme ça pour les chips. En dehors de quelques exceptions notables, les puces ont tendance à avoir une courte durée de vie et à céder ensuite la place à d’autres puces. Cela est particulièrement vrai pour les processeurs. Celui qui me manque particulièrement est la puce Scenix/Ubicom/Parallax SX.

J’ai eu une expérience semblable à celle d’une librairie avec ce processeur l’autre jour. J’ai fabriqué quelques produits basés sur ces puces et il m’en reste une petite réserve. Je garde jalousement le matériel nécessaire pour les programmer « au cas où ». Eh bien, naturellement, quelqu’un en avait besoin pour une raison quelconque, alors j’ai dû tout déterrer. Savoir qu’il s’agit peut-être des dernières puces SX non programmées au monde m’a rendu un peu nostalgique.

L’histoire

À la fin des années 1990, une société appelée Scenix a commencé à produire un microcontrôleur appelé SX dans quelques tailles d’encombrement. Ainsi, le SX18 était, par exemple, une pièce à 18 broches. En 1999, ils battaient déjà leur plein avec les SX18 et SX28 et ils ont introduit le SX52.

Bien sûr, de nombreuses entreprises ont produit des microcontrôleurs. L’offre Scenix était un peu particulière. À cette époque, le Microchip PIC était le roi de la colline. Le PIC est une bête étrange qui a évolué à partir d’un contrôleur très limité conçu pour être petit et peu coûteux. Notamment, alors qu’il pouvait prendre en charge des fréquences d’horloge relativement élevées – 20 MHz était courant – chaque instruction normale prenait 4 cycles d’horloge. Ainsi, lorsque votre cristal indiquait 20 MHz, vous exécutiez des instructions à 5 MHz.

Le SX a dupliqué les instructions de Microchip, mais pas les mnémoniques de l’opcode, car cela était légalement grevé. En théorie, vous pourriez prendre du code binaire destiné à un PIC et le déployer sur le SX. Ainsi, l’appareil avait toutes les mêmes bizarreries architecturales que le PIC, ce qui était à la fois un plus et un moins. Cependant, il avait un énorme avantage sur le PIC : il pouvait fonctionner à 50 MHz pour de vrai. Le SX utilisait une architecture en pipeline afin de pouvoir exécuter une instruction par horloge une fois le pipeline plein (et en supposant que vous n’aviez pas invalidé le pipeline avec un saut).

C’était 10 fois la vitesse réelle d’un PIC. Certes, à 50 MHz, la puce consomme beaucoup d’énergie, mais vous pouvez régler cela en réduisant la fréquence. Même à 10 MHz, vous couriez deux fois plus vite qu’un PIC. Les versions ultérieures pouvaient fonctionner à 75 MHz et même à 100 MHz, bien que celles-ci aient été assez rapidement abandonnées. Cependant, ces puces étaient régulièrement overclockées à au moins 80 MHz dans, par exemple, la XGameStation.

La clé SX a fourni la programmation et le débogage sur les broches d’horloge SX.

Il y avait une autre fonctionnalité qui tue qui semble normale aujourd’hui mais qui était une révolution à l’époque : le débogage en circuit bon marché. La plupart des processeurs plus anciens devaient avoir une pièce spéciale coûteuse pour effectuer un débogage en direct sans logiciel supplémentaire sur la puce. Bien sûr, vous pouvez écrire un débogueur qui parle à un terminal série, mais cela suppose que beaucoup de choses fonctionnent déjà. Faire un véritable débogage au niveau matériel était généralement très coûteux. Mais le SX avait tout le matériel requis sur chaque puce. Un petit dongle de port série qui ne coûtait pas très cher était disponible et avec lui, vous pouviez déboguer la puce de votre circuit sans réel impact sur votre code.

Périphériques virtuellement

L’un des concepts clés du SX était que le processeur restait très simple pour réduire les coûts et augmenter la vitesse. La tendance, bien sûr, était d’ajouter des éléments aux processeurs tels que les UART, les minuteries, les générateurs PWM, etc. Le SX l’a fait différemment. Fonctionnant rapidement et ayant une manière très déterministe de gérer les interruptions, Scenix a vanté une bibliothèque de « périphériques virtuels ». L’idée était qu’en utilisant des interruptions, vous pouviez créer des périphériques logiciels et même s’ils consommaient, disons, la moitié de votre temps CPU, vous étiez toujours beaucoup plus rapide qu’un PIC avec des périphériques.

Bien sûr, si cela fonctionne, c’est formidable car vous pouvez personnaliser tout ce que vous voulez. Besoin de trois UART et d’un canal PWM ? Aucun problème. Si le prochain projet nécessite cinq canaux PWM et aucun UART, vous pouvez également le faire. Bien sûr, c’était toujours mieux en théorie qu’en pratique. La « bibliothèque » n’était guère plus qu’un exemple de code et parfois l’intégrer dans votre code était difficile. Cela était particulièrement vrai si vous essayiez d’en intégrer plus d’un, car ils auraient parfois des exigences contradictoires.

Pourtant, vous pourriez faire pas mal de choses qui auraient été presque impossibles à faire dans un logiciel sur un processeur plus lent.

La connexion parallaxe

Scenix est finalement devenu Ubicom, qui finira par être aspiré dans Qualcomm, mais ces puces sont également associées à Parallax, une société bien connue pour ses timbres de base qui étaient autrefois la passerelle vers les microcontrôleurs. Leurs produits utilisaient le Microchip PIC et ils ont commencé à vendre une gamme de timbres basés sur SX qui remplaçaient à peu près leurs produits existants, mais beaucoup plus rapidement. (Et bien sûr plus gourmands en énergie.) Ils ont également proposé les puces et le matériel de programmation qu’ils ont conçus à des prix abordables, ce qui a rendu le SX quelque peu populaire dans la communauté des amateurs.

Une carte de développement Parallax avec la SX-Key branchée.

Parallax a également développé des livres et des cours pour la puce. (J’en ai même écrit quelques-unes.) Il existait une bibliothèque contenant du code pour effectuer de nombreuses opérations courantes telles que FSK, I2C, SPI, exécuter des écrans LCD et des moteurs pas à pas, et bien plus encore.

En 2005, Ubicom s’éloignerait du SX et ne le vendrait qu’à Parallax avec la marque Parallax. Au milieu de 2009, Parallax a annoncé la fin de la route pour le SX. De nos jours, vous pouvez choisir un processeur 32 bits pouvant fonctionner à 100 MHz pour une chanson, et le débogage intégré est courant. Les processeurs modernes auront des architectures un peu plus saines que l’ancien schéma de changement de banque du PIC et plus adaptées aux compilateurs C également. Alors je ne regrette pas ces vieux jours. Mais comme un vieux livre dans une librairie, ça fait du bien de revoir mon vieil ami le SX.

Quels anciens processeurs sont vos amis ? J’aime beaucoup le RCA 1802. J’ai aussi beaucoup travaillé sur d’anciens appareils Motorola, comme le 6805 et le 68HC11. J’ai aussi apprécié le Basic Stamp. Je ne peux pas m’empêcher de me demander si, dans 30 ans, les gens regarderont avec tendresse un appareil STM32 ou peut-être le Raspberry Pi Pico ?