Ad essere onesti la linea di demarcazione tra i due è quasi scomparsa al giorno d'oggi e ci sono processori che possono essere classificati come entrambi (AD Blackfin per esempio).
Parlando in generale:
I microcontrollori sono processori matematici interi con un sottosistema di interrupt. Alcuni possono avere unità di moltiplicazione hardware, altri no, ecc. Il punto è che sono progettati per la matematica semplice e principalmente per controllare altri dispositivi.
I DSP sono processori ottimizzati per l'elaborazione del segnale in streaming. Spesso hanno istruzioni speciali che accelerano le attività comuni come moltiplicare-accumulare in una singola istruzione. Spesso hanno anche altre istruzioni vettoriali o SIMD. Storicamente non erano sistemi basati su interruzioni e operavano con sistemi di memoria non standard ottimizzati per il loro scopo rendendoli più difficili da programmare. Di solito erano progettati per funzionare in un unico grande ciclo elaborando un flusso di dati. I DSP possono essere progettati come processori a numero intero, a virgola fissa o a virgola mobile.
Storicamente se si volesse elaborare flussi audio, flussi video, eseguire un controllo rapido del motore, tutto ciò che richiedeva l'elaborazione di un flusso di dati ad alta velocità si dovrebbe guardare a un DSP.
Se volessi controllare alcuni pulsanti, misurare una temperatura, far funzionare un LCD a caratteri, controllare altri circuiti integrati che stanno elaborando cose, useresti un microcontrollore.
Oggi, per lo più, trovi processori di tipo microcontrollore per scopi generici con istruzioni simili a DSP o con co-processori su chip per gestire i dati di streaming o altre operazioni DSP. Non vedi più i DSP puri usati molto, tranne in settori specifici.
Il mercato dei processori è molto più ampio e sfocato rispetto al passato. Ad esempio, difficilmente considero un SoC ARM cortx-A8 un microcontrollore, ma probabilmente si adatta alla definizione standard, specialmente in un pacchetto PoP.
EDIT: Ho pensato di aggiungere un po 'per spiegare quando / dove ho usato i DSP anche ai tempi dei processori di applicazioni.
Un prodotto recente che ho progettato stava elaborando audio con X canali di input e X canali di output per "zona". L'uso previsto per il prodotto significava che spesso sarebbe rimasto seduto lì a fare le sue cose, elaborando i canali audio per anni senza che nessuno lo toccasse. L'elaborazione audio consisteva in vari filtri e funzioni acustici. Inoltre, il sistema era "hot plugable" con la possibilità di aggiungere un certo numero di "zone" indipendenti in un'unica casella. Era composto da 3 progetti PCB (scheda madre, backplane e modulo plug-in) e il backplane supportava 4 moduli plug-in. Piuttosto un progetto divertente mentre lo stavo facendo da solo, ho avuto modo di progettare il sistema, lo schema, il layout del PCB e il firmware.
Ora avrei potuto fare il tutto con un singolo core ARM ingombrante, avevo solo bisogno di circa 50MIPS di lavoro DSP su numeri a virgola fissa a 24 bit per zona. Ma poiché sapevo che questo sistema avrebbe funzionato per un tempo estremamente lungo e sapevo che era fondamentale che non facesse mai clic o si aprisse o qualcosa del genere. Ho scelto di implementarlo con un DSP a bassa potenza per zona e un singolo microcontrollore PIC che ha svolto il ruolo di gestione del sistema. In questo modo, anche se una delle funzioni uC si arrestasse in modo anomalo, forse un attacco DDOS sulla sua porta Ethernet, il DSP continuerebbe felicemente a perdere tempo e probabilmente nessuno lo saprebbe mai.
Quindi il microcontrollore ha svolto il ruolo di far funzionare il display LCD a 2 caratteri, alcuni pulsanti, il monitoraggio della temperatura e il controllo della ventola (c'erano anche alcuni amplificatori audio di potenza abbastanza elevata su ciascuna scheda) e ha persino servito una pagina Web in stile AJAX via Ethernet. Ha anche gestito i DSP tramite una connessione seriale.
Quindi questa è una situazione in cui anche nei giorni in cui avrei potuto usare un singolo core ARM per fare tutto, il design ha dettato un IC di elaborazione del segnale dedicato.
Altre aree in cui mi sono imbattuto in DSP:
* Audio di fascia alta - Ricevitori di fascia molto alta e strumenti di miscelazione ed elaborazione di qualità per concerti
* Elaborazione radar - Ho usato anche core ARM per questo nelle app di fascia bassa.
* Elaborazione del sonar
* Computer vision in tempo reale
Per la maggior parte, le estremità basse e medie dello spazio audio / video / simile sono state rilevate da processori applicativi che combinano una CPU per scopi generici con motori offload coprocessore per varie applicazioni.