Download Un esquema de procesador común
Document related concepts
no text concepts found
Transcript
Microprocesadores para Comunicaciones 5º ETSIT Video Signal Processors Silicon Hive Paloma Fuentes Gutiérrez Microprocesadores Para Comunicaciones – Curso 2007/2008 INDICE 1. Introducción Pág.03 2. Procesadores de Silicon Hive Pág.04 2.1 Esquema de procesador común Pág.04 2.1.1 Arquitectura del Core Pág.05 2.1.2 Arquitectura del CoreIO Pág.06 2.1.2.1 Observación y Control Pág.07 2.1.2.2 Acceso a datos de alto ancho de banda Pág.07 2.1.2.3 Datos de stream y sincronización Pág.07 2.1.2.4 Interfaces maestro y esclavo Pág.08 2.1.2.5 Protocolos de comunicación estándar Pág.08 2.2 Reducción de la complejidad Hardware: HiveCC 3. La serie VSP2000 Pág.08 Pág.09 3.1 Flexibilidad Pág.11 3.2 Arquitectura del bloque VSP Pág.12 3.2.1 DMA Pág.13 3.2.1 VSP Pág.13 3.3 Codificador/decodificador de vídeo usando la serie VSP Pág.14 3.4 Rendimiento del VSP Pág.15 4. Conclusiones Pág.16 5. Referencias Pág.17 Procesadores de Señales de Video – Silicon Hive Paloma Fuentes -2- Microprocesadores Para Comunicaciones – Curso 2007/2008 1. Introducción Un sistema empotrado es un sistema de computación de propósito especial, diseñado para realizar una serie de funciones específicas, a veces bajo condiciones de computación en tiempo real. Está normalmente empotrado (embedded en inglés) como parte de un dispositivo completo que incluye hardware y partes mecánicas. Su importancia actual radica en que controlan muchos de los dispositivos que usamos. Al estar dedicado a una tarea específica, los ingenieros de diseño pueden optimizarlo, reduciendo el tamaño y el coste del producto, o aumentando la confiabilidad y rendimiento. Muchos de los sistemas empotrados se producen en masa, con lo que se benefician de las economías de escala. Físicamente, los sistemas empotrados varían de dispositivos portátiles, como relojes digitales o reproductores de mp3, a grandes instalaciones como pueden ser semáforos, controladores en fábricas o sistemas de control de plantas nucleares. La complejidad también varía, desde los simples con un solo chip microcontrolador, hasta los complejos, con varias unidades, periféricos y redes montadas dentro de un gran chasis. Una configuración común para sistemas empotrados de gran volumen es el System On Chip (SoC), que hace referencia a integrar todos los elementos de un computador u otro sistema electrónico en un solo chip. En este trabajo vamos a hablar de la serie VSP2000, creada por la empresa Silicon Hive para el procesado de señales de vídeo (Video Signal Processing). Las cores de Silicon Hive combinan los beneficios de las ASICs (bajo consumo debido a la explotación del paralelismo y la reducción de las operaciones especulativas, bajo coste y optimización para un dominio específico) y los DSPs (programabilidad software de alto nivel, facilidad de upgrade, alta flexibilidad y time-to-market más corto, debido al uso de la programabilidad y de diseños basados en IP incluso a altos niveles de abstracción), permitiendo el uso de VSP en una amplia variedad de SoCs. Fig1. Comparativa con otros procesadores Procesadores de Señales de Video – Silicon Hive Paloma Fuentes -3- Microprocesadores Para Comunicaciones – Curso 2007/2008 2. PROCESADORES DE SILICON HIVE 2.1 Esquema de procesador común Los procesadores de Silicon Hive derivan todos de un esquema común de arquitectura de procesador. Este esquema define al procesador, que está compuesto por una o más células interconectadas. Fig2. Célula genérica Una célula consiste en una Core que realiza la computación y una CoreIO que proporciona un subsistema de memoria e I/O que permite al Core integrarse de manera sencilla en cualquier sistema, a la vez que proporciona memoria local que aumenta el ancho de banda y reduce significativamente el estrés en los recursos de memoria compartida. El Core está compuesto por un data path y un secuenciador que lo controla a través de software. El secuenciador es una máquina de estados muy simple que contiene un registro de contador de programa que direcciona las instrucciones en la memoria de programa, así como un registro de estado que habilita modos especiales de procesamiento bajo el control software. El data path contiene una serie de unidades funcionales organizadas en una serie de issue slots conectados mediante una matriz de conmutación programable a registros organizados en una serie de archivos de registro. Las unidades funcionales realizan operaciones de cómputo en datos intermedios almacenados en los ficheros de registro. Una operación puede comenzarse en cada issue slot en cada ciclo de reloj, lo que permite tantas instrucciones simultáneas como issue slots tengamos. Procesadores de Señales de Video – Silicon Hive Paloma Fuentes -4- Microprocesadores Para Comunicaciones – Curso 2007/2008 Algunas unidades funcionales, denominadas unidades load/store, tienen acceso a memorias lógicas dentro de la CoreIO, permitiéndoles acceso mapeado a memoria física local del CoreIO y a realizar operaciones I/O con el sistema mapeadas en memoria. Para las operaciones de I/O del procesador, se puede disponer en el CoreIO de interfaces de streaming bloqueante, interfaces de maestro e interfaces de esclavo, que proporcionan una integración limpia y sencilla del procesador en una amplia variedad de arquitecturas de sistema. 2.1.1 Arquitectura del Core El esquema permite un amplio espacio de diseño para crear cores para aplicaciones programables en C de dominio específico. Consiste en un data path que realiza las operaciones de datos bajo el control de un secuenciador simple, que proporciona el control adecuado de la información del data path en cada ciclo de reloj, basándose en las instrucciones recogidas de la memoria de programa en el CoreIO, mediante el puerto Core status/control que conecta a ambos. Fig3. Arquitectura del Core El data path es altamente configurable, y sigue el concepto de arquitectura que se usa comúnmente en los procesadores RISC. Está compuesto por un número arbitrario de archivos de registro que, a su vez, contienen un número arbitrario de registros con un ancho arbitrario que se encargan de almacenar los valores intermedios durante la computación. Cada archivo de registro puede tener un número arbitrario de puertos de lectura para obtener valores del archivo, así como un número arbitrario de puertos de escritura para almacenar los valores. Además de los registros, el data path contiene un número de issue slots, que pueden comenzar una operación cada uno en cada ciclo de reloj. Cada uno de ellos contiene un número arbitrario de puertos de entrada, con un ancho de banda arbitrario, mediante los que se obtienen los argumentos de los ficheros de registro, así como un número arbitrario de puertos de salida, también con un Procesadores de Señales de Video – Silicon Hive Paloma Fuentes -5- Microprocesadores Para Comunicaciones – Curso 2007/2008 ancho arbitrario, mediante los cuales se almacenan en los ficheros de registro los resultados obtenidos. Existen interconexiones que conectan los puertos de lectura de los ficheros de registro con los puertos de argumentos de los issue slots. Una matriz de conmutación programable conecta los puertos de resultados de los issue slots con los puertos de escritura de los ficheros de registro. Cada uno de los issue slots contiene un número arbitrario de unidades funcionales que realizan las operaciones de datos sobre los datos intermedios obtenidos como argumentos por los issue slots, para producir nuevos valores intermedios como resultados de los issue slots. Existen unidades funcionales especiales, denominadas unidades de carga/almacenamiento, que tienen acceso al CoreIO mediante puertos MMIO dedicados, proporcionando I/O mapeado en memoria desde el Core a memorias locales dentro del CoreIO o al resto del sistema. Cada unidad funcional tiene un número arbitrario de puertos de entrada y de salida, de ancho de banda arbitrario, y puede implementar un número arbitrario de operaciones. La complejidad de éstas, es también variable, pudiendo variar desde operaciones simples de propósito general RISC, a operaciones a medida muy complejas que pueden remplazar a decenas de operaciones RISC. Con este tipo de operaciones a medida, es posible usar paralelismo a nivel de datos, como SIMD o paralelismo vectorial, o implementar aritmética de números complejos. Las unidades funcionales pueden usar diferentes tipos de pipeline. El tiempo en que los valores de entrada son esperados y los valores de salida producidos en la unidad funcional relativos al comienzo de la operación determinan la forma temporal de la unidad funcional, que puede variar de unas a otras. 2.1.2 Arquitectura del CoreIO El esquema del CoreIO permite un amplio rango de opciones para integrar los procesadores de Silicon Hive en una arquitectura de sistema SoC. Fig4. Arquitectura del CoreIO Procesadores de Señales de Video – Silicon Hive Paloma Fuentes -6- Microprocesadores Para Comunicaciones – Curso 2007/2008 El CoreIO se conecta al Core mediante los puertos MMIO de las unidades funcionales de carga/almacenamiento. Además, interactúa con el secuenciador del Core mediante el puerto de status/control. La comunicación con el sistema, se realiza mediante uno o más puertos maestro, esclavo o de streaming. Puede incluir varias memorias físicas de diferentes tipos y dispositivos de I/O que aparecen como dispositivos mapeados en memoria tanto para el Core como para el sistema. Estos dispositivos físicos se agrupan de manera lógica en memorias lógicas. Con estas memorias lógicas, podemos definir espacios separados de direcciones para diferentes unidades de carga/almacenamiento dentro del Core, lo que hace posible obtener un ancho de banda de memoria alto y, por tanto, un rendimiento alto con baja disipación de energía y bajo coste de área, al permitir varias lecturas y/o escrituras paralelas en memorias particionadas sin crear cuellos de botella en el diseño. 2.1.2.1 Observación y control Para cargar software en el procesador, el sistema puede acceder a la memoria local de programa para almacenar datos de programa. Para controlar y observar el procesador, el sistema puede acceder a los registros de control y estatus mapeados en memoria, para decir al procesador, por ejemplo, que empiece a ejecutarse desde una dirección de la memoria de programa específica. Mientras que el procesador está en ejecución, el sistema puede observar su estado o configurar el procesador para generar una interrupción cuando, por ejemplo, ha alcanzado el final del programa. 2.1.2.2 Acceso a datos de alto ancho de banda Mientras que el Core está procesando, puede usar una o mas memorias locales de datos para obtener los datos de entrada, cargar o almacenar los datos intermedios y almacenar los datos de salida. En una configuración típica de CoreIO, el sistema tiene acceso a las memorias locales en el CoreIO también, proporcionado mediante uno o más interfaces esclavo. Para resolver los conflictos entre estas memorias, árbitros inteligentes deciden la prioridad al dar acceso al Core o al sistema mientras se lleva a cabo la ejecución. 2.1.2.3 Datos de stream y sincronización Para aplicaciones que se apoyan sobre datos de streaming, podemos usar los puertos de streaming de I/O. Internamente, estos puertos están conectados al Core mediante buffers FIFO bidireccionales y configurables en tamaño, dependiendo de los requerimientos de buffer. Las comunicaciones de streaming siguen un protocolo bloqueante, es decir, las unidades de carga/almacenamiento en el Core que acceden a estas FIFOs pararán (stall) el Core cuando se intenta almacenar en una FIFO que está llena o cuando se intenta cargar desde una FIFO vacía. En el lado del sistema, los puertos de stream se comportan de manera similar usando bloqueo. Procesadores de Señales de Video – Silicon Hive Paloma Fuentes -7- Microprocesadores Para Comunicaciones – Curso 2007/2008 Este mecanismo de sincronización data-driven simplifica mucho la programación y la integración en el sistema de las aplicaciones de stream. En aplicaciones de no-stream, los puertos de stream pueden ser usados para sincronizar el procesador con el sistema mediante el intercambio de créditos bloqueantes. 2.1.2.4 Interfaces maestro y esclavo Para obtener datos de entrada y proporcionar datos de salida, el CoreIO puede proporcionar interfaces maestro aparte de las memorias de datos locales o los interfaces esclavo. Estas interfaces maestro pueden, por ejemplo, permitir al Core acceder a dispositivos del resto del sistema para obtener sus propios datos de entrada y directamente producir datos de salida a la localización adecuada del sistema. 2.1.2.5 Protocolos de comunicación estándar. Los protocolos usados comúnmente son soportados por los puertos maestro y esclavo, y pueden ser configurados en el momento del diseño. Como el CoreIO puede ser configurado con cualquier número de puertos maestro, esclavo o de stream, es fácil conseguir un procesador que encaje perfectamente en cualquier sistema. 2.2 Reducción de la complejidad Hardware: HiveCC Para minimizar la sobrecarga de control hardware y maximizar las capacidades de control del hardware del compilador de HiveCC, el data path del Core es totalmente visible al HiveCC y completamente ortogonal. Los compiladores de C tradicionales solo mapean construcciones en C a operaciones y entonces asignan y programan esas operaciones en los issue slots y asignan argumentos y resultados a los registros. El HiveCC también asigna y programa todas las interconexiones en el Core, y todos los estados individuales del pipeline en cada una de las unidades funcionales. Tiene visibilidad de la memoria local de datos, los buffers locales FIFO para streaming bloqueantes de I/O y también para interfaces de maestro. Mientras que los compiladores C tradicionales rápidamente se quedan sin flujo cuando trabajan con data paths con mas de 5 a 8 issue slots, el HiveCC es capaz de utilizar data paths que contengan de 1 a 10 issue slots eficientemente. El hecho de dar al compilador HiveCC control sobre un data path de una core que usa un gran paralelismo, hace que sean necesarios bits adicionales en las instrucciones. Cuando el data path puede usarse eficientemente por un programa, el número de bits requeridos por operación es todavía altamente eficiente y en línea con los que necesitaría un procesador RISC convencional. Además, a la hora de usar operaciones hechas a medida en un procesador tuneado, una sola operación remplaza a varias operaciones RISC de propósito Procesadores de Señales de Video – Silicon Hive Paloma Fuentes -8- Microprocesadores Para Comunicaciones – Curso 2007/2008 general, haciendo que el número de bits requeridos por operación sea incluso más eficiente que el de los procesadores RISC convencionales. En la práctica, no todas las partes de un programa se pueden compilar de manera igual de eficiente, debido a la falta de paralelismo inherente a esas partes. Normalmente, el código de inicialización y el de control muestran menos paralelismo, por lo que para mapear este código, HiveCC es capaz de compilar código de diferentes formas en el mismo Core data path., Estas diferentes formas muestran subconjuntos de los recursos del data path al compilador y, de esta manera, el compilador puede obligarse a usar solo un subconjunto del data path para el código con menos paralelismo. El código binario resultante puede codificarse eficientemente sin malgastar bits en recursos inutilizados, mejorando así la densidad del código en su conjunto. El esquema altamente configurable del data path, así como el poderoso issue slot configurable y los conceptos de unidad funcional, permiten usar un conjunto de instrucciones completamente configurable en el momento del diseño, que puede ser diseñado para un dominio especifico de aplicación manteniendo el soporte de las herramientas de programación de Silicon Hive. 3. LA SERIE VSP2000 A medida que los displays móviles proliferan alrededor del mundo, y los displays fijos aumentan, los consumidores demandan experiencias visuales mejoradas mientras miran en estos displays. El mercado está migrando hacia displays de alta definición (HD) y más allá conducidos por la demanda de los consumidores. Para generar estas experiencias de alta calidad en displays de HD, los algoritmos de procesado de video se están haciendo extremamente complejos, y necesitan Tera-Operaciones por segundo para generar una salida de vídeo aceptable. La serie VSP2000 permite suplir las necesidades de los displays de video usando una arquitectura escalable de tile, en la que la arquitectura de cada tile es flexible, de bajo coste y de bajo consumo, resultando una solución IP muy atractiva para los consumidores de SoCs de procesado de señales de vídeo. Fig5. Aplicación del VSP Procesadores de Señales de Video – Silicon Hive Paloma Fuentes -9- Microprocesadores Para Comunicaciones – Curso 2007/2008 Fig6. Aplicaciones VSP El bloque VSP que vamos a ver ejecuta varias aplicaciones de video comúnmente usadas en pre/post procesado de señales de HD TV, como estabilización de imágenes, de-entrelazado, adaptación de frecuencias, aumento de escala o mejora de la calidad, aparte de aplicaciones de codificado/decodificado de H.264, MPEG4, VC1 y MPEG2. Con múltiples VSP tiles con un número configurable de issue slots y arquitectura SIMD implementan eficientemente decodificación de H.264 con resolución HD. Fig7. Concepto de SIMD Procesadores de Señales de Video – Silicon Hive Paloma Fuentes - 10 - Microprocesadores Para Comunicaciones – Curso 2007/2008 Fig8. Ejemplo funciones pre/post procesado 3.1 Flexibilidad Para poder llevar a cabo las diferentes aplicaciones, desde las de alta calidad a las de baja calidad, la serie VSP2000 posee una serie de requerimientos de flexibilidad: - Elección del algoritmo de estimación de movimiento que soporte diferentes tipos de calidad y puntos de rendimiento Flexibilidad en el tamaño de los bloques para estimación y compensación Flexibilidad en el tamaño de la ventana de interés Soporte para submuestreo y trasposición de datos Flexible en la dirección de procesado de vídeo, como izquierda-derecha, arriba-abajo y serpenteado. La arquitectura del VSP está basada en el tiling y en la jerarquía de memorias. El tiling es un sistema de bloques, que pueden realizar un conjunto de instrucciones en un pipeline, reduciendo el uso del ancho de banda del bus del sistema y de la memoria externa, además de permitir un entorno de diseño software más sencillo. El uso de varios bloques VSP, con el mismo hardware y diferente software permiten crear un pipeline de procesados de video completo. Procesadores de Señales de Video – Silicon Hive Paloma Fuentes - 11 - Microprocesadores Para Comunicaciones – Curso 2007/2008 Fig9. Arquitectura de bloques (TILES) La arquitectura jerárquica de memorias está específicamente diseñada para aplicaciones de vídeo. Cada componente de la señal de vídeo o datos derivados de esta, es un plano de video. Los segmentos de plano son almacenados en diferentes niveles de memoria jerárquica. En el bloque VSP, la memoria externa contiene los planos de video completos, una sola región del plano se almacena en la memoria de nivel 1 (SVMEM), y la ventana de interés se almacena en el nivel 0 (BVMEM). Generalmente, la BVMEM se rellena con el contenido de la SVMEM, aunque en algunos casos puede obtener el contenido de la memoria externa. Este esquema unificado para almacenar video y planos derivados de video en la SVMEM y BVMEM, hace que la memoria on-chip sea mas pequeña y que el diseño resultante sea más modular. 3.2 Arquitectura del bloque VSP Está compuesto de dos partes: la DMA y el Video Signal Processor (VSP). Fig10. Arquitectura bloque VSP Procesadores de Señales de Video – Silicon Hive Paloma Fuentes - 12 - Microprocesadores Para Comunicaciones – Curso 2007/2008 3.2.1 DMA Actúa como interfaz con el sistema. Lee y escribe los datos en la memoria externa basándose en peticiones del VSP. Soporta accesos de lectura y escritura de y hacia el sistema durante el tiempo de ejecución y con diferentes precisiones de datos configurables. Soporta transacciones de comunicaciones 1D y 2D, cuyo tamaño es programable, y tiene tantos canales de lectura y escritura como configuremos durante el diseño, cuyo mapeo a canales de video es también programable. 3.2.2 VSP Es una máquina VLIW con un set de instrucciones vectoriales (ISEs). Son procesadores programables que compilan ANSI-C con un ISE vectorial programable intrínsecamente. El tamaño del vector es configurable durante el diseño, y puede tener 4, 8 o más (potencia de 2) caminos SIMD. Dentro del VSP se encuentran las memorias vectoriales SVMEM y BVMEM, y usa el DMA para rellenar estas memorias, lo que explica que no tarde ciclos en rellenarlas. Los bloques VSP se intercomunican con sus vecinos mediante conexiones directas bloque-a-bloque, o indican a la DMA que escriba datos de su SVMEM a las SVMEM de los bloques vecinos. También usa FIFOs de 32 bits para sincronismo y comunicación de datos escalares entre bloques. Los parámetros programables soportados a nivel de aplicación incluyen: - El número de planos de vídeo necesarios para una función mapeada en el bloque El tamaño de la región de los planos de vídeo almacenados en el SVMEM En tamaño de la WOI de los planos de vídeo almacenados en la BVMEM Los VSP contienen unidades funcionales vectoriales, que incluyen unidades de aritmética y lógica vectorial, unidades de multiplicación-acumulación vectorial, unidades vectoriales de desplazamiento, unidades vectoriales de intra-suma, unidades vectoriales de aleatorización y unidades vectoriales de carga/almacenamiento para las memorias especiales. Están compuestos por elementos de procesado y almacenamiento, llamados PSEs. Las PSEs de control y aritmética constituyen la base del procesador de 32bits, que ejecuta el código escalar, mientras que los PSE de procesamiento vectorial realizan las funciones vectoriales sobre el vídeo y los datos derivados de vídeo. Cada PSE está compuesta de Core y CoreIO. Procesadores de Señales de Video – Silicon Hive Paloma Fuentes - 13 - Microprocesadores Para Comunicaciones – Curso 2007/2008 3.4 Codificador/decodificador de vídeo usando la serie VSP. En la figura vemos una solución para codificación/decodificación de video. Fig11. Codificación/Decodificación de vídeo Está compuesta por dos VSP idénticas (VSP1 y VSP2) junto con un procesador stream, que es VLIW escalar (data path de 32 bits) y es útil para codificación/decodificación entrópica. Este procesador stream usa instrucciones genéricas para acelerar el código de longitud variable (VLC) y el CABAC (content-adaptive-binary-arithmetic-coding). Los dos bloques VSP se usan para realizar otras funciones como estimación de movimiento o compensación, cuantización, transformación, intra-predicción, etc… Usando TSMC90nm, el sistema completo, incluyendo los procesadores, las memorias locales, las DMA y los interfaces de bus, constaría de 1255k puertas lógicas, 105 kB de memoria de datos y 210kB de memoria de programa, de 6 a 9 nm2 de área total del layout y un reloj de 250MHz. El consumo depende de la tecnología usada: Para TSMC 90nm G, tendríamos un consumo de pico de 255mW, con TSMC 65nm G de 137 mW y con TSMC 65nm LP de 164mW. Procesadores de Señales de Video – Silicon Hive Paloma Fuentes - 14 - Microprocesadores Para Comunicaciones – Curso 2007/2008 3.5 Rendimiento del VSP En la siguiente figura se muestra el rendimiento del VSP para una serie de kernels/funciones. Fig12. Rendimiento VSP Como podemos observar, un bloque VSP con 16 caminos SIMD ejecutándose a 250MHz, puede realizar en de-entrelazado de un campo de 3 píxel con una tasa de salida de 1920x1080p@30fps, usando sólo el 19% de la carga del procesador. Por otro lado, un bloque VSP de 32 caminos SIMD pueden realizar un Sobel en 4 direcciones con una tasa de salida de 1920x1080p@30fps usando el 29% de la carga del procesador. El rendimiento de los dos bloques VSP que vimos para codificación y decodificación de vídeo, junto con el procesador stream, es de 1080p@30fps para decodificación H.264 de alto nivel y 720@30fps para codificación H.264 de alto nivel. Para otros estándares de codificación se pueden conseguir similares puntos de rendimiento con esta misma configuración. Para conseguir puntos de rendimiento más altos o bajos, podemos escalar reduciendo o aumentando el número de bloques VSP usados, como se muestra en la siguiente figura. Figura13. Escalabilidad para mejorar el rendimiento Procesadores de Señales de Video – Silicon Hive Paloma Fuentes - 15 - Microprocesadores Para Comunicaciones – Curso 2007/2008 4. CONCLUSIONES La arquitectura de bloques VSP proporciona el alto rendimiento, escalabilidad y flexibilidad necesaria para satisfacer a los consumidores conscientes del precio en el dominio de aplicaciones de video. Esto es posible debido a la arquitectura de bloques, las memorias especiales jerárquicas y la explotación de todas las formas de paralelismo. El concepto de programabilidad, a su vez, permite: - Mover funciones VSP al software, así como la diferenciación del producto. Los upgrades del firmware permiten extender la vida del producto, ya que se pueden realizan modificaciones posteriores en el diseño. Menos necesidad de mantenimiento y soporte en los posteriores diseños Muchas ventajas por el coste de una sola inversión en una solución programable. Además, la escalabilidad que ofrece la arquitectura VSP permite: - Funciones de pre-procesado, múltiples estándares de codificación y un completo espectro de funciones de post-procesado. Puntos de rendimiento desde resoluciones SD a resoluciones súper-HD. : Procesadores de Señales de Video – Silicon Hive Paloma Fuentes - 16 - Microprocesadores Para Comunicaciones – Curso 2007/2008 5. REFERENCIAS [1] www.siliconhive.com [2] www.wikipedia.es [3] www.nxp.com [4] www.embedded.com Procesadores de Señales de Video – Silicon Hive Paloma Fuentes - 17 -