Para añadir un poco más lo que ya se ha dicho,un DSP es un procesador con una arquitectura (topología interna) pensada y hecha para la ejecución de procesos repetitivos sobre cantidades grandes de datos en tiempo real, que es, a grandes rasgos, a lo que se reduce el proceso digital de señal, tanto en audio como en vídeo.
Los efectos de audio consisten, en su mayoría, en ir tomando las muestras de la memoria del sistema y multiplicarlas por una serie de coeficientes, e ir sumándolas unas con otras para terminar reubicándolas en la memoria...esto,debido a que implica realizar un gran número de cálculos matemáticos (sumas y multiplicaciones) y un gran número de accesos a memoria para buscar los datos de origen y recolocar los datos una vez procesados,requiere optimizar los tiempos que se consumen en hacer todas esas cosas si se quiere funcionar a tiempo real (cuanto más complejo es el proceso,más se requiere dicha optimización).
Para conseguirlo,no sólo se hacen procesadores que son capaces de correr a más megahertzios,sino que su set de instrucciones y su hardware interno (bloques de memoria,buses de datos,etc) están preparados para llevar a cabo acciones más complejas ejecutando menor cantidad de instrucciones.
Una cpu normalita puede tener un set de 35 instrucciones,y cualquier operación que se quiera realizar en la que no sea suficiente con una instruccion del set pues habrá que realizarla concatenando varias instrucciones (o sea,mediante un algoritmo).Un DSP perfectamente puede contar con un set de 100 instrucciones o más,por lo que en muchos casos podrá llevar a cabo una misma tarea ejecutando menos instrucciones.
Un ejemplo hipotético...un procesador corriente,como el que puede llevar una BCF2000...supongamos que es una cpu corriente y moliente que corre a 10 MHz,lo que vendría a significar que ejecuta 10 millones de instrucciones por segundo (100 nanosegundos por instrucción)...entre sus instrucciones las hay para leer un dato (muestra) de una posición de memoria concreta; para escribir un dato en una posición de memoria concreta; para multiplicar un dato LEÍDO PREVIAMENTE DE MEMORIA por un coeficiente determinado; etc...
Si quisiéramos usar este cpu para, por ejemplo, aplicar un efecto consistente en ir tomando de memoria cada muestra,sumarla con la muestra anterior,multiplicar esa suma por un coeficiente, y entregar el resultado al DAC para que saque el sonido ya procesado, el programa podría ser una cosa así:
Vamos a suponer que se tiene un buffer de entrada de 256 muestras,que están ubicadas desde la posición 0 a la 255 de la memoria,sobre las que se aplica un proceso repetitivo.
CLEAR n // Pone a cero el parámetro n para encarar el algoritmo
ALGORITMO: //Proceso repetitivo
INC n // Incrementa en una unidad el valor de n
READ n // Accede a memoria y lee la muestra de la posición n
SUM n-1 // Suma lo obtenido en la instrucción anterior con la muestra n-1
MUL 0.37 // Multiplica la suma por el coeficiente 0.37
COMP n, 255 // Esta instrucción pone n a cero si ésta vale 255,si no,no la toca
WRITE DAC // Mueve el resultado a donde lo vaya a tomar el DAC
GOTO ALGORITMO // Vuelta a empezar,pero con la muestra siguiente del buffer
En total se ejecutan 7 instrucciones para cada muestra,lo que supone que para procesar todo el buffer se requiere un tiempo de:
100 ns * 7 * 256 = 179.2 microsegundos.
Es un proceso circular (el pan de cada día del proceso digital de señal),es decir,se comienza por el principio del buffer y cuando se llega a la última muestra,se vuelve al principio del buffer,donde se supone ya están disponibles nuevas muestras para procesar.
Ahora veamos un hipotético caso equivalente,pero con un DSP que,por ejemplo corra a 50 MHz (20 nanosegundos por instrucción):
CLEAR n // Pone a cero el parámetro n para encarar el algoritmo
ALGORITMO2: //Proceso repetitivo
READINC n, 255 // Incrementa n (o la reinicia, si toca), y lee las 2 muestras
SUM // Suma las muestras
MULWRITE 0.37, DAC // Multiplica la suma por 0.37 y coloca el resultado para el DAC
GOTO ALGORITMO2 // Vuelta a empezar,pero con la muestra siguiente del buffer
Se han usado 4 instrucciones para aplicar el efecto...
Las instrucciones de un DSP son más poderosas (van acorde a la arquitectura),y para hacer lo mismo que el otro procesador,se requiere menor cantidad de ellas,por lo que se invierte menos tiempo:
20 ns * 4 * 256 = 20.48 microsegundos
Unas 9 veces más rápido que el otro procesador (y no 5 como consecuencia de los megahertizios).
Otra característica de los DSP es que suelen trabajar los datos en punto flotante,lo que permite una mayor precisión en los cálculos.
4