|
|||||||||||||||||||||||||||||||||||||||||||
|
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 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 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 À 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) 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 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 Henri Rubin et Loren Carpenter 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 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 :
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.
|