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.
De nombreux processeurs de signaux numériques incluent une variété de fonctions que l'on ne retrouve pas dans les processeurs «ordinaires»:
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.
la source
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.
la source
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
la source
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
la source
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.
la source
<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.