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.