Download Intel Media Processor
Document related concepts
no text concepts found
Transcript
Universidad de Las Palmas de Gran Canaria Autor: Christian Pérez Fajardo. Índice. 1. Introducción………………………………………………………………………….1 2. Arquitectura…….……………………………………………………………………2 2.1. DSP…………………………………………………………………..........3 2.2. Decodificación hardware MPEG–2 y H.264…………………………..3 2.3. Soporte para SDRAM DDR2…………………………………………….4 2.4. Acelerador gráfico 2D/3D………………………………………………..4 2.5. Salidas/ Entradas de audio y video……………………………………..4 3. Intel Xscale......................................................................................................5 3.1. Superpipeline.....................................................................................6 3.2. Coprocessor 15 (CP15)......................................................................7 3.3. Coprocessor 14 (CP14)......................................................................7 3.4. Branch Target Buffer (BTB)................................................................7 3.5. Instruction Memory Management Unit (IMMU)..................................7 3.6. Data Memory Management Unit (DMMU)..........................................8 3.7. Instruction Cache (I-Cache)...............................................................8 3.8. Data Cache (D-Cache).......................................................................8 3.9. Mini-Data Cache.................................................................................8 3.10. Fill Buffer (FB) and Pend Buffer (PB)...............................................9 3.11. Write Buffer (WB).............................................................................9 3.12. Multiply-Accumulate Coprocessor (CP0).........................................9 3.13. Coprocessor Interface....................................................................10 3.14. Internal Memory Bus......................................................................10 3.15. Clock and Power Management......................................................10 3.16.Performance Monitoring Unit...........................................................10 3.17. JTAG…………………………………………………………….......….10 3.18. Debug Unit………………………………………………………..........11 4. Aplicaciones………………………………………………………………………..12 5. Referencias…………………………………………………………………..........13 1. Introducción En abril de 2007 Intel Corporation dio a conocer un procesador de comunicaciones altamente integrado orientado a la electrónica de consumo (CE) que dará soporte a una nueva generación de dispositivos, como decodificadores digitales y reproductores de medios en red, y proporcionará a los consumidores servicios avanzados de información y entretenimiento en el hogar. El procesador Intel® CE 2110 Media Processor es una arquitectura System-on-Chip (SoC) completa que combina, en un solo chip, un núcleo de procesamiento a 1 GHz, basado en el Intel XScale®, decodificadores hardware de video MPG-2 y H.264 que permite dar soporte para el procesamiento de componentes audiovisuales, una interfaz de memoria DDR2, aceleradores gráficos 2D/3D, dispositivos entrada salida E/S y un entorno de desarrollo de software modular. Este diseño de componentes todo en uno se vuelve cada vez más importante en el mercado actual ya que los fabricantes de productos de electrónica de consumo buscan acortar el tiempo de salida de sus productos al mercado y desarrollar diseños de electrónica de consumo más inteligentes y económicos que ofrezcan un buen rendimiento y flexibilidad. Intel planea ofrecer su primer SoC en el 2008. . -1- 2. Arquitectura. La fabricación del Intel CE 2110 Media Processor está basada en la tecnología de 90nm y el SoC entero lo componen: Procesador integrado Intel Xscale® de hasta 1 GHz. DSP (Intel MSA®) para la codificación de audio. Acelerador gráfico 2D/3D. Puertos E/S analógicos y digitales. Decodificación hardware MPEG–2 y H.264. Decodificación software en el procesador Xscale® de otros códecs de vídeo. Encriptación y desencriptación por hardware (DVB, DES, 3DES, AES). Soporte para SDRAM DDR2 (configuración básica 64MB, máximo 512MB). Soporte para memoria Flash, hasta 128 MB, en un bus de expansión de 8/16-bits. Salidas de video/audio. o Analógica o S-Video. o 6 canales I2S. o Interfaz externa para HDMI transmitido con HDCP. o S/PDIF. Entradas de video/audio. o Interfaz para sintonización ATSC/DVB. o NTSC/PAL. o I2S. -2- Estructura interna del Intel Media Processor. 2.1 DSP (Intel MSA®). Intel incluye un DSP desarrollado conjuntamente con Analog Devices que tiene una frecuencia de funcionamiento de 1 Ghz con una caché de instrucciones de 16 KB y de datos de 32 KB para hacer frente a códecs nuevos que puedan surgir y así poder hacer su decodificación. DSP Intel MSA. 2.2 Decodificación hardware MPEG–2 y H.264. La misión de la decodificación hardware para los códecs más comunes MPG-2 y H.264 es liberar al XScale de dicha de decodificación y que el núcleo se dedique única y exclusivamente a atender a las aplicaciones. -3- 2.3 Soporte para SDRAM DDR2. El tipo de memoria que da un ancho de banda óptimo para el funcionamiento de los decodificadores hardware de códecs es la SDRAM (Single Data Rate Synchronous Dynamic Random Access Memory). Se decide optar por la DDR2 (500 MT/s) porque presenta un alto poder de integrabilidad. 2.4 Acelerador gráfico 2D/3D. La aceleración gráfica es fundamental para satisfacer los requisitos actuales de los modelos digitales para el hogar, ya que estos deben ser ricos en interfaces gráficos para facilitar la interacción intuitiva con la aplicación. Para ello Intel confía en PowerVR MBX Lite 2D/3D acelerator que da una excelente calidad de representación en display. 2.5 Salidas/ Entradas de audio y video. Intel intenta cubrir toda la gama de entradas y salida para audio y video, no olvidemos que es un SoC orientado a trabajar con aplicaciones multimedia. Utiliza el interfaz de sonido desarrollado por Sony y Philips S/PDIF que permite la transmisión de audio digitalmente, es decir si hacer una conversión a analógico. Con la interfaz HDMI, High Definition Multimedia Interface, se permite la transmisión de audio y video digital, contiene la protección HDCP, HighBandwidth Digital Content que evita las copias del contenido digital y utiliza un solo conector y es muy sencillo de utilizar. Permite los dos sistemas de codificación y transmisión de televisión, el americano NTSC y el europeo PAL Soporta el DVB para la transmisión de HDTV y televisión vía satélite, además sigue las normas para la televisión digital dictadas por el ATSC, Comité de Sistemas de Televisión Avanzada. -4- 3. Intel XScale. Intel decide utilizar como núcleo un XScale a 1 Ghz ya que este núcleo posee un alto rendimiento para cargas computacionales altas y posee una gran adaptabilidad a las diferentes frecuencias a la que trabajan las aplicaciones que lo usarán. En el caso del Intel Media Processor el microprocesador Intel XScale se combina con periféricos para proporcionar productos de aplicación específica dirigidos a determinados segmentos del mercado. Como ejemplo, un microprocesador RISC puede integrarse con periféricos tales como controladores de pantallas LCD, controladores multimedia, interfaz de memoria externa para permitir a los OEM Original, (Equipment Manufacturer, Fabricante Original de Equipo) un tiempo de desarrollo más pequeño, dispositivos con una vida larga de batería. Como Otro ejemplo, el microprocesador puede ser rodeado de interfaces PCI de gran ancho de banda, controladores de memoria para proporcionar redes de un alto grado de integración y baja potencia, es decir utilizarlo como un procesador de red. La microarquitectura del Intel XScale está basado en un ARM versión 5TE. Intel rodea al núcleo ARM con unidades de manejo de instrucciones y datos en memoria (MMU), cache de datos, instrucciones y una mini cache de datos con predicción de saltos, BTB (Branch Target Buffer), MAC coprocessor (coprocesador de multiplicación y acumulación), interfaz para coprocesador, manejador de alimentación, unidades para la monitorización de la ejecución, depurador y un puerto JTAG (Joint Test Action Group) para el testeo del SoC. Es un procesador RISC supersegmentado de 7 u 8 etapas que gracias a su gestión dinámica del voltaje y la frecuencia permite que las aplicaciones trabajen a una alta velocidad con un consumo de potencia bastante bajo. Hay que hacer notar que la T en ARM 5TE significa Thumb instrucción set lo que quiere decir que permite ejecutar instrucciones de 16 bits. El siguiente bloque muestra la arquitectura interna del XScale: Estructura interna del Intel XScale. -5- 3.1 Superpipeline La supersegmentación está compuesta por tres cauces segmentados distintos con tres unidades funcionales para cada cauce una segmentación para la unidad de enteros, otro para el multiply-accumulate (MAC) y otro para de memoria. La segmentación de la unidad de enteros, está compuesto por siete etapas: Branch target buffer/fetch 1: Esta etapa incluye un BTB para el manejo de los saltos Fetch 2: Nos permite coger otra instrucción ya que el tiempo de propagación ALU de enteros, que define el reloj del procesador, es menor que el tiempo de acceso a la caché de instrucciones. Decode: Decodifica la instrucción. Register file/shift: Acceso al banco de registros. ALU execute: Ejecución de la instrucción en ALU. State execute: Comprobamos el estado de la instrucción antes de cambiarlo y hacer firme el resultado, es decir se mira si las instrucciones en curso no han generado excepciones y si además no hay dependencias que pueden machacar los resultados. Si no hay confirma la terminación de la instrucción y actualiza el estado de la maquina en esta etapa. Si hay excepciones o dependencias se retrasa todo con ciclos adicionales. Integer writeback: Escritura del resultado. La segmentación de memoria contiene ocho etapas usa las cinco primeras etapas de la segmentación general (BTB/fetch 1 hasta ALU execute) lo que ocurre de aquí en adelante es que el ciclo para memoria de datos, para load y stores, está dividido en dos, data cache 1, data cache 2, mas el de data cache writeback que en caso de store se utiliza para actualizar las memorias mas alejadas del procesador. Se utiliza la política de tipo writeback y no writethrough para evitar escribir en las zonas alejadas de memoria solo se escribe si se detecta un read de datos de un bloque o línea de cache sucia, es decir con datos modificados. La segmentación MAC tiene de seis a nueve etapas que usa las cuatro primeras etapas de la segmentación general (BTB/fetch 1 hasta register file/shift) y luego las etapas propias de la segmentación MAC: MAC1, MAC2, MAC 3, MAC 4 y data cache writeback. La unidad MAC tiene una latencia de 4 ciclos y no de uno como la ALU y contiene un bypass que permite a las multiplicaciones por +-1 y 0 y a las multiplicaciones multiplos de dos adelantar los 4 ciclos de latencia ya que no los necesitan. -6- La segmentación profunda aumenta el número de instrucciones ejecutadas solo si ha existido una predicción de salto correcta por parte de la rama de predicción de saltos (Branch Target Buffer). 3.2 Coprocessor 15 (CP15) Controla el TLB y la configuración de los registros. 3.3 Coprocessor 14 (CP14) Monitoriza toda la ejecución y es el encargado del depurado por software 3.4 Branch Target Buffer (BTB) Es el buffer que se utiliza para la rama de saltos condicionales. Cada entrada del BTB contiene la dirección de la instrucción de salto y la dirección objetivo asociada con la instrucción de salto y la historia previa de los saltos, si han sido tomados o no. La historia de los saltos es grababa como uno de los siguientes cuatro estados: strongly taken, weakly taken, weakly nottaken, o strongly not-taken. Según el estado el salto será tomado o no. Si la dirección de la instrucción de salto acierta en el BTB y su historia es strongly o weakly taken, la instrucción objetivo, es decir a donde se va a saltar, es cargada en el ciclo de fetch, si su historia es strongly o weakly nottaken, la siguiente instrucción es cargada en el ciclo de fetch. En cada caso la historia es actualizada. El dato asociado con una instrucción de salto entra en el BTB la primera vez que se toma el salto. Este dato entra en el BTB en un spot que tiene una historia de strongly not-taken (sobrescribiendo el anterior dato). Una predicción correcta de saltos evita la latencia de los saltos en la supersegmentación, pero una predicción incorrecta penaliza entre 4 y 5 ciclos de latencia en la supersegmentación. Hay que destacar que el acierto se produce la mayoría de las veces. 3.5 Instruction Memory Management Unit (IMMU) La IMMU controla la traducción de direcciones lógicas a direcciones físicas, los permisos de accesos y los atributos que rigen el funcionamiento de la caché de instrucciones. Contiene un buffer de traducción de direcciones completamente asociativo con 32 entradas (ITLB) con una política de emplazamiento round robbin. Si una instrucción falla en el ITLB la IMMU invoca automáticamente un mecanismo que obtiene un descriptor desde memoria y carga la instrucción en el ITLB. El descriptor contiene la información para traducir las direcciones lógicas en direcciones físicas, los permisos de accesos y los atributos que rigen el funcionamiento de la caché de instrucciones. Luego la IMMU continúa con el prefetch utilizando la dirección que acaba de cargar en el ITLB. Si una instrucción en prefetch acierta en el ITLB la IMMU continua el prefetch usando la dirección que está residente en el ITLB Los permisos de accesos para cada uno de los dieciséis dominios de memoria pueden ser programados, si una instrucción en prefetch intenta acceder a un área privada el intento es abortado y si envía al núcleo un prefetch abort. 3.6 Data Memory Management Unit (DMMU) Para la obtención de datos, el DMMU controla la traducción de direcciones lógicas a direcciones físicas, los permisos de accesos a memoria, identificadores de los dominios de memoria y los atributos necesarios para el funcionamiento de la cache de datos o de la mini-cache de datos y el buffer de escritura. La DMMU contiene un buffer de traducción de datos de 32 entradas totalmente asociativo (DTLB). Si un dato en el ciclo de fetch falla en el DTLB la DMMU invoca un mecanismo que carga el descriptor asociado desde memoria hasta el DTLB. El descriptor contiene la información necesaria para traducir las direcciones lógicas en direcciones físicas, los permisos de accesos y los atributos que rigen el funcionamiento de la caché de datos. Luego el DMMU continúa con el ciclo de fetch usando la dirección que acaba de ser cargada en el DTLB. Si hay un acierto en el DTLB la DMMU continua con el ciclo de fetch usando la dirección que está en el DTLB. Al igual que en el IMMU los permisos de accesos para cada uno de los dieciséis dominios de memoria pueden ser programados, si una instrucción en prefetch intenta acceder a un área privada el intento es abortado y se envía al núcleo un data abort. 3.7 Instruction Cache (I-Cache) La cache de instrucciones contiene segmentos de código que son usados frecuentemente o todo el código permitiendo al core acceder con frecuencia a estas instrucciones. Esto previene que el core se quede bloqueado a causa de los múltiples accesos que tiene que hacer a la memoria externa. La cache es de 32 Kbyte de 32 vías, cada vía contiene un tag, un identificador la línea y un bit de válido con una política de remplazamiento round robin. -7- La cache de instrucciones puede ser deshabilitada y habilitada a través de los atributos que están en el ITLB. Si la línea necesitada no se encuentra en la cacha la línea es cargada desde memoria a una cola de dos niveles de profundidad, esta cola permite que la siguiente instrucción sea accedida desde la cache de instrucciones pero solo si no hay dependencia de datos con la instrucción que le antecede. 3.8 Data Cache (D-Cache) La cache de datos contiene datos a los que el procesador accede con frecuencia, esto previene que el core se quede bloqueado a causa de los múltiples accesos que tiene que hacer a la memoria externa. La cache es de 32 Kbyte de 32 vías, cada vía contiene un tag, un identificador de línea, dos bits de sucio y un bit de válido con una política de remplazamiento round robin. La cache datos puede ser deshabilitada y habilitada a través de los atributos que están en el DTLB, con los bits del DTLB también podemos controlar si los datos van a la cache de datos o a la mini-cache de datos, la localización de donde escribimos o leemos, write back y write through. Tanto la cache de datos como la mini cache trabajan con un buffer de carga y un pend buffer para dar la capacidad de un hit-undermiss que permite al core acceder a otro dato en la cache después de un miss. La cache de datos y la mini cache de datos trabajan con un buffer de escritura para los datos que serán escritos en memoria. 3.9 Mini-Data Cache En la mini cache de datos estarán datos que cambian frecuentemente como el flujo de video en MPEG permitiendo al core acceder a los datos a frecuencia de reloj, con esto evitamos el bloqueo del core. La mini-cache de datos alivia la paliza causada a la cache de datos por el constante cambio causado en el flujo de video. La mini cache es de 2 Kbyte asociativa de 32 vías, se agrupan de dos en dos vías, cada vía contiene un tag, un identificador de línea, dos bits de sucio y un bit de válido con una política de emplazamiento round robin. La mini cache datos puede ser deshabilitada y habilitada, los bits contenidos dentro de los registros específicos del coprocesador podemos controlar los modos de operación, la localización de donde escribimos o leemos, write back y write through. La mini cache trabajan con un buffer de carga y un pend buffer para dar la capacidad de un hit-undermiss que permite a el core acceder a otro dato en la cache después de un miss. La mini cache de datos trabaja con un buffer de escritura para los datos que serán escritos en memoria. -8- 3.10 Fill Buffer (FB) and Pend Buffer (PB) El Fill Buffer y el Pend Buffer trabajan junto con la cache de datos y la mini cache de datos para proveerlas de la capacidad de un “hit-undermiss” permitiendo al core buscar otro dato en las caches mientras que el dato que ya fallado es cargado desde memoria. El FB puede contener hasta cuatro direcciones que han errado permitiendo cuatro fallos antes que el core se bloquee. El PB mantiene hasta cuatro direcciones lógicas para fallos adicionales. 3.11 Write Buffer (WB) El Write Buffer dispone de datos para el almacenamiento en memoria hasta que el bus de control actúe sobre el. El WB contiene 8 entradas donde cada una de ellas puede albergar 16 bytes. Está constantemente activo y acepta datos de la cache de datos, de la mini cache de datos o directamente del core. El registro 1 del coprocesador 15 especifica si la propiedad de unión esta habilitada o no. Si está deshabilitada, los almacenamientos en memoria se producen en el orden que dicte el programa independientemente de los atributos que haya en los descriptores del DTLB. Si la propiedad de unión está activada los atributos dentro de los descriptores del DTLB son examinados para determinar si la propiedad de unión esta activada para la región de memoria destino. Si está activada, el WB puede unir cualquiera de las 8 entradas y luego escribirlas en la región de memoria pero con la posibilidad de hacerlo fuera de orden de programa. 3.12 Multiply-Accumulate Coprocessor (CP0) Para el procesamiento eficiente de lo algoritmos de audio, el CP0 contiene un acumulador de 40 bits de 16x16, un SIMD 16x16, y un multiplicador con signo de 16x32 bits. Una instrucción MAR especial y un MRA son implementadas para mover los 40 bits del acumulador a 2 registros generales del núcleo (MAR) y mover 2 registros generales del núcleo al acumulador (MRA). El multiplicador-acumulador 16x16 con signo multiplica cada una de las partes high/high, low/low, high/low, low/high, 16 bits de un registro del core (multiplicador) se multiplica con otro registro del core de 32 bits para producir un multiplicación completa de 32 bits el cuál es extendido en signo en 40 bits y luego sumado con el acumulador. La multiplicación y acumulación dual signed 16x16 (SIMD) multiplica 16 bits de un registro del core con 32 bits de otro registro para producir dos producto de 16 bits que son extendidos en signo y sumados al acumulador. La multiplicación con signo 32x32 produce un producto de 64 bits de los cuales los 40 menos significativos son sumados al acumulador. La multiplicación 16x32 y 32 x32 son completadas en un solo ciclo. -9- 3.13 Coprocessor Interface El coprocesador utiliza una interfaz de 32 bits para transferir datos a velocidad de core entre los registros del coprocesador y del procesador. Soporta la ejecución paralela, procesador y coprocesador trabajando a la vez y el modo en espera para que el coprocesador termine la ejecución de una instrucción. 3.14 Internal Memory Bus El bus interno de memoria puede transferir simultáneamente, cargar palabras de 32 bits y almacenar palabras de 32 bits en cada ciclo de reloj, esto supone una velocidad máxima de transferencia de 2.4 Gbytes por segundo en cada dirección a 600 MHz, lo que da un total de 4.8 Gbytes por segundo a 600 MHz. La cifra se obtiene según: 64-bits = 8-Bytes 4.8-Gbytes/sec. Divido por 8-Bytes = 0.6-G/sec. 0.6-G/sec. = 600 MHz, la máxima frecuencia de reloj. 3.15 Clock and Power Management El core contiene un software que conserva el consumo variando la frecuencia de trabajo según la carga que este soportando el procesador. El reloj dinámico está optimizado para: 40-mW/185-MIPS at 150-MHz. 450-mW/750-MIPS at 600-MHz. 900-mW/1000-MIPS at 800 MHz. 3.16 Performance Monitoring Unit La unidad de supervisión contiene 2 contadores de eventos de 32 bits y un contador de reloj de 32 bits. El contador de eventos puede ser programado para monitorizar los hits de la cache de instrucciones, los hits en la cache de datos, en el ITLB, en el DTLB, los hits en la predicción de salto del BTB. Hasta ocho eventos adicionales se puede monitorizar usando la microarquitectura Intel XScale™. 3.17 JTAG El Puerto estándar IEEE 1149.1 JTAG consiste en un test al controlador del puerto de acceso, boundary-scan, test de registro de instrucciones y datos. El puerto JTAG puede ser usado también para acceder a la unidad de depurado lo cual provee control sobre el depurado. -10- 3.18 Debug Unit La unidad de depurado es accesible a través del puerto JTAG. La aplicación de depuración se ejecuta fuera del XScale, lo que permite a la aplicación de depurado parar la aplicación que se está ejecutando dentro del procesador y redireccionarla a la rutina de depuración. Para ello utiliza las excepciones de depurado que son puntos de ruptura, estos pueden ser instrucciones, datos o externos. Una vez la ejecución ha sido detenida, la aplicación de depurado puede examinar o modificar el estado del core, el estado del procesador o la memoria, una vez hecho esto el depurador puede volver a iniciar la aplicación. -11- 4. Aplicaciones. Considerando la concepción del Intel CE 2110 Media Processor, esto es, su capacidad, prestaciones, arquitectura y el kit de desarrollo “SDK” con el que se adjunta, se podrían tener las siguientes aplicaciones (conjunta o separadamente): 1. 2. 3. 4. 5. 6. 7. 8. PC. Internet. HDTV. Reproducción/edición/grabación de audio y vídeo. VoIP. IPTV. Vídeo llamada. Karaoke. La primera y más atractiva aplicación que puede tener un sistema con este SoC es el de un “todo en uno”: funcionalidad de un PC, HDTV, reproducción/edición/grabación de audio/vídeo, VoIP, Internet, etc. Sería el más caro y completo de todos. Dispositivo todo en uno. Otra aplicación sería la de un reproductor/grabador de audio y vídeo. Dispondría de varios códecs que posibilitarían la reproducción y grabación de cualquier tipo de archivo de A/V. Podría ser un posible sustituto del DVD. Reproductor/grabador de audio y video También sería posible tener un PC de sobremesa con capacidades multimedia. -12- 5. Referencias http://www.intel.com/pressroom/archive/releases/20070416comp_a.htm http://download.intel.com/design/intelxscale/XScaleDatasheet4.pdf http://embedded-system.net/ce-2110-media-processor-for-multimedia-consumerelectronics-intel.html http://www.intel.com/design/celect/2110/ce2110_brief.pdf -13-