Sie sind auf Seite 1von 13

1 2

INTRODUCCIN ............................................................................................................................ 2 ESTRUCTURA FUNCIONAL DEL TM-1000 .............................................................................. 2 2.1 NCLEO CPU VLIW ...................................................................................................................... 4 2.2 PIPELINE DE INSTRUCCIONES .......................................................................................................... 5 2.2.1 Etapa de Fetch ...................................................................................................................... 5 2.2.2 Etapa de descompresin ....................................................................................................... 6 2.2.3 Etapa de lectura de registros ................................................................................................ 6 2.2.4 Etapa de ejecucin................................................................................................................ 6 2.2.5 Etapa de writeback ............................................................................................................... 6

CARACTERSTICAS VLIW .......................................................................................................... 6 3.1 3.2 3.3 3.4 SALTOS Y SLOTS DE RETARDO ......................................................................................................... 7 OPERACIONES MULTIMEDIA ............................................................................................................ 7 OPERACIONES EN PUNTO FLOTANTE ............................................................................................... 7 OPERACIONES LOAD/STORE ............................................................................................................ 8

4 5

EJEMPLO: RECONSTRUCCIN DE IMGENES MPEG....................................................... 8 APLICACIONES ............................................................................................................................ 13

La arquitectura Trimedia

1 Introduccin
Trimedia es una familia de procesadores multimedia programables desarrollados por Philips Semiconductors. Esta arquitectura esta basada en una CPU de altas prestaciones tipo VLIW (Very Long Instruction Word). El primer producto perteneciente a la familia de procesadores que implementan la arquitectura Trimedia es el denominado TM-1000. El TM-1000 es capaz de procesar concurrentemente vdeo, audio, grficos y datos. La arquitectura del TM-1000 consiste en una CPU basada en VLIW de altas prestaciones, amplias caches de datos e instrucciones, interfaz con memoria principal as como perifricos para vdeo, audio y datos. En definitiva, el TM-1000 es un sistema multimedia on chip que permite implementar aplicaciones de vdeo y audio de alta calidad mediante lenguajes de alto nivel como C o C++. A continuacin pasaremos a analizar ms en detalle la arquitectura de la CPU VLIW.

2 Estructura funcional del TM-1000

SDRAM

Main Memory Interface

Stereo Digital Audio I2S DC-80 kHz 2-8 ch. Digital Audio I2S DC-80 kHz

Audio In

VLD Coprocessor

Huffman decoder Slice-at-a-time MPEG 1&2

Audio Out

Video Out

CCIR601/656 YUV 4:2:2 CCIR601/656 YUV 4:2:2 V.34 or ISDN Front End Down & Up Scalling YUV-RGB PCI Bus

I2C Bus to Camera, etc.

I2C Inteface

Video In

Synchronous Serial Interface

VLIW CPU
Image Coprocessor

TM - 1000

PCI Interface

Figura 1. Diagrama de bloques del TM - 1000

La figura 1 muestra el diagrama de bloques del chip. El conjunto del sistema TM-1000 consiste del propio procesador TM-1000, un bloque de memoria SDRAM sncrona y una mnima circuitera externa que proporciona la interfaz por la que viajarn los flujos de datos multimedia tanto de entrada como de salida. El TM-1000 soporta directamente

Pablo Santos Arozarena, Efran Tejera Clavijo, Benjamn Prez Carballo

Pgina 2

La arquitectura Trimedia la comunicacin a travs de un bus PCI estndar por ello puede colocarse directamente en la placa madre de un PC o en una tarjeta plug-in. La figura 2 muestra una posible aplicacin de un sistema TM-1000. En este ejemplo tenemos un flujo de entrada de vdeo que puede proceder directamente de una cmara de vdeo digital que cumpla el estndar CCIR 601 y que trabaje con el vdeo en formato YUV 4:2:2. La informacin de vdeo de una cmara no estndar puede proporcionarse al TM-1000 a travs de un chip decodificador de vdeo. El TM-1000 consta tambin de una salida directa de vdeo (segn CCIR 601) que permite atacar a un monitor.
SDRAM

CCIR601/656 YUV 4:2:2

CCIR601/656 YUV 4:2:2

Stereo Audio in

ADC

TM - 1000

DAC

2-8 ch. Audio out

JTAG

V.34 Modem Front End

PCI Bus

Figura 2. Conexiones del sistema TM-1000

Las entradas y salidas de audio en estreo requieren elementos ADC y DAC externos. El tratamiento de las seales de vdeo y audio es adems altamente personalizable a travs de parmetros programables. La interfaz directa tipo PCI permite al TM-1000 presentar vdeo a travs de la tarjeta de vdeo de un PC y audio a travs del hardware de sonido de un PC. Adems el coprocesador de imgenes proporciona soporte para la presentacin de vdeo en directo en un numero arbitrario de ventanas solapadas usando la tecnologa PCI pixel-push. Finalmente la interfaz V.34 requiere solo mdem externo y la interfaz con la lnea telefnica para proporcionar soporte a comunicaciones remotas. El mdem puede emplearse para conectar sistemas basados en TM-1000 para aplicaciones de videoconferencia adems de emplearse tambin, claro esta, para transferencia de datos de propsito general en sistemas PC. TM-1000 soporta adems clculos en formato big-endian y little-endian con lo que se puede emplear tanto en sistemas basados en Pentium (little-endian) como en sistemas PowerPC/Apple (big-endian).

Pablo Santos Arozarena, Efran Tejera Clavijo, Benjamn Prez Carballo

Pgina 3

La arquitectura Trimedia 2.1 Ncleo CPU VLIW

La CPU VLIW incorpora 27 unidades funcionales (ver tabla 1). La seleccin de las unidades funcionales esta basada en la simulacin del decodificador MPEG, ejecucin de PostCript y aplicaciones de grficos 3D. Posee 128 registros de propsito general de 32 bits. El banco de registros consta de 15 puertos de lectura y 5 de escritura. El uso de los puertos de lectura y escritura del banco de registros depende del numero de slots de emisin. Por ejemplo, la funcin IDCT de las aplicaciones del decodificador de MPEG2 emplea 11 puertos de lectura y 5 de escritura en promedio. En cada instruccin VLIW se agrupan hasta un mximo de 5 operaciones. Cada operacin es equivalente a una operacin simple de un RISC, a una operacin SIMD, a una operacin de saturacin, a una operacin de clipping o recorte o a una combinacin de todas estas operaciones.

Tabla 1. Unidades funcionales de la CPU Unidad funcional Cantidad constant 5 Integer ALU 5 load/store 2 DSP ALU 2 DSP MUL 2 Shifter 2 Branch 3 Int/float mul 2 Float ALU 2 Float compare 1 Float sqrt/div 1

1.1.1.1.1.1.1 el TM-1000 contiene 32 kbytes de cache de Para la velocidad de procesamiento, Tabla 1. Unidades funcionales de de instrucciones y una cache de datos de 16 kbytes, ambasla 8 vas. CPU Las instrucciones son comprimidas y almacenadas en la memoria principal y en la cache de instrucciones. El esquema de compresin empleado codifica un no-op con 2 bits. Esto reduce el tamao del cdigo VLIW tradicional a un tamao de cdigo del tipo de un RISC. Las operaciones son codificadas en tres tipos diferentes. En cada tipo las operaciones tienen diferente tamao: 26-bit, 34-bit, 42-bit. Las operaciones ms empleadas son codificadas con los tamaos ms pequeos para reducir el tamao total del cdigo. Las instrucciones VLIW de tamao variable resultantes se almacenan alineadas por byte para simplificar la lgica de bsqueda de instruccin.

Pablo Santos Arozarena, Efran Tejera Clavijo, Benjamn Prez Carballo

Pgina 4

La arquitectura Trimedia Analicemos ahora el proceso de bsqueda de instruccin representado en la figura 3. La unidad de bsqueda de instruccin toma una instruccin de la cache de instrucciones. La unidad de descompresin descomprime la instruccin y la expande en operaciones de tamao fijo. La unidad de lectura de registros y bypass proporciona los 15 operandos requeridos para las 5 operaciones. Las unidades de ejecucin ejecutan las operaciones apropiadas basndose en el slot de emisin y en el cdigo de operacin. Finalmente los resultados son escritos en el banco de registros en la etapa de escritura (writeback). Este flujo de ejecucin de instrucciones encaja bien con las operaciones que ha de realizar la ALU, sin embargo, hay algunas variaciones en el pipeline de instrucciones para otros tipos de operaciones.

Instruction Cache (32 Kb)

Instruction Fetch Buffer

Decompression Hardware

Issue Register (5 Ops)

Operation Routing Network Execution Unit (27 functions)

Register Routing and Forwarding Network

Register File (128 x 32)

Figura 3. Ncleo del procesador VLIW y cache de instrucciones

La lgica de agrupado de operaciones se lleva a cabo en el compilador y no existe ninguna unidad hardware de lgica de agrupado en la CPU VLIW. Esta es una de las principales diferencias entre un RISC y la arquitectura VLIW. La unidad de forwarding es similar a la de una arquitectura RISC. 2.2 Pipeline de instrucciones

2.2.1 Etapa de Fetch Durante esta etapa, la unidad de bsqueda de instruccin selecciona una lnea de la cache de 64 bytes. El clculo de la direccin se realiza en la etapa de ejecucin. Es en la etapa de ejecucin cuando se toma la decisin de salto en una instruccin de salto condicional. Los datos trados se concatenan con los datos que provienen de la etapa previa. Cada instruccin tiene una cabecera de 10 bits. Hay 4 tipos de operaciones por lo que se requieren 2 bits para codificar cada tipo. Los 4 tipos son: no-op, operaciones

Pablo Santos Arozarena, Efran Tejera Clavijo, Benjamn Prez Carballo

Pgina 5

La arquitectura Trimedia de 26-bit, operaciones de 34-bit y operaciones de 44-bit. La cabecera se aade a la instruccin previa con el fin de simplificar la operacin de descompresin. La primera instruccin en un rbol de decisin posee una estructura fija y no requiere cabecera. 2.2.2 Etapa de descompresin La informacin de cabecera de la instruccin previa se emplea para colocar los multiplexores apropiados que permitan expandir las operaciones comprimidas y de tamao variable en campos de operacin de tamao fijo. 2.2.3 Etapa de lectura de registros Cada slot de emisin tiene unos campos de operandos en registros fijos. Dos operandos fuente y un registro de guarda son ledos del banco de registros por cada slot de emisin. Hay 5 slots de emisin y el banco de registros posee 5 puertos de lectura. La unidad de bypass tambin adelanta el resultado en esta etapa si se requiere. 2.2.4 Etapa de ejecucin Las unidades de ejecucin estn asignadas a un slot de emisin en particular. La unidad de ejecucin decodifica el cdigo de operacin perteneciente a su slot de emisin, ejecuta las operaciones y escribe el resultado en el bus de escritura. Si los datos resultantes se requieren en la siguiente etapa de ejecucin, los datos son adelantados inmediatamente a los slots de emisin requeridos. Las excepciones son registradas en el registro PCSW (Program Control and Status Word). 2.2.5 Etapa de writeback Un mximo de 5 resultados pueden ser generados en cada ciclo. El ya mencionado banco de registros soporta la escritura simultnea de estos 5 resultados.

3 Caractersticas VLIW
Cada una de las instrucciones VLIW del Trimedia contiene 5 operaciones. Cada una de estas, puede a su vez ser corresponderse con simples instrucciones RISC o hasta con complejas instrucciones usadas en algoritmos multimedia. Algunos ejemplos de estas instrucciones pueden ser las siguientes: Tipo RISC imin: rdest:=min(rsrc1,rsrc2) Tipo Multimedia quadavg: Cuatro medias de 4 pares de registros de 8 bits contenidos en rsrc1 y rsrc2 [a,b,c,d]:=[avg(e,i),avg(f,j),avg(g,k),avg(h,l)] donde rdest=[a,b,c,d], rsrc1=[e,f,g,h] y rsrc2=[i,j,k,l]

Pablo Santos Arozarena, Efran Tejera Clavijo, Benjamn Prez Carballo

Pgina 6

La arquitectura Trimedia

Todas las operaciones de la arquitectura Trimedia se ejecutan usando un registro de proteccin. El LSB de este registro acta de byte de condicin, escribindose el resultado de la operacin tan solo si el valor de este registro de 8 bits es TRUE. De esta manera, se facilita la implementacin de estructuras IF, eliminando los saltos introducidos por este tipo de estructuras que serian un handicap para este tipo de sistemas donde los saltos son altamente nocivos. Adems, aprovechando estas caractersticas, el compilador de C para el Trimedia, introduce este tipo de operaciones para rellenar los slots de retardo introducidos por los saltos. 3.1 Saltos y slots de retardo

El juego de instrucciones del Trimedia incluye tanto saltos condicionales como incondicionales. Se pueden ejecutar hasta un mximo de tres saltos por ciclo, con el cuidado por parte del compilador de conseguir que tan solo una de las condiciones de salto sea cierta en un ciclo. Las condiciones de saltos son similares las de guarda, pero en este caso el registro de guarda es el registro fuente. Cada salto necesita tres slots de retardo, correspondientes a las tres etapas de pipeline previas a la etapa de ejecucin, que es donde se conoce la veracidad de la condicin de salto. 3.2 Operaciones multimedia

La mayor parte de las aplicaciones de audio y vdeo, operan con precisin de 8 bits. Operaciones del tipo Instruccin Unica-Multiples datos (SIMD) que operan con subdivisiones de los registros de 32 bits en campos de 8 o 16 bits, aceleran enormemente la cantidad de operaciones que se pueden hacer por ciclo. Algunas operaciones incluyen saturacin, lo que evita tener que introducir excepciones de overflow o incluso operaciones especiales para realizar la saturacin. Por otro lado, las operaciones de empaquetado (pack), mezcla (merge) y extraccin (extract) se utilizan para la alineacin y colocacin de los datos a tratar por operaciones SIMD. La inclusin de este tipo de operaciones permite acelerar de manera espectacular los algoritmos usados en multimedia, por lo que a este tipo de operaciones se les denomina operaciones multimedia. 3.3 Operaciones en punto flotante

El Trimedia cumple con la norma de aritmtica de punto flotante de precisin simple del IEEE. Es capaz de lanzar a ejecucin 2 sumas/restas y dos multiplicaciones en punto flotante por ciclo, adems de una divisin/raz cuadrada en background. Esta ultima es una operacin non-blocking, es decir, no detiene la ejecucin de las dems. Es importante notar que todas las dependencias de datos deben ser resueltas en tiempo de compilacin.

Pablo Santos Arozarena, Efran Tejera Clavijo, Benjamn Prez Carballo

Pgina 7

La arquitectura Trimedia 3.4 Operaciones load/store

Este procesador soporta tanto los tradicionales load/store de un RISC como la carga y descarga de bytes y edias palabras, siendo capaz de ejecutar dos de estas instrucciones por ciclo. Las unidades encargadas de este cometido disponen de sumadores propios para el calculo de la direccin efectiva, as como unidades especiales para dar soporte a cargas de bytes y medias palabras con signo, permitiendo la extensin de signo.

A Sf F m i e l , ht c p p u i, o p DApe S l i Pu p F l ,F u i e p u p lp A m p Ld t r pe o/ o i aS e p Jm i e up p p

Fc i s. eh t t nr Fc i s. eh t t nr Fc i s. eh t t nr Fc i s. eh t t nr Fc i s. eh t t nr

Do. R.Rd em e e. c g a Do. R Rd em e e. c g a Do. R Rd em e e. c g a

E. x e E1 x . e E1 x . e

R W. e re g i t E2 x . e E2 x . e R.W. e re g i t E3 x . e R W. e re g i t

Do. R Rd Ars D Fc.An t U R W. em e e. c g a de. d s a e h lgS p e r e t t a i . d g i t Do. R Rd em e e. c g a


Jpd m d A. Yn cd o

Fc i s. eh t t nr

4 Ejemplo: Reconstruccin de imgenes MPEG


El algoritmo de decodificacin de vdeo MPEG, est compuesto de varias fases diferentes, cada una de las cuales, requiere intensiva capacidad computacional. Un importante kernel, se encarga de la reconstruccin de cada frame de la imagen, para lo cual, los resultados del forward y backward-predicted frames y la transformada discreta del coseno (IDCT) deben haber sido computadas previamente. Este kernel nos proporciona una excelente oportunidad para ilustrar la potencia de las operaciones a medida del TM-1000. En el fragmento de cdigo que sigue, se asume que: el backward-predicted block, el forward-predicted block, y la IDCT, han sido calculado previamente y sus resultados han sido almacenados en los arrays: back[], forward[], e idct[] respectivamente. La figura 6, muestra de forma sencilla, como queda el cdigo del algoritmo de reconstruccin. El cdigo accede a un byte en memoria cada vez, en lugar de una palabra, lo que supone un derroche del 75% del ancho de banda a memoria disponible. Parece poco eficiente emplear tres sumadores y un desplazador para procesar un simple pixel de 8 bits. Pero quizs ms desafortunado an para un procesador VLIW como el TM-1000, es el uso de cdigos de salto intensivo empleados para el test de saturacin. Si se eliminasen esos saltos, se conseguira aumentar el rendimiento de forma significativa.

Pablo Santos Arozarena, Efran Tejera Clavijo, Benjamn Prez Carballo

Pgina 8

La arquitectura Trimedia
Void reconstruct (unsigned char *back, unsigned char *forward, char *idct, unsigned char *destination) { int i, temp; for (i = 0; i < 64; i += 1) { temp = ((back[i] + forward[i] + 1) >> 1) + idct[i]; if (temp > 255) temp = 255; else if (temp < 0) temp = 0; destination[i+0] = temp; } } Figura 6. Cdigo de reconstruccin del frame para MPEG.

Puesto que la decodificacin de MPEG es la clase de tareas para las que fue creado el TM-1000, hay dos operaciones a medida quadavy y dspuquadaddui - que son de gran utilidad para este propsito. Estas operaciones a medida, procesan cuatro parejas de pixeles de 8 bits en paralelo. Adems, dspuquadaddui realiza el test de saturacin va hardware, lo que elimina la necesidad de ejecutar tambin el test, y los saltos asociados. El primer paso consiste en desenrollar el bucle en un factor de cuatro. En la figura 7, se puede ver como quedara el programa en este caso. De esta forma, se consigue crear cdigo que se puede ejecutar en paralelo para la computacin de cuatro pixeles. Observando el cdigo, se puede observar fcilmente, que los cuatro grupos a computar (un grupo por pixel), no dependen unos de otros. Para entender como quadavy y dspuquadaddui nos pueden ser tiles en este cdigo, vamos a examinar lo que hace cada una de ellas. La operacin a medida quadavy realiza la media de cuatro parejas de pixeles en paralelo. Formalmente, la operacin de quadavy es la siguiente:
quadavg rsrc1 rsrc2 -> rdest

toma los valores de los registros fuentes rsrc1 y rsrc2, y el resultado lo almacena en el registro rdest. rsrc1 = [abcd], rsrc2 = [wxyz], y rdest = [pqrs] donde a, b, c, d, w, x, y, z, p, q, r y s son todos valores sin signo de 8 bits cada uno. La operacin quadavy computa el vector de salida [pqrs] como se indica a continuacin:
p q r s = = = = (a (b (c (d + + + + w x y z + + + + 1) 1) 1) 1) >> >> >> >> 1 1 1 1

Como se puede observa en la figura 7, es evidente que la primera instruccin de cada uno de los grupos de instrucciones realiza el promediado de los pixeles. El resto del cdigo sumarle el valor del idct[i] y realizar el test de saturacin es realizado por la operacin dspuquadaddui.

Pablo Santos Arozarena, Efran Tejera Clavijo, Benjamn Prez Carballo

Pgina 9

La arquitectura Trimedia
void reconstruct (unsigned char *back, unsigned char *forward, char *idct, unsigned char *destination) { int i, temp; for (i = 0; i < 64; i += 4) { temp = ((back[i+0] + forward[i+0] + 1) >> 1) + idct[i+0]; if (temp > 255) temp = 255; else if (temp < 0) temp = 0; destination[i+0] = temp; temp = ((back[i+1] + forward[i+1] + 1) >> 1) + idct[i+1]; if (temp > 255) temp = 255; else if (temp < 0) temp = 0; destination[i+1] = temp; temp = ((back[i+2] + forward[i+2] + 1) >> 1) + idct[i+2]; if (temp > 255) temp = 255; else if (temp < 0) temp = 0; destination[i+2] = temp; temp = ((back[i+3] + forward[i+3] + 1) >> 1) + idct[i+3]; if (temp > 255) temp = 255; else if (temp < 0) temp = 0; destination[i+3] = temp; } } Figura 7. Cdigo de reconstruccin del frame para MPEG, usando operaciones a medida del TM-1000.

Formalmente, esta operacin es la siguiente:


dspuquadaddui rsrc1 rsrc2 -> rdest

coge los valores de los registros de origen rsrc1 y rsrc2, y el resultado del cmputo lo almacena en el registro rdest. rsrc1 = [efgh], rsrc2 = [stuv], y rdest = [ijkl] donde e, f, g, y h son valores sin signo de 8 bits. La operacin que realiza dspuquadaddui con los parmetros de entrada para obtener el resultado de salida en el vector [ijkl] es la siguiente:
i j k l = = = = uclipi(e uclipi(f uclipi(g uclipi(h + + + + s, t, u, v, 255) 255) 255) 255)

La definicin de la operacin uclipi es la siguiente:


uclipi (m, n) { if (m < 0) return 0; else if (m > n) return n; else return m; }

Pablo Santos Arozarena, Efran Tejera Clavijo, Benjamn Prez Carballo

Pgina 10

La arquitectura Trimedia Para ver ms fcil como podemos utilizar estas operaciones en el cdigo de la figura 7, la figura 8 muestra el mismo cdigo reordenado. Ahora, se puede ver de forma clara, que la operacin quadavy puede reemplazar las primeras cuatro lneas del bucle, siempre y cuando, se puedan obtener los elementos individuales de 8 bits de los arrays back[] y forward[] posicionados correctamente en los bytes de una palabra de 32 bits. Tambin se puede ver, que la operacin dspuquadaddui puede reemplazar el siguiente cdigo (exceptuando, por supuesto, el almacenamiento en el array destination[]), asumiendo como antes, que los elementos de 8 bits estn alineados y empaquetados en palabras de 32 bits.
void reconstruct (unsigned char *back, unsigned char *forward, char *idct, unsigned char *destination) { int i, temp0, temp1, temp2, temp3; for (i = 0; { temp0 temp1 temp2 temp3 i < 64; i += 4) = = = = ((back[i+0] ((back[i+1] ((back[i+2] ((back[i+3] + + + + forward[i+0] forward[i+1] forward[i+2] forward[i+3] + + + + 1) 1) 1) 1) >> >> >> >> 1); 1); 1); 1);

temp0 += idct[i+0]; if (temp0 > 255) temp0 = 255; else if (temp0 < 0) temp0 = 0; temp1 += idct[i+1]; if (temp1 > 255) temp1 = 255; else if (temp1 < 0) temp1 = 0; temp2 += idct[i+2]; if (temp2 > 255) temp2 = 255; else if (temp2 < 0) temp2 = 0; temp3 += idct[i+3]; if (temp3 > 255) temp3 = 255; else if (temp3 < 0) temp3 = 0; destination[i+0] destination[i+1] destination[i+2] destination[i+3] } } Figura 8. Reagrupacin del cdigo de la figura 7. = = = = temp0; temp1; temp2; temp3;

La figura 9, muestra el nuevo cdigo, el array es ahora accedido en trozos de 32 bits, el control de las iteraciones del bucle han sido modificadas para reflejar que se realizan cuatro operaciones a la vez, y las operaciones quadavy y dspuquadaddui han reemplazado a la mayor parte del cdigo del bucle. Por ltimo la figura 10 muestra una expresin ms compacta del cdigo del bucle, en la que se eliminan las variables temporales. Pablo Santos Arozarena, Efran Tejera Clavijo, Benjamn Prez Carballo Pgina 11

La arquitectura Trimedia

Hay que sealar de nuevo, que tanto el cdigo de la figura 9 como el de la figura 10, asumen que el array de caracteres est alineado y rellenado si es necesario en palabras de 32 bits.
void reconstruct (unsigned char *back, unsigned char *forward, char *idct, unsigned char *destination) { int i, temp; int int int int *i_back = (int *) *i_forward = (int *i_idct = (int *) *i_dest = (int *) back; *) forward; idct; destination;

for (i = 0; i < 16; i += 1) { temp = QUADAVG(i_back[i], i_forward[i]); temp = DSPUQUADADDUI(temp, i_idct[i]); i_dest[i] = temp; } } Figura 9. Uso de las operaciones a medida QUADAVG y DSPUQUADADDUI, para aumentar el speed out del bucle de la figura 8.

void reconstruct (unsigned char *back, unsigned char *forward, char *idct, unsigned char *destination) { int i; int int int int *i_back = (int *) *i_forward = (int *i_idct = (int *) *i_dest = (int *) back; *) forward; idct; destination;

for (i = 0; i < 16; i += 1) i_dest[i] = DSPUQUADADDUI(QUADAVG(i_back[i], i_forward[i]), i_idct[i]); } Figura 10. Versin final del cdigo de reconstruccin de un frame.

El cdigo original, necesitaba tres sumadores, un desplazador, dos comparaciones, tres loads, y un store por pixel. El nuevo cdigo que utiliza operaciones a medida, requiere solo dos operaciones a medida, tres loads, y un store para cuatro pixeles, lo cual supone una mejora mayor que un factor de seis.

Pablo Santos Arozarena, Efran Tejera Clavijo, Benjamn Prez Carballo

Pgina 12

La arquitectura Trimedia El cdigo de la figura 10 ilustra varios aspectos del uso de operaciones a medida en un cdigo fuente en C. Primero, las operaciones a medida, no requieren una sintaxis o declaracin especial; parecen ser simples llamadas a funciones. Segundo, no es necesario especificar explcitamente los registros fuentes, destino o de resultados intermedios; el compilador y el scheduler asignan registros para las operaciones a medida. Tercero, el scheduler empaqueta las operaciones a medida en las instrucciones VLIW del TM-1000 de forma tan efectiva como empaqueta operaciones generadas por el compilador para construcciones del lenguaje nativo. As, aunque la responsabilidad de hacer un uso efectivo de las operaciones a medida recae en el programador, esta carga solo consiste en descubrir las oportunidades para explotar dichas operaciones y luego codificarlas usando una notacin C estndar. El compilador y scheduler se encargan del resto.

5 Aplicaciones
El TM-1000 ha sido diseado para muchas aplicaciones multimedia como pueden ser, vdeo conferencia, aceleracin multimedia en ordenadores personales, DVD, y televisores de alta definicin.

Pablo Santos Arozarena, Efran Tejera Clavijo, Benjamn Prez Carballo

Pgina 13

Das könnte Ihnen auch gefallen