¿Qué familia de Texas Instruments os ha llamado más la atención?

jueves, 5 de marzo de 2009

Cuestionario sobre el artículo "Procesadores Digitales de Señal: Arquitecturas y criterios de selección"

1.- Justifica la necesidad de un DSP en una aplicación real de electrónica de consumo. ¿En qué casos usaría un microprocesador convencional?

La necesidad de un DSP en una aplicación real de electrónica de consumo es hoy en día algo indispensable. La gran cantidad de operaciones que se necesitan ejecutar en tiempo real para poder realizar cualquier tipo de actividad en un determinado dispositivo electrónico, hace que se tenga que recurrir a los DSP's. Debido a sus grandes prestaciones ya que utilizan arquitecturas especiales para acelerar los cálculos matemáticos intensos implicados en la mayoría de sistemas de procesado de señal en tiempo real (operaciones que comentábamos con anterioridad). Por ejemplo, las arquitecturas de los DSP incluyen circuitería para ejecutar de forma rápida operaciones de multiplicar y acumular, conocidas como MAC. A menudo poseen arquitecturas de memoria que permiten un acceso múltiple para permitir de forma simultánea cargar varios operandos, por ejemplo, una muestra de la señal de entrada y el coeficiente de un filtro simultáneamente en paralelo con la carga de la instrucción. También incluyen una variedad de modos especiales de direccionamiento y características de control de flujo de programa diseñadas para acelerar la ejecución de operaciones repetitivas.

Usaría un microprocesador convencional en todos aquellos casos donde no necesitara soportar tareas de altas prestaciones, repetitivas y numéricamente intensas. Es decir, lo emplearía siempre y cuando no necesite de una especialización para alguna aplicación en concreto, sino que lo pueda utilizar para propósito general.


2.- ¿Qué entiendes por escalado de datos? ¿Por qué crees que se deben escalar las señales en datos de coma fija?

La técnica que se emplea para poder representar una serie de datos sin alterar de forma exagerada la precisión en la que se mueve dicho dato. Se suele emplear cuando el rango de datos con el que nos movemos es muy limitado y con el no podemos representar cierta información, se debe acudir a estas técnicas para que de algún modo dicha información entre dentro del rango o margen con el que estamos trabajando, eso si, se busca siempre el perder la mínima precisión posible, ya que perdida de precisión se traduce en perdida de información.

Se deben escalar para asegurar una adecuada precisión numérica con el limitado margen dinámico con los que se mueven con respecto a las señales de datos de coma flotante. El formato aritmético con el trabaja un DSP es una característica muy importante, como comentábamos si necesitamos de un gran margen y precisión para representación de datos emplearemos un formato en coma flotante, aunque ello implica mayor consumo, coste más elevado, etc. Sin embargo, si a priori conocemos el rango con el que nos vamos a mover y dicho rango está dentro de un formato que trabaje en coma fija, sin duda podríamos trabajar con un formato en coma fija ya que el programador no estaría obligado a realiar ningún tipo de escalado sobre la señal y por tanto no perderíamos información (precisión).


3.- ¿Qué medidas para comparar la velocidad de un procesador conoces? ¿Te parecen adecuadas? ¿Cómo crees que se utilizan? Añade otras que tu consideres necesarias.

El MIPS, MFLOPS, MOPS, MBPS, MMACS, etc. Las cuatro primeras se miden de forma muy precisa aunque su valor no necesariamente dice mucho de lo que un determinado DSP es capaz de hacer. Dichos valores sirven para ubicar cada DSP en una categoría amplia en cuanto a prestaciones pero uno se debería preguntar si se trata de valores de pico o sostenidos. Me parecen adecuadas aunque también habría que preguntarse cómo se ven afectadas las prestaciones del DSP cuando muchos de los datos se encuentran fuera del chip, en la memoria externa.

Una solución a estos problemas consiste en decidir una operación básica y utilizarla como referencia al comparar distintos DSP. La operación que suele tomarse como referencia es la MAC. Desafortunadamente, los tiempos de ejecución de la MAC proporcionan, a veces, poca información para poder diferenciar entre distintos DSP, ya que en la mayoría de ellos esta instrucción se ejecuta en un solo ciclo de instrucción, y como se ha mencionado anteriormente, algunos DSP pueden hacer mucho más que otros en una simple instrucción MAC. Además, los tiempos de ejecución de la MAC no suele reflejar las prestaciones de otro tipo importante de operaciones como los bucles que están presentes en todas las aplicaciones.

En los MIPS: (Million instructions per second). Se mide el número de instrucciones que el procesador puede ejecutar por segundo. La clave está en cuánto puede hacer cada instrucción. El parámetro MFLOPS es normalmente una medida más fiable de las prestaciones del procesador.

En los MOPS: (Million operation per second). Se mide el número total de operaciones que el procesador puede realizar por segundo. Se incluye accesos DMA, transferencias de datos, operaciones de entrada salida. Este parámetro proporciona una idea aproximada de la capacidad de procesado y de entrada salida del procesador.

En los MFLOPS: (Million floating-point operations per second). Se mide el número de multiplicaciones, sumas, restas, etc. en coma flotante que el procesador puede realizar. Algunas veces este parámetro hace referencia a valores de pico en lugar de valores sostenidos.

En los MBPS: (Mega-bytes per second). Proporciona una medida del rendimiento total de procesamiento de datos.

En los MMACS: (Million multiply-accumulate per second). Número de multiplicaciones y acumulaciones que el procesador puede realizar por segundo.

Existen a nivel software programas que miden el rendimiento de un determinado dispositivo, en concreto estos programas suelen enfocarse al procesador. Me parece interesante esta medida ya que todo el mundo desde casa puede realizar un pequeño estudio del rendimiento de su procesador sin tener un gran conocimiento sobre su funcionamiento y/o arquitectura del mismo. Estos programas son los conocidos como Benchmark.

Un Benchmark, es un programa que mide las prestaciones de un ordenador, o de una parte del mismo. Estos programas no solo pueden ayudarnos en la comparación de diferentes sistemasSoftware y Hardware. Los benchmarks son pruebas para medir el rendimiento y poder verificar que el hardware funciona de forma óptima o para comparar distintas configuraciones. En general, se trata de programas que se instalan de la misma forma que una aplicación clásica, pero que no le permiten jugar o trabajar. En la mayoría de los casos, el benchmark inicia una aplicación o conjunto de aplicaciones (ofimática, rendimiento 3D, cálculotiempo necesario para ejecutar una tarea. Los benchmarks 3D no miden el tiempo de ejecución sino el número de imágenes mostradas por segundo durante la escena y calculan el promedio. La evaluación de la potencia del procesador sirve para tener una idea de la capacidad de cálculo bruto del ordenador. sino que además son capaces de evaluar las prestaciones de un equipo con diferentes configuraciones de científico, etc.).

Cada test Benchmark realiza un trabajo diferente. Así, algunos de estos nos indican lo rápido que es un ordenador generando documentos, otros indican lo veloz que es en los gráficos y rellenos de pantalla, otros determinan la velocidad en operaciones matemáticas... Algunos hacen una mezcla de todos estos test. Para obtener resultados que nos sean útiles deberemos utilizar Benchmarks que reflejen el uso que le daremos al equipo.

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 pipelining? ¿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 o "pipelining" es un método por el cual se consigue aumentar el rendimiento de algunos sistemas electrónicos digitales, en concreto es aplicado en microprocesadores. Consiste en dividir una secuencia de operaciones en otras de más sencillas y ejecutar en lo posible cada una de ellas en paralelo. En consecuencia se reduce el tiempo total requerido para completar un conjunto de operaciones.

Las instrucciones de "salto" son instrucciones de modificación de secuencia que alteran la ejecución normal del programa, cargando el contador de programa con la nueva dirección en la que deseamos continúe ejecutándose el programa. Los saltos o bifurcaciones pueden ser:
- CONDICIONALES: Cuando son controlados por el estado de un indicador o flag, y basándose en dicho estado se decide si se salta o no.
- INCONDICIONALES: Cuando modifican el contador de programa sin condición previa. Dentro de cada uno de estos tipos, podemos encontrar además la particularidad de que al efectuar los saltos se realicen con posibilidad de retorno o no.

En el momento en que el procesador detecta la llegada de una instrucción de salto en la descodificación del segundo ciclo de reloj, la “pipeline” se vacía y detiene la obtención de nuevas instrucciones. Esto provoca que la instrucción de salto se ejecute en cuatro ciclos. Posteriormente, el procesador comienza la obtención de las instrucciones (N1-N4) a partir de la dirección de salto y del quinto ciclo de reloj. A causa de este tipo de situaciones, casi todos los DSP incorporan algún tipo de mejora en el uso de la segmentación con el propósito de reducir su posible ineficiencia temporal.

Esta operación relentiza el procesado de la señal, debido a que como comentábamos antes detiene la obtención de nuevas instrucciones. De manera que si esta situación persistiese no podríamos hablar de tratamiento de la señal en tiempo real.

En las INSTRUCCIONES DE CONTROL también aparece este problema. Sirven para actuar internamente sobre el microprocesador, provocando detenciones en la ejecución del programa, etc.


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 aplicación que vas a desarrollar. Especifica qué criterios tomarías para realizar dicha elección, justificándolos.

- En primer lugar estudiaría con que tipo de señal va a trabajar el DSP, esto es fundamental porque si necesito de un gran margen dinámico y de gran precisión mi elección se enfocaría a DSP's con formato en coma flotante, mientras que si no necesito de una gran precisión ni necesito representar un gran rango de datos elegiría un DSP con formato en coma fija, ya que reducimos el coste y el consumo del mismo.

- En siguiente lugar estudiaría la relación entre tamaño de palabra (ancho de palabra) y complejidad, es decir necesitaría saber que bus de datos necesitaría para mi aplicación, para ello repito que hay que llegar a una situación de compromiso entre tamaño de palabra y complejidad.

- El siguiente factor, muy importante, sería la velocidad, naturalmente parace lógico tirarse al DSP que más prestaciones te ofrezca en lo relacionado con la velocidad, pero también es cierto que la empresa lo que quiere es que el coste sea lo más reducido posible. Por ello, si encontramos un DSP que nos ofrezca una velocidad adecuada para el sistema con el que vamos a trabajar sería más que suficiente (de nuevo es llegar a una situación de compromiso entre velocidad y coste).

- Que tenga una buena organización de la memoria también sería una característica del DSP que decidiésemos escoger, al igual que sería interesante que empleara técnicas de segmentación para poder aumentar de forma eficiente el rendimiento y prestaciones del DSP.

- El consumo sería fundamental, ya que hoy en día la mayoría de dispositivos que salen al mercado suelen ser portátiles y un bajo consumo sería primordial en nuestro sistema. Por ello, es un factor a tener muy en cuenta.

- Por último, ni que hablar del coste que es el principal parámetro en todos aquellos productos que se van a fabricar en grandes volúmenes. Un bajo coste garantizará un mejor funcionamiento en el mercado.


No hay comentarios:

Publicar un comentario