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-