05 marzo, 2009

Artículo "Procesadores Digitales de Señal: Arquitecturas y Criterios de Selección". Cuestionario.

1. Justifica la necesidad de un DSP en una aplicación real de electrónica de consumo. ¿En qué casos usarías un microprocesador convencional?.
Aclarar que por Electrónica de Consumo debemos entender todo aquello en cuanto a equipos electrónicos de uso cotidiano con objeto de satisfacer necesidades de entretenimiento, comunicación y oficina: PCs, celulares, reproductores MP3, receptores TV, equipos GPS, unidades Blue Ray, …
Una de las características principales de la electrónica de consumo es que los precios de los productos son cada vez más bajos, debido a una serie de factores tales como: mejora en la eficiciencia de fabricación, deslocalización de ésta hacia países con sueldos inferiores y desarrollo tecnológico de los semiconductores.
Y ya que los microprocesadores de propósito general no están diseñados para ninguna aplicación en especial; en contra de un DSP cuyas características están destinadas a soportar tareas de altas prestaciones y numéricamente intensa, aún con un desarrollo de hardware y de software a medida, el enorme volumen de producción justifica el esfuerzo para con el desarrollo de un microprocesador convencional. Así que se incorporarán en sistemas baratos, pequeños y de grandes producciones: telefonía móvil.
Por el contrario, el uso de un DSP en electrónica de consumo queda justificado con el propósito de alcanzar un diseño que pueda procesar gran volumen de datos mediante algoritmos complejos, con lo que el diseñador busca máximas prestaciones en el procesador de esos datos: equipo GPS de gama media y alta.

2. ¿Qué entiendes por escalado de datos?.¿Por qué crees que se deben escalar las señales en datos de coma fija?.
El proceso de digitalización de una señal analógica encierra fases de muestreado, cuantificación y codificación de dicha señal a digitalizar. La codificación consiste en asignar un número binario a cada uno de los niveles de cuantificación de manera que se pueda representar la información cuantificada de la señal acorde al rango binario determinado por el número de bits que emplea el sistema conversor. El escalado de datos tiene por finalidad que la información cuantificada pueda ser representada dentro del rango que permite el formato aritmético con el que trabajamos para que no se deje de perder información y, con ello, precisión en el sistema.
Y es, precisamente, en la representación binaria en coma fija en donde se debe de tener especial cuidado de no incurrir en dicha falta de precisión, dado el pequeño margen dinámico del que se dispone, esto es, del menor conjunto de códigos binarios, con respecto a la representación binaria en coma flotante, asignables a los niveles de cuantificación que contienen la información de la señal original.

3. ¿Qué medidas para comparar la velocidad de un procesador conoces?.¿Te parecen adecuadas?.¿Cómo crees que se utilizan?.Añade otras que tú consideres necesarias.
La medida clave para saber si un DSP es o no apropiado para una aplicación es su velocidad de ejecución. El parámetro empleado para su ponderación es el tiempo de ciclo de instrucción o tiempo que invierte el dispositivo en ejecutar la instrucción más rápida. Sin embargo, existen otros parámetros para medir la velocidad de un procesador:
MIPS (Million Instructions per Second). Número de instrucciones que el procesador puede ejecutar por segundo. La clave reside en cuanto puede hacer cada instrucción
MFLOPS (Million FLoating-point OPerations per Second). Es una medida de la velocidad del procesador más fiable que la anterior. Número de multiplicaciones, sumas, restas, … que el procesador puede realizar en coma flotante. Algunos fabricantes muestran valores pico, cuando lo interesante son valores sostenidos.
MOPS (Million OPeration per Second). Número total de operaciones que el procesador puede realizar por segundo. Se incluye accesos DMA, transferencias de datos, operaciones de entrada salida. Proporciona una idea aproximada de la capacidad de procesado y de entrada-salida del procesador.
MBPS (Mega-bytes per second). Proporciona una medida del rendimiento total de procesamiento de datos.
Un problema que surge al comparar los tiempos de ejecución de instrucciones de varios procesadores es que la cantidad de trabajo realizado por una instrucción varía significativamente de un procesador a otro. Téngase en cuenta que la velocidad del procesador depende, de entre otros factores, del tamaño de la palabra o cantidad de datos que que el micro puede procesar en un ciclo de reloj. Por lo que no parecen muy concluyentes los parámetros enumerados. Estas unidades sirven para ubicar cada PDS en una categoría amplia en cuanto a prestaciones; además, también se debería de cuestionar cómo se ven afectadas las prestaciones del PDS cuando muchos de los datos se encuentran fuera del chip, en la memoria externa. Una solución a estos inconvenientes se encuentra en establecer una operación básica como referencia en la comparación de diferentes PDSs. Esta operación es la MAC y sus tiempos tampoco es que proporcionen información para analizar PDSs, ya que, esta instrucción en la mayoría de ellos se ejecuta en un solo ciclo y, como se ha mencionado anteriormente, algunos procesadores pueden hacer mucho más que otros en una simple instrucción MAC. En la actualidad se establece que todos los PDSs ejecutan una orden por ciclo de instrucción. El parámetro que pondera la velocidad del procesador teniendo en cuenta la instrucción MAC es el MMACS: (Million multiply-accumulate per second). Número de multiplicaciones y acumulaciones que el procesador puede realizar por segundo.

4. Explica, con tus propias palabras, qué es la segmentación de instrucciones.¿Qué son las instrucciones de salto?¿Por qué dan problemas con el pipeling?¿Qué supone esto en una operación de tratamiento digital de señal en tiempo real?¿Se te ocurren otros tipos de instrucciones que acarreen estos problemas?.
La segmentación de una instrucción se entiende como la partición de ésta en fragmentos iguales e independientes con el objeto de que puedan se ejecutados de forma solapada, de manera que se acentúa la velocidad de ejecución de la instrucción, puesto que su inicio viene gobernado por el pulso de reloj, cuya frecuencia se mantiene. Esta técnica es aplicada en procesadores eficientes que reciben el apelativo de pipeline processors.
Las instrucciones de salto son todas aquellas órdenes que presentan una condición de forma que hasta que dicha premisa no se procese, las opciones a tomar son una incógnita, con lo que no se puede proseguir en la ejecución de instrucciones. Ello conlleva a un riesgo de control o un Control Hazard que se produce cuando es preciso llevar a cabo una decisión basada en el resultado de una instrucción mientras se están ejecutando otras instrucciones. Lo que concurre a un retraso en la ejecución o a un error en el procesamiento.
Una estrategia para abordar este riesgo es asumir que la condición del salto no se cumplirá y, por lo tanto, la ejecución continuará con la instrucción que se encuentra inmediatamente después de la instrucción condicional. Si la condición del salto al final se cumple entonces se deberá desechar del pipeline las instrucciones que fueron captadas y la ejecución continua con la instrucción que se encuentra en la dirección de salto.
Otras instrucciones que nos pueden llevar a este tipo de riesgos podrían ser aquellos que incluyen las excepciones. Supongamos una instrucción aritmética que produce un desbordamiento u overflow. Necesitaremos transferir el control a la rutina de servicio de la excepción inmediatamente después de la instrucción porque no queremos que el resultado inválido contamine otros registros o localidades de memoria. En este caso, también se debe limpiar el pipeline y empezar a buscar instrucciones a partir de la nueva dirección (rutina de servicio de interrupciones).

5. Imagina que tienes un puesto de Ingeniero Jefe de un proyecto de Telecomunicaciones en una empresa. Tu primer cometido es elegir una placa de desarrollo en tiempo real adecuada para la realización que vas a desarrollar. Especifica qué criterios tomarías para realizar dicha elección, justificándolos.
Si consideramos que es la velocidad del procesador el que determina la elección de un dispositivo u otro, debemos de tener claro que dicho parámetro queda en función del ancho del bus (cantidad de datos que el procesador puede transmitir hacia la memoria principal y hacia los dispositivos de entrada-salida), del tamaño de la palabra (cantidad de datos que el procesador puede procesar en un ciclo de reloj) y, claro está, del reloj del sistema (pulso electrónico empleado para sincronizar el procesamiento).
Otra cuestión a resolver apunta a las prestaciones que le voy a exigir. Prestaciones ligadas a la organización del subsistema de memoria del dispositivo procesador y a la técnica pipelining con la que segmento las instrucciones a procesar junto con los datos. Así que, otras características como consumo, coste, etc. quedarán supeditadas a esas primeras. Es el caso de los procesadores de propósito específico diseñados para realizar un procesado digital de señal en tiempo real (PDSs).