Dossier : La genèse du DSP3210 sur Amiga
(Article écrit par Eric Lavitsky et extrait de www.a1k.org - juin 2021)
Eric Lavitsky fut responsable du développement logiciel du DSP3210 chez Commodore au début des
années 1990. Il a publié deux messages fort intéressants sur www.a1k.org
à propos de l'origine du DSP3210, puce spécialisée dans le traitement du signal qui devait intégrer le prototype
Amiga 3000+ en 1991. Voici une traduction de ses propos.
Eric Lavitsky
Au départ, un projet hobbyiste d'un ingénieur à Bell Labs
L'A3000+ était révolutionnaire pour son
époque. Il avait la capacité de décharger le processeur des fonctions de synthèse/reconnaissance vocale,
il avait un modem à haut débit, un codage d'images, etc. Il disposait de nombreuses applications dans
le domaine scientifique.
Les origines du projet DSP3210 sur Amiga ont commencé avec un de mes amis qui était docteur à
Bell Labs à Whippany,
dans le New Jersey et qui faisait des recherches en acoustique sous-marine. Il voulait une accélération sur son
Amiga chez lui afin de travailler sur son autre passe-temps : les mathématiques appliquées à l'astronomie
et aux phénomènes atmosphériques. Il a commencé par câbler une carte utilisant l'AT&T DSP32C (le prédécesseur
du DSP3210). Il m'a contacté pour faire passer le projet à l'étape suivante, et Jeff Porter de Commodore nous
a aidés à faire un vrai schéma de carte et à produire quelques prototypes de circuits imprimés avec deux DSP32C
pour prouver le concept.
DSP32C et DSP3210
Commodore impressionné
Grâce à mes relations chez Bell Labs (j'avais travaillé à Murray Hill pendant plusieurs années), j'ai entamé
des relations avec le groupe DSP d'AT&T, et j'ai finalement fait appel à Commodore, ce qui a donné lieu à une
journée de démonstration pour Jeff Porter, Dave Haynie et moi-même. Tout le monde était tellement impressionné
que Commodore a décidé d'intégrer le DSP3210 dans sa prochaine génération de cartes mères. Les perspectives
étaient si prometteuses que Dave Haynie s'attendait à ce que ce type d'intégration fasse partie de la prochaine
génération d'Amiga (projet "Acutiator"). J'ai été engagé pour faire le portage du logiciel, ce qui m'a ramené
à Murray Hill, et nous avons fait une démonstration complète du système (sur l'A3000+ AA) lors du dernier Amiga
DevCon à Orlando en 1993. Commodore était malheureusement déjà dans la spirale de la mort à cause d'une horrible
gestion de ses dirigeants tant au niveau de l'entreprise que de l'ingénierie, et le travail sur le système
Amiga s'est donc arrêté juste après.
Dave Haynie et Jeff Porter
Une première utilisation professionnelle
À peu près à la même époque, certaines personnes d'ATL Ultrasound, une entreprise d'un milliard de dollars de
la région de Seattle dans l'état de Washington, aimaient l'Amiga et voyaient le potentiel de l'utiliser
comme un composant prêt à l'emploi autour duquel construire un système d'imagerie ultrasonore numérique à
bas prix. Ils m'ont engagé pour porter le logiciel AT&T sur leur carte Zorro. Le système a finalement
été approuvé par la Food and Drug Administration (NDLR : administration américaine des denrées alimentaires
et des médicaments qui a le mandat d'autoriser la commercialisation des médicaments sur le territoire des États-Unis)
et commercialisé à un prix révolutionnaire en tant que premier appareil à ultrasons
entièrement numérique : l'ATL HDI-1000. Ils ont mis oeuvre leur propre formateur de faisceau en arséniure
de gallium, et la carte DSP a été utilisée pour effectuer tout le traitement du signal des données en temps réel.
Le système pouvait faire des ultrasons Doppler et suivre le flux sanguin de manière non invasive.
ATL HDI-1000 (vue extérieure et carte mère)
AT&T a fini par supprimer la série DSP3210, ainsi que le processeur Hobbit "CRISP", ce qui a mis tous ses clients dans la
panade. Un important client OEM d'AT&T, Ariel Corp, a essayé de reprendre l'architecture et a embauché une partie
du groupe d'AT&T, mais cela n'a jamais vu le jour (ils avaient même une spécification de conception appelée "X27").
Cela a tué la BeBox
originale (je faisais aussi le portage pour eux), et finalement la ligne HDI-1000 est devenue
orpheline quand Philips a acheté ATL.
Le DSP3210 dans l'A3000+ et la BeBox
L'A3000+ n'était qu'un prototype, et n'a jamais été terminé/commercialisé. Il a été fait avant que le
68040 et ses implications de cache soient un problème. L'implémentation que j'ai faite pour ATL était
une implémentation complète du système VCOS (qui comprenait le noyau VCOS et la couche hôte VCAS) pour l'Amiga.
Elle était déployée avec des 68040 et, en interne, nous passions aux 68060 pour le développement.
Les sources (pilotes du DSP3210 pour AmigaOS) que j'ai données à Christian Krenner comprenaient tout le
code qui était utilisé sur le HDI-1000 (regardez sous /VCOS/SRC/ATL/VE). La couche VE devait servir
de modèle pour l'implémentation de la gestion bas niveau pour les AA3000/3000+.
Le DSP3210 était le successeur du DSP32C, tous deux développés par AT&T Microelectronics (la fonderie
était à Allentown, PA). Le logiciel a été développé principalement à Bell Labs à Murray Hill, New Jersey
et Holmdel, New Jersey. Bell Labs a été transformé en Lucent par AT&T (ce n'est pas Lucent qui a acheté
AT&T) afin de pouvoir vendre des équipements à d'autres sociétés de télécommunications. Je travaillais
sur l'intégration pour Commodore (j'ai fait l'introduction à Jeff Porter), et finalement j'ai été engagé
par Be et quelques autres sociétés pour le travail d'intégration du DSP32xx. La BeBox originale avait
deux processeurs AT&T Hobbit "CRISP" et trois DSP AT&T DSP3210 (les directeurs et ingénieurs principaux
de Be venaient tous d'Apple, qui avait intégré le DSP3210 dans la ligne Quadro AV de Macintosh).
La BeBox
J'ai également réalisé tout le développement et l'intégration du système d'imagerie par ultrasons ATL HDI-1000,
qui était construit autour d'une carte mère d'Amiga 4000 avec une carte accélératrice 68060. Ce projet a
démarré en 1993/1994, le développement s'est poursuivi jusqu'en 1997, et il a été lancé et vendu avec
succès dans le monde entier par ATL et plus tard par Philips (qui a racheté ATL). C'était le premier système
à ultrasons entièrement numérique. Les DSP ont été utilisés pour tout le traitement du signal de leur
dispositif de faisceau personnalisé, qui a été implémenté en GaAs. Le système ATL utilisait deux DSP3210
sur une carte d'extension Zorro. Il y avait une conception pour une version avec six DSP du système avant
que AT&T/Lucent ne détruise tout.
La mort du DSP3210
Carly Fiorina était une figure clé de Lucent et a joué un rôle déterminant dans sa création. Elle a fini
par devenir présidente du secteur des produits grand public de Lucent en 1996. Sous sa direction, Lucent
a mis fin à la ligne de produits DSP à virgule flottante, coupant l'herbe sous le pied de Be, Apple et de mes
autres clients. Apple a mis fin à la ligne Quadro AV, Be est passé au PowerPC, et d'autres sociétés ont maintenu
leurs produits tant qu'elles pouvaient s'approvisionner en DSP3210/3207 auprès de Lucent. C'était un comportement
assez typique d'une grande entreprise comme AT&T/Lucent : développer une technologie de pointe, commencer à
la lancer sur le marché, puis la supprimer lorsque vous vous rendez compte qu'elle ne vous rapportera pas les
bénéfices indécents que vous pourriez réaliser avec une autre technologie. Beaucoup de bonnes technologies
ont fini à l'abattoir dans les années 1990, non pas pour leurs mérites techniques, mais à cause d'intérêts
commerciaux à courte vue (l'Amiga, par exemple). Elle est ensuite devenue PDG de Hewlett-Packard/Compaq, qui
a connu son propre lot de problèmes sous sa direction.
Carly Fiorina
Le DSP3210 n'était pas une architecture parfaite, mais il était à l'avant-garde pour l'époque et très "RISC".
Le jeu d'instructions était simple et facile à coder une fois que vous aviez compris comment gérer le pipeline,
les états d'attente, etc. Les DSP excellent dans les opérations de multiplication-accumulation à haute vitesse
(entiers ou à virgule flottante), mais la véritable clé du DSP3210 était son noyau de contrôle RISC,
son intégration d'entrées-sorties en série et sa capacité à partager un bus système avec d'autres processeurs
(ou d'autres DSP). Les versions ultérieures de la puce (par exemple le DSP3207) ont supprimé les entrées-sorties
en série de la puce pour réduire les coûts et promouvoir les entrées-sorties en série partagées dans les systèmes
multi-DSP. Ce n'était que de la virgule flottante en simple précision, ce qui me frustrait car j'avais espéré
que la société Pixar y porterait son moteur de rendu 3D Renderman, mais Pixar exigeait une double précision. J'ai
même organisé une réunion au Siggraph (je ne me souviens plus si c'était en 1990 à Dallas ou en 1991 à Las
Vegas) entre Henri Rubin de Commodore et Loren Carpenter de Pixar. Pixar était en fait intéressé par un portage
générique sur le matériel Amiga de base, mais je suis sûr que Commodore a bâclé les négociations...
Henri Rubin et Loren Carpenter
X27, le successeur qui n'a pas existé
Un groupe d'ingénieurs de Lucent s'est retrouvé chez Ariel Corp, qui fabriquait des DSP et d'autres cartes
d'entrées-sorties pour ISA, bus VME, etc. En 1997, ils ont présenté une proposition de conception pour un
successeur du DSP3210 entièrement compatible au niveau du langage, appelé "X27", qui aurait été environ 10
fois plus performant (200 MIPS/400 MFlops à 100 MHz contre 20 MIPS/40 MFlops à 66 MHz) et évolutif.
Les principaux ingénieurs venant de Bell Labs/AT&T Microelectronics dont je me souviens étaient Sam
Stewart et John Lynch (ce dernier était le directeur du groupe DSP de Bell Labs et l'architecte principal
de VCOS).
Utilisations sur Amiga
AT&T avait développé plusieurs modules pour le DSP3210 dans le cadre de VCOS, qui étaient disponibles
pour fonctionner sur l'implémentation Amiga. Un décodeur audio MPEG niveau 2 était déjà fonctionnel et
j'en ai fait la démonstration lors de l'Amiga DevCon 1993 à Orlando, en Floride. Notre plan était de
faire du modem V.32bis une des options (et plus tard un modem 56K), ainsi que la synthèse et la reconnaissance
vocale, le décodage JPEG (également en démonstration au DevCon d'Orlando). Mon bon ami
Gary Murakami avait
développé une implémentation complète d'un synthétiseur musical
Roland SoundFont pour VCOS. Il fonctionnait
sur un PC, et malheureusement nous n'avons jamais eu l'occasion de le porter sur Amiga.
Gary Murakami
Problème de cache avec les 68040/68060
En ce qui concerne le problème de cache de données du 68040/68060 avec le DSP3210, c'est normal.
Lorsque le DSP3210 écrit dans la mémoire système, le processeur ne sait pas que les informations
qui se trouvent dans son cache sont périmées. Le cache doit également être vidé lorsque des données/instructions
sont mises à jour en mémoire pour être transmises au DSP afin de s'assurer qu'elles sont dans la mémoire
système à laquelle le DSP peut accéder. Avec le noyau Exec de l'Amiga de l'époque, la seule façon de
gérer cela était d'utiliser les appels CacheClearU() ou CacheClearE(), qui vidaient implicitement le
cache de données avant d'accéder à la mémoire dans laquelle le DSP avait écrit. Cela n'était pas forcément
très efficace, car dans certains cas, le cache de données était vidé plus que nécessaire.
J'avais demandé une fonctionnalité du système d'exploitation pour pouvoir marquer la mémoire sur les systèmes 68040/68060
comme non cachable lorsqu'elle était allouée à l'aide de la MMU (en utilisant un drapeau comme "MEMF_NOCACHE"
à AllocMem()/AllocAbs()/AllocVec()/AllocVecPooled(), etc.). Il aurait pu être possible d'utiliser la
fonction de surveillance du bus 68040/68060 pour invalider le cache, mais je ne suis pas sûr que cela ait
jamais été géré par le matériel Amiga. Il aurait également pu être approprié d'utiliser CachePreDMA()/CachePostDMA(),
mais je suis presque sûr que mon code n'utilisait pas ces fonctions. Certaines de ces fonctions n'ont
peut-être pas été implémentées dans le logiciel A3000+ puisqu'il s'agissait d'une conception purement
68030 et que je n'ai pas eu à m'occuper des problèmes liés aux 68040/68060 jusqu'à ce que je commence
à travailler sur le projet ATL après que Commodore ait connu sa chute finale.
Conclusion
Le DSP3210 aurait été un atout pour l'Amiga sur plusieurs points :
Il aurait adressé un des reproches fait à l'AGA à l'époque, le fait que Paula n'avait pas évolué.
Le DSP3210 aurait ajouté 8 voies 16 bits supplémentaires.
Ce composant aurait aussi doté l'Amiga de capacités de calcul non négligeables pour son temps.
Il aurait augmenté nativement les possibilités multimédias de l'Amiga (MPEG2, JPEG, synthèse vocale,
reconnaissance vocale), ou encore l'aurait doté d'un modem logiciel.
Enfin, l'Amiga aurait pu entrer sur de nouveaux marchés par des partenariats avec des sociétés
tierces (l'ATL-HDI1000 est un exemple qui aurait pu en amener d'autres).
On ne peut que regretter que la direction de Commodore ait annulé la finalisation puis la commercialisation
de l'Amiga 3000+. Ce premier Amiga de génération AGA devait initialement être commercialisé fin 1991
ou début 1992. Une décision discutable de plus.
Annexes : vidéos
Au début de l'année 2021, le bidouilleur anglais Wrangler a posté une vidéo avec les premiers
essais d'un test plus visuel pour voir les performances du DSP. C'était testé par rapport à un 60860.
Le DSP était en gros deux fois moins performant que la FPU du 68060.
Un mois plus tard, il a proposé une seconde vidéo avec une routine optimisée.
Cette fois, il a modifié son programme pour faire fonctionner le DSP et le 68060 en parallèle.
Là, le DSP est cinq fois plus rapide que la FPU du 68060.