26 marzo, 2009

Características Blackfin de Analog Devices & Características Genéricas DSPs

En este artículo vamos a tratar de identificar las características claves de la familia Blackfin de Analog Devices referenciadas a las propias de los DSPs más comunes. En la Asignatura que nos ocupa hemos podido estudiar la Arquitectura Harvard de los DSPs; frente a la Arquitectura Von Neuman de los procesadores estándar, en la que destaca la división física de la memoria que almacena datos e instrucciones de programa, por lo que hay que hablar de dos memorias; amén de dos estructuras de buses: de datos y de programa, lo que facilita el direccionamiento de datos e instrucciones en un mismo ciclo de reloj.

Por su parte, los Blackfin presentan una Arquitectura Harvard modificada en combinación con una estructura jerarquizada de memoria, terminando por llamarse Micro Signal Architecture y que confiere a estos dispositivos poder computacional, alto desempeño, flexibilidad y facilidad en su uso con una práctica específica en las telecomunicaciones y en las aplicaciones multimedia.
Esta arquitectura de los Blackfin duplica los bloques computaciones de MAC de 16 bits y de ALU de 32 bits. Recordamos que, en aquellos DSPs, la MAC era un hardware dedicado y rápido que solucionaba el tiempo que se invertía en las operaciones numéricas de suma y producto. Y, para distinguirse aún más de una arquitectura convencional, añade 2 acumuladores de 40 bits y 4 ALUs de vídeo de 8 bits; amén de 1 shifter; todo ello integrado en la Unidad Aritmética de Datos, donde se ejecutan las operaciones aritméticas y lógicas y de desplazamiento del shifter. Las operaciones primarias se ejecutan en la ALU0 y las operaciones en paralelo en la ALU1 como subconjunto de las primeras. Las ALU específicas de vídeo realizan operaciones tipo SIMD, con las que se logra paralelismo a nivel de datos. Se tratan de instrucciones que aplican una misma operación sobre un conjunto de datos. Con una única Unidad de Control se despachan las instrucciones a diferentes unidades de procesamiento, esto es, la misma instrucción es ejecutada de manera síncrona por todas las unidades de procesamiento.

En la Unidad Aritmética de Direcciones esta nueva arquitectura nuevamente duplica bloques funcionales como los Generadores de Direcciones de Datos (DAGs) que se encargan de generar las direcciones para el doble acceso simultáneo de datos en la memoria del DSP. Ambos generadores comparten un archivo de registros de 32 bits más otros 8 registros que pueden apuntar a una zona de memoria, llamada pila, que se emplea para almacenar datos de internos cuando se salta a subrutinas de programa para que no se pierda contenido.
La memoria presenta una jerarquia tal que a nivel 1 la memoria de instrucciones almacena únicamente dichas órdenes y las dos memorias de datos almacenan sólamente datos y un segmento dedicado guarda datos de la pila y variables locales. Coexisten múltiples bloques de memoria L1 que se pueden configurar como algo entre memoria SRAM y Caché. Mencionar que una Caché es un espacio de memoria de alto rendimiento empleado para acceder a datos frecuentes. La memoria de nivel 1 opera a la velocidad interna del DSP (CCLK) sin retardo y destaca porque permite hasta cuatro accesos simultáneos a la Unidad Aritmética del DSP, realiza al unísono operaciones DMA, mantiene Caché y accede al Core. Se entiende que la otra memoria de nivel 2, conformada por 8 bloques de 32 Kbits cada uno lo que suma una capacidad de 256 Kbits, opera a la velocidad del sistema (SCLK). El dispositivo que empleamos en laboratorio: ADSP BF533, presenta una capacidad total de memoria de 148 KB.

Esta variedad en las frecuencias de trabajo de las señales es posible gracias a un Controlador de Administración Dinámica de Potencia (DPMC). Con ello se consigue optimizar el consumo de potencia según los requerimientos específicos de la aplicación. Este módulo permite cuatro modos de operación: full on, active, sleep y deep sleep, cada uno con unas características de desempeño y un consumo de potencia propios. Se puede reducir aún más el consumo deshabilitando en un instante dado el reloj del periférico que no se esté utilizando. Entre sus funciones destacan: manejo de relojes, bucle de enganche de fase (PLL), controlador de potencia, modos de operación y control de voltaje.

El segmentar la ejecución de instrucciones, es una técnica de mejora en el rendimiento de los DSPs, de manera que en cada ciclo se añade una nueva subtarea sin necesidad de esperar a que finalicen los ciclos de cada una de las instrucciones. Los procesadores Blackfin ejecutan intrucciones siguiendo un patrón de encauzamiento entrelazado (Intelocked Pipeline) que posibilita la ejecución de órdenes independientes entre los procesos de carga y de almacenamiento, sin necesidad de que el compilador o el programador conozcan el número de ciclos que invertirá la operación de lectura y escritura de la memoria; así se aprovechan los ciclos muertos para la ejecución de instrucciones no dependientes del resultado de la operación de memoria.

También se comentó que los DSPs comunes emplean instrucciones especiales optimizadas para el tratamiento digital de señales, con las ventajas que ello supone de un código más compacto empleando menos memoria y de un aumento en la velocidad de ejecución de los algoritmos. Pues bien, la familia Blackfin añade un grupo de instrucciones para un procesamiento más eficiente de señales de vídeo/imagen: instrucciones ALIGN8, BYTEOP3P, ... que permiten alinear bytes copiando una palabra no alineada a partir de una combinación de dos registros de datos, sumar dos valores y promediarlos recortando el resultado a la mitad de bits y un procesamiento vectorizado: instrucciones que permiten ejecutar simultáneamente operaciones sobre grupos de valores de 16 bits. Para obtener más información sobre los procesadores Blackfin de Analog Devices dirigirse al enlace:
http://www.analog.com/processors/processors/blackfin/index.html

No hay comentarios:

Publicar un comentario