Para ser sinceros, la línea que separa a ambos ha desaparecido casi por completo y hay procesadores que pueden clasificarse como ambos (AD Blackfin, por ejemplo).
En general:
Los microcontroladores son procesadores matemáticos enteros con un subsistema de interrupción. Algunos pueden tener unidades de multiplicación por hardware, otros no, etc. El punto es que están diseñados para las matemáticas simples, y sobre todo para controlar otros dispositivos.
Los DSP son procesadores optimizados para el procesamiento de señales en flujo. Suelen tener instrucciones especiales que agilizan tareas comunes como multiplicar-acumular en una sola instrucción. También suelen tener otras instrucciones vectoriales o SIMD. Históricamente no eran sistemas basados en interrupciones y funcionaban con sistemas de memoria no estándar optimizados para su propósito, lo que los hacía más difíciles de programar. Suelen estar diseñados para operar en un gran bucle que procesa un flujo de datos. Los DSP pueden diseñarse como procesadores de números enteros, de punto fijo o de punto flotante.
Históricamente, si se quería procesar flujos de audio, de vídeo, controlar motores a gran velocidad, cualquier cosa que requiriera procesar un flujo de datos a gran velocidad, se recurría a un DSP.
Si quieres controlar unos botones, medir una temperatura, hacer funcionar una pantalla LCD de caracteres, controlar otros circuitos integrados que están procesando cosas, utilizarías un microcontrolador.
Hoy en día, la mayoría de los procesadores de propósito general son microcontroladores con instrucciones de tipo DSP incorporadas o con coprocesadores en el chip para tratar los datos en flujo u otras operaciones DSP. Los DSP puros ya no se utilizan mucho, salvo en sectores específicos.
El mercado de los procesadores es mucho más amplio y borroso que antes. Por ejemplo, no considero que un SoC ARM cortex-A8 sea un microcontrolador, pero probablemente se ajuste a la definición estándar, especialmente en un paquete PoP.
EDITAR: Pensé en añadir un poco para explicar cuándo y dónde he utilizado DSPs incluso en los días de los procesadores de aplicación.
Un producto reciente que diseñé estaba haciendo el procesamiento de audio con X canales de entrada y X canales de salida por "zona". El uso previsto para el producto significaba que a menudo se quedaba allí haciendo lo suyo, procesando los canales de audio durante años sin que nadie lo tocara. El procesamiento de audio consistía en varios filtros y funciones acústicas. El sistema también era "conectable en caliente", con la posibilidad de añadir un cierto número de "zonas" independientes en una sola caja. Se trataba de un total de 3 diseños de PCB (placa base, un backplane y un módulo enchufable) y el backplane soportaba 4 módulos enchufables. Fue un proyecto muy divertido ya que lo hice solo, tuve que hacer el diseño del sistema, el esquema, el diseño del PCB y el firmware.
Ahora podría haber hecho todo el asunto con un solo núcleo ARM voluminoso, sólo necesitaba unos 50MIPS de trabajo DSP en números de punto fijo de 24bit por zona. Pero como sabía que este sistema iba a funcionar durante un tiempo extremadamente largo y sabía que era crítico que nunca hiciera click o pop o algo así. Decidí implementarlo con un DSP de baja potencia por zona y un único microcontrolador PIC que desempeñaba la función de gestión del sistema. De esta manera, incluso si una de las funciones del uC se bloquea, tal vez un ataque DDOS en su puerto Ethernet, el DSP seguiría funcionando felizmente y es probable que nadie lo sepa.
Así que el microcontrolador desempeñó el papel de ejecutar la pantalla LCD de 2 líneas de caracteres, algunos botones, la monitorización de la temperatura y el control del ventilador (también había algunos amplificadores de audio de bastante potencia en cada placa) e incluso sirvió una página web de estilo AJAX a través de ethernet. También gestionaba los DSPs a través de una conexión serie.
Así que es una situación en la que incluso en los días en que podría haber utilizado un solo núcleo ARM para hacer todo, el diseño dictó un IC de procesamiento de señales dedicado.
Otras áreas en las que me he encontrado con DSPs:
*Audio de alta gama - Receptores de muy alta gama y equipos de mezcla y procesamiento de calidad para conciertos
*Procesamiento de radares - También he utilizado núcleos ARM para esto en aplicaciones de gama baja.
*Proceso de Sonido
*Visión por ordenador en tiempo real
En su mayor parte, los extremos inferior y medio del espacio de audio/vídeo/similar han sido ocupados por procesadores de aplicaciones que combinan una CPU de propósito general con motores de descarga de coproducción para diversas aplicaciones.