Quelle est la différence entre un DSP et un microcontrôleur standard?

84

Je comprends qu'un DSP soit optimisé pour le traitement du signal numérique, mais je ne suis pas certain de l'impact que cela aura sur la tâche de choisir un CI. Presque tout ce que je fais avec un microcontrôleur implique le traitement de signaux numériques!

Par exemple, comparons le populaire DSP Microchip dsPIC30 ou 33 avec son autre offre 16 bits, le microcontrôleur à usage général PIC24. Le dsPIC et le PIC peuvent être configurés pour avoir la même mémoire et la même vitesse, ils ont des ensembles périphériques similaires, une capacité A / N similaire, un nombre de broches, un appel de courant, etc. La seule différence majeure qui apparaît sur la liste de Digikey est l'emplacement du oscillateur. Je ne peux pas faire la différence en regardant les prix (ou tout autre domaine, d'ailleurs).

Si je souhaite utiliser plusieurs capteurs externes utilisant divers protocoles (I2C, SPI, etc.), effectuer des conversions A / N, stocker des données sur des mémoires flash en série, répondre à certains boutons et les transmettre à un caractère. LCD et sur un FT232 (un système embarqué assez générique), quelle puce dois-je utiliser? Il ne semble pas que le DSP soit en retard par rapport au PIC, et il propose ce mystérieux "moteur DSP". Mon code fait toujours des calculs, et de temps en temps, j'ai besoin de nombres décimaux ou fractionnaires, mais je ne sais pas si je tirerai profit d'un DSP.

Une comparaison plus générale entre les DSP et les microcontrôleurs d'un autre fournisseur serait également utile. Je les utilise simplement comme point de départ pour la discussion.

Kevin Vermeer
la source

Réponses:

64

Pour être honnête, la ligne de démarcation entre les deux est presque révolue de nos jours et certains processeurs peuvent être classés comme les deux (AD Blackfin par exemple).

En général:

Les microcontrôleurs sont des processeurs mathématiques avec un sous-système d'interruption. Certains peuvent avoir des unités de multiplication matérielles, d'autres pas, etc. Le fait est qu'ils sont conçus pour des calculs simples et principalement pour contrôler d'autres périphériques.

Les DSP sont des processeurs optimisés pour le traitement du signal en continu. Ils ont souvent des instructions spéciales qui accélèrent des tâches courantes telles que multiplier-accumuler dans une seule instruction. Ils ont aussi souvent d'autres instructions vectorielles ou SIMD. Historiquement, ils n'étaient pas basés sur des interruptions et fonctionnaient avec des systèmes de mémoire non standard optimisés pour leur utilisation, ce qui les rendait plus difficiles à programmer. Ils étaient généralement conçus pour fonctionner en une grande boucle traitant un flux de données. Les DSP peuvent être conçus comme des processeurs de nombre entier, virgule fixe ou virgule flottante.

Historiquement, si vous vouliez traiter des flux audio, des flux vidéo, effectuer un contrôle moteur rapide, tout ce qui nécessitait le traitement d'un flux de données à haute vitesse était considéré comme un DSP.

Si vous souhaitez contrôler certains boutons, mesurer une température, exécuter un écran LCD à caractères, contrôler d'autres circuits intégrés traitant des choses, vous utiliseriez un microcontrôleur.

Aujourd'hui, vous trouvez principalement des processeurs de type microcontrôleur à usage général avec des instructions intégrées de type DSP ou avec des co-processeurs sur puce pour gérer les flux de données ou autres opérations DSP. Vous ne voyez plus beaucoup de DSP purs utilisés, sauf dans des industries spécifiques.

Le marché des processeurs est beaucoup plus large et plus flou qu’il n’était. Par exemple, je considère à peine un SoC ARM cortex-A8 comme un microcontrôleur, mais il correspond probablement à la définition standard, en particulier dans un package PoP.

EDIT: Je pensais ajouter un peu pour expliquer quand et où j’ai utilisé des DSP, même à l’époque des processeurs d’application.

Un produit récent que j’ai conçu faisait du traitement audio avec X canaux d’entrée et X canaux de sortie par «zone». L’utilisation prévue du produit signifiait qu’il passait souvent les choses en face, traitant les canaux audio pendant des années sans que personne ne le touche. Le traitement audio consistait en divers filtres et fonctions acoustiques. Le système était également "connectable à chaud" avec la possibilité d'ajouter un certain nombre de "zones" indépendantes dans une boîte. Il s'agissait d'un total de 3 conceptions de circuit imprimé (carte mère, un fond de panier et un module enfichable) et le fond de panier supportait 4 modules enfichables. Un projet assez amusant car je le faisais en solo, je devais faire la conception du système, les schémas, la mise en page du PCB et le firmware.

Maintenant, j'aurais pu faire le tout avec un seul noyau ARM volumineux, je n'avais besoin que d'environ 50 MIPS de travail DSP sur des nombres à points fixes 24 bits par zone. Mais parce que je savais que ce système fonctionnerait très longtemps, je savais qu’il était essentiel de ne jamais cliquer ou faire apparaître aucun résultat de ce genre. J'ai choisi de l'implémenter avec un DSP basse consommation par zone et un seul microcontrôleur PIC jouant le rôle de gestion du système. De cette manière, même si l’une des fonctions uC ne fonctionnait plus, comme par exemple une attaque DDOS sur son port Ethernet, le DSP ne cesserait de gâcher et sa personne ne le saurait probablement.

Le microcontrôleur a donc joué le rôle d’exécuter l’écran LCD à 2 caractères, certains boutons, la surveillance de la température et le contrôle des ventilateurs (il y avait également des amplificateurs audio de puissance assez élevée sur chaque carte) et a même servi une page Web de style AJAX via Ethernet. Il a également géré les DSP via une connexion série.

C'est donc une situation où même à l'époque où j'aurais pu utiliser un seul cœur ARM pour tout faire, la conception dictait un circuit intégré de traitement du signal dédié.

Autres domaines dans lesquels j'ai rencontré des DSP:

* Audio haut de gamme - Récepteurs très haut de gamme et équipement de mixage et de traitement de qualité concert

* Traitement radar - J'ai également utilisé des cœurs ARM pour cela dans les applications bas de gamme.

* Traitement Sonar

* Vision par ordinateur en temps réel

Pour la plupart, les extrémités basse et moyenne de l'espace audio / vidéo / similaire ont été reprises par des processeurs d'application qui associent une CPU polyvalente à des moteurs de déchargement co-proc pour diverses applications.

marque
la source
1
Un autre ajout peut-être. Dans une application avec environ 80 lignes d'E / S et 12 entrées analogiques, nous utilisons maintenant un seul microcontrôleur avec un FPGA lié pour gérer les flux d'E / S. Des solutions comme celle-ci deviennent de plus en plus courantes. Nous utilisons ce système: embeddedarm.com/products/board-detail.php?product=ts-7800 pour accélérer le développement pour une courte mise en marché et je dois dire que cela fonctionne très bien (bien sûr, le prix de un tel produit pourrait ne pas convenir aux applications dont le prix de vente / la valeur attendue est inférieur.) - Wouter Simons Il y a 33 secondes
Wouter Simons
Tous les microcontrôleurs n'ont pas d'interruption. Dans les applications critiques, ils ne sont jamais utilisés. Exemple: le contrôleur Viper utilisé dans les avions de combat.
Steven
15

De nombreux processeurs de signaux numériques incluent une variété de fonctions que l'on ne retrouve pas dans les processeurs «ordinaires»:

  1. Possibilité d'effectuer une multiplication-accumulation, avec les deux opérandes extraites de la RAM, à un rythme d'un cycle par paire d'opérandes.
  2. Possibilité d'effectuer une forme d'adressage «modulo» ou «wrapping» afin de permettre à un tampon d'être utilisé de manière répétée sans avoir à utiliser de code manuel pour garantir le bouclage des pointeurs. Le 3205x, par exemple, possède un registre «début du tampon» et un registre «fin du tampon»; si le code tente d'incrémenter ou de décrémenter un registre de pointeur pointant vers «démarrage du tampon», le processeur chargera le pointeur avec «fin du tampon». Le modèle 3205x dispose également d’un mode de transfert inversé, où les additions d’adresses se propagent de MSB à LSB, et non inversement; Cela permet un adressage modulo-N si N est une puissance de 2, bien que les données soient stockées dans une séquence brouillée.
  3. La possibilité de spécifier qu'une instruction doit être exécutée 'n' fois sans avoir besoin d'être relue. Certains processeurs tels que le 8088 incluent ceci pour quelques instructions, mais de nombreux DSP le permettent pour de nombreuses instructions.
  4. La possibilité de spécifier qu'un bloc de code doit être exécuté de manière répétée, jusqu'à n fois, sans avoir besoin de créer de branche. Avant chaque extraction de code, le compteur de programme est vérifié par rapport au registre «boucle-fin»; s'il correspond et que la boucle est activée, le compteur de programme sera rechargé avec «début de boucle» (sinon, il sera incrémenté). Si 'nombre de boucles' est zéro, la boucle sera désactivée; sinon, le nombre de boucles sera décrémenté.

Notez que de nombreux DSP auront des bus distincts pour permettre d'extraire simultanément les deux opérandes d'un multiplic-accumuler; Je n'ai jamais vu un non-DSP capable de le faire. Bien que je ne sache aucune caractéristique qu'une puce doit «manquer» pour être un DSP, un espace supplémentaire en silicium requis pour permettre l'extraction d'opérande double est un espace en silicium qui n'est pas utilisé à d'autres fins plus généralement utiles.

supercat
la source
J'étais familier avec l'accumulation multiple, mais l'adressage modulo et l'exécution de code sans extraction répétée étaient des fonctionnalités que je ne connaissais pas bien.
Kevin Vermeer
1
Vous avez beaucoup de bonnes réponses et c'est bien que vous travailliez sur des questions anciennes et nouvelles. Je passerais par et upvote toutes vos réponses s'il n'y avait pas la détection des fraudes algorithmes et casquette de représentant tous les jours . Attendez-vous à quelques jours! Continuez votre excellent travail!
Kevin Vermeer
@reemrevnivek: Je suis content que mes réponses soient utiles. Comme je l'ai noté, la conception de la multiplication-accumulation double extraction est une fonctionnalité que je n'ai pas vue sur les processeurs non-DSP. L’ARM fonctionne bien avec des opérations nécessitant un adressage multiplicatif-cumulé et modulo (en utilisant une adresse effective de, par exemple, (R0 + (R1 >> 24)) pour une table de 256 octets), mais un ARM typique aurait besoin de quatre un DSP fait en un cycle.
Supercat
MAC est une instruction à trois opérandes a <- a + b * c pas deux.
Trismegistos
@Trismegistos: Une opération MAC répétée de N-élément impliquera un total de 2N + 1 opérandes. Il n'est pas nécessaire d'aller chercher l'accumulateur avant chaque article et de le stocker ensuite. Alors que les processeurs avec une multiplication-addition non répétée peuvent avoir trois opérandes, un MAC répété ne récupérera que deux opérandes par cycle.
Supercat
13

Une chose que les autres n'ont pas mentionnée est le comportement face au débordement numérique. Dans les processeurs normaux, cela va généralement de la valeur maximale à la valeur minimale.

Pour l'utilisation de DSP, il existe souvent au moins une option permettant d'utiliser la saturation à la place. En d’autres termes, en cas de dépassement, la valeur reste à la valeur maximale, ce qui produit moins de distorsion et simule mieux le comportement des circuits analogiques.

bleu étoile
la source
9

La plus grande différence entre le DSP et l’uController standard réside dans la fonctionnalité d’accumulation multiple (MAC) du DSP que l’UC n’a pas. Cette fonction est utile si vous souhaitez effectuer de véritables opérations de traitement de signal numérique telles que FFT (un exemple). Effectuer une FFT dans un microcontrôleur standard prendra beaucoup de temps par rapport à son exécution sur un MAC du DSP.

Le traitement des signaux I2C et série n’est pas identique au traitement des signaux dans un DSP. Un type de traitement totalement différent en cours puisque les signaux série ne sont que des bits.

Voici une discussion similaire sur un forum DSP : DSP vs. Microprocessor

Jay Atkinson
la source
J'ai vu un accumulateur sur le diagramme DSP, mais je ne savais pas ce qu'il faisait. Bon à savoir! Je comprends que I2C et le port série ne sont pas identiques au traitement des signaux lorsque vous envoyez des données ASCII, mais à certains périphériques (accéléromètres d’accès série, convertisseurs A / N externes, GPS, etc.) codent les signaux dans leurs flux de données. dans le DSP en quelque sorte!
Kevin Vermeer
3
la plupart des traitements de signal consistent mathématiquement en la multiplication de matrices et / ou de vecteurs. Ce processus entraîne beaucoup de calculs de type réponse = a b + c d + e * f. Sur un processeur sans MAC, cela prend beaucoup d'instructions; avec un MAC, cela peut être beaucoup plus rapide.
Marc
1
Ce commentaire est totalement faux. Pas tous, mais de nombreux MCU incluent des multiplicateurs matériels avec des fonctions MAC. Cela n'a rien à voir avec une distinction entre DSP et MCU. Oui, les DSP sont plus susceptibles d’avoir un MAC qu’un MCU, mais il existe beaucoup plus de différences fondamentales que cette petite fonctionnalité.
2
Si vous remontez le temps 15 ans en arrière, vous ne verrez presque plus de MCU avec cette fonctionnalité. Si vous retirez le DSP du MAC ou une fonctionnalité équivalente, pouvez-vous honnêtement dire que vous avez un DSP? Je ne voudrais certainement pas en acheter un si je ne l'avais pas ou quelque chose de proche aussi. Il existe des différences d'architecture lorsque vous entrez dans Harvard vs von Neuman et l'accès mémoire, mais je donnais une réponse simple sans entrer dans une longue explication détaillée. Je pense que vous êtes trop sévère avec votre commentaire en disant "Complètement FAUX". Vous pouvez poster une réponse pour discuter de la profondeur qui, selon vous, doit être couverte.
Jay Atkinson
@adrian: Votre commentaire est carrément faux. Si une MCU a une fonction MAC, elle sera commercialisée en tant que DSP.
Johan.A
5

Auparavant, ce qui différenciait les DSP, c’était leur optimisation pour les opérations arithmétiques, en particulier la multiplication, bien qu’aujourd’hui, il n’est pas rare que les microcontrôleurs soient dotés d’instructions de multiplication et de division. Le traitement du signal avec des puces DSP présente peut-être un avantage, dans la mesure où certains d'entre eux prennent en charge le calcul mathématique à virgule fixe (par exemple, la bibliothèque «IQ» de TI TMS320s), alors que les micros sont plus susceptibles d'inclure des unités entières.

Personnellement, lorsque je devais choisir entre les deux pour une conception, j'essayais de déterminer si l'application nécessitait des calculs répétitifs avec uniquement une logique de changement de mode occasionnel, ou si elle ne devait effectuer que de courtes séquences de calculs, si nécessaire. Le premier serait le DSP, le second un micro.

Et puis, bien sûr, il y a des choses amusantes comme l'OMAP qui ont les deux. = P

JustJeff
la source
1
Je pense que je comprends la différence d'intention (votre deuxième paragraphe), mais je ne comprends pas pourquoi je le ferais quand les micros n'ont pas la capacité de calculer de type DSP et que les DSP ont des ensembles périphériques de type micro. Comme je l'ai dit dans mon OP, les modèles dsPIC33 et PIC24 peuvent avoir un ensemble de fonctionnalités presque identique et un prix identique. Corrigez-moi si je me trompe, mais bien que le DSP dispose d'installations de traitement répétitives, je ne pense pas que le PIC24 (ni aucun autre micro que j'ai examiné) ait un avantage sur un DSP en mode de changement de mode, comme un processeur double. pipeline ou plus rapide FLASH.
Kevin Vermeer
@reemrevnivek: vous dites donc pourquoi ne pas toujours choisir un DSP?
JustJeff
@ JustJeff: Oui, c'est exactement ce que je dis.
Kevin Vermeer
1

Une autre caractéristique possible de l’instruction MAC est l’incrémentation automatique des registres pointant vers des multiplicandes. J'ai programmé un DSP Zilog utilisant le cœur Clarkspur (à point fixe 16 bits). Il s’agissait d’une variante de l’architecture de Harvard avec trois bus lui permettant d’accéder simultanément à trois zones de mémoire: mémoire d’instructions, banque de données 1 et banque de données 2. Avec un flux de données dans une banque et des coefficients dans l’autre, faire un filtre FIR avec une instruction à cycle unique par opération d'incrémentation MAC / pointeur. En C, l'instruction unique ressemble à:

Accumulateur + = rambank1 [r1 ++] * rambank2 [r2 ++];

Et bien sûr, cette instruction est répétée pour chaque coefficient.

De plus, les DSP (du moins les plus anciennes que j'ai utilisées) sont en général une architecture RISC et sont conçus avec la plupart des instructions, voire la plupart d'entre elles, exécutées au cours d'un cycle (ou du même nombre de cycles). Cela permet de programmer une réponse d’interruption déterministe (un compte d’horloge fixe entre la ligne d’interruption active et la première instruction de l’ISR exécutée), tandis que la plupart des autres processeurs répondent aux interruptions avec un nombre variable de cycles d’horloge, en fonction de la point dans une instruction à cycles multiples, l’interruption se produit. Le temps d'exécution fixe élimine la gigue de temps d'horloge multiple dans les sorties répétitives.

Pour comparer le microchip Pic et DSPic de l’opérateur, j’ai compris lorsqu’on a introduit DSPic qu’il s’agissait principalement d’un Pic avec une instruction MAC et quelques autres fonctionnalités supplémentaires, qui peuvent certainement accélérer un microcontrôleur effectuant des fonctions de traitement du signal, (en raison de l'absence de l'une des autres fonctionnalités discutées), il pourrait pousser la terminologie à l'appeler un DSP. Le MSP430 est également disponible dans les versions avec un MAC matériel, mais personne n’appelle QU'UN DSP.

Je me souviens avoir lu il y a 10 ou 15 ans que les principaux processeurs d'Intel ajoutaient un code MAC et des instructions similaires pour effectuer un traitement du signal "natif" (plutôt que sur des cartes d'extension dotées de processeurs DSP dédiés, ce qui était courant pour la production audio dans les années 90). Les modems de bus PC 56K dialup n'étaient que des convertisseurs A / N et N / A, et dépendaient du processeur principal pour effectuer les fonctions de codage et de décodage du signal du modem. Il était donc nécessaire d'utiliser plus efficacement les processeurs. Les instructions de type DSP accélèrent considérablement l'utilisation des médias, tels que l'édition / encodage / décodage vidéo, ainsi que l'enregistrement / la production audio.

utilisateur23081
la source
Il n'y a rien de nouveau sous le soleil. <g>Au tout début du C, les opérateurs d'incrémentation et de décrémentation avaient été conçus pour être directement traduits en instructions matérielles uniques sur le PDP.
Pete Becker