320 likes | 470 Views
Microarquitecturas de Sistemas Integrados “Processing the new world of interactive media” The Trimedia VLIW CPU architecture. Benjamín Pérez Carballo Efraín Tejera Clavijo Pablo Santos Arozarena. Qué es Trimedia?. Familia de procesadores multimedia de Philips
E N D
Microarquitecturas de Sistemas Integrados“Processing the new world of interactive media”The Trimedia VLIW CPU architecture Benjamín Pérez Carballo Efraín Tejera Clavijo Pablo Santos Arozarena
Qué es Trimedia? • Familia de procesadores multimedia de Philips • Basados en CPU-VLIW de altas prestaciones • El primer producto Trimedia es el TM-1000 Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Elementos del TM-1000 • Núcleo CPU-VLIW de altas prestaciones • Amplias caches de datos e instrucciones • Interfaz con memoria principal • periféricos para vídeo, audio y datos Se trata de un sistema multimedia “on chip” que implementa aplicaciones de vídeo y audio de alta calidad. Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Estructura funcional del TM-1000 (1) • Procesador • Memoria SDRAM síncrona • Circuitería externa adicional para entrada/salida de datos multimedia Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
SDRAM Main Memory Interface Huffman decoder Slice-at-a-time MPEG 1&2 Stereo Digital Audio I2S DC-80 kHz Audio In VLD Coprocessor 2-8 ch. Digital Audio I2S DC-80 kHz CCIR601/656 YUV 4:2:2 CCIR601/656 YUV 4:2:2 I2C Bus to Camera, etc. V.34 or ISDN Front End Audio Out Video Out Down & Up Scalling YUV-RGB YUV-RGB YUV-RGB TM - 1000 PCI Bus I2C Inteface Video In Synchronous Serial Interface VLIW CPU Image Coprocessor PCI Interface Estructura funcional del TM-1000 (2) Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
CCIR601/656 YUV 4:2:2 CCIR601/656 YUV 4:2:2 Stereo 2-8 ch. ADC Audio in Audio out SDRAM V.34 Modem Front End JTAG PCI Bus TM - 1000 DAC Ejemplo de aplicación • Entrada de vídeo (CCIR601/656) • Salida directa vídeo • E/S audio estéreo • Interfaz PCI para comunic. con PC • Comunicaciones de datos por interfaz V.34 Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
El núcleo CPU-VLIW • 27 unidades funcionales • 128 registros de propósito general de 32 bits • Banco de registros con 15 puertos de lectura y 5 de escritura Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
La instrucción VLIW • Agrupa un máximo de 5 operaciones • Cada operación es equivalente a: • Operación simple de un RISC • Operación SIMD • Operación de saturación • Operación de clipping • Combinación de las anteriores Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Caches • Las instrucciones son comprimidas en la memoria principal y en la cache de instrucciones. • El TM-1000 dispone de: • 32 kbytes de cache de instrucciones • 16 kbytes de cache de datos Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Operaciones • Las operaciones se codifican en tres tipos diferentes que a su vez son de diferente tamaño: 26-bit, 34-bit y 42-bit. • Las operaciones más empleadas se codifican con los tamaños más pequeños para reducir el tamaño total del código Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Pipeline (1) 1 La unidad de búsqueda de instrucción toma una instrucción de la cache de instrucciones 2 La unidad de descompresión descomprime la inst. Y la expande en operaciones de tamaño fijo. 3 La unidad de lectura de operandos y bypass proporciona los 15 operandos requeridos por las 5 operaciones Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
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) Pipeline (2) 4 Las unidades de ejecución ejecutan las operaciones apropiadas 5 Los resultados son escritos en el banco de registros en la etapa de writeback Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Cómo se agrupan las operaciones? • El agrupado de las operaciones es tarea del compilador y no existe ninguna unidad hardware de lógica de agrupado en la CPU-VLIW. Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Instruction pipeline (1) • Etapa de “fetch” • La unidad de búsqueda de instrucción selecciona una línea de la cache de 64 bytes. • Cada instrucción tiene una cabecera de 10 bits • La cabecera se añade a la instrucción previa para simplificar la descompresión Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Instruction pipeline (2) • Etapa de descompresión • La información de cabecera de la instrucción previa se emplea para colocar los multiplexores apropiados que permitan expander las operaciones comprimidas (de tamaño variable) en campos de operación de tamaño fijo. Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Instruction pipeline (3) • Etapa de lectura de registros • Cada slot de emisión tiene unos campos de operandos en registros fijos. • 2 operandos fuente y un registro de guarda se leen del banco de registros en cada slot de emisión. • Hay 5 slots de emisión (15 lecturas en reg. file) • La unidad de bypass adelanta el resultado en esta etapa si fuese necesario. Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Instruction pipeline (4) • Etapa de ejecución • Asignadas a un slot de emisión en particular • Decodifica el opcode perteneciente a su slot de emisión. • Ejecuta las operaciones • Escribe el resultado en el bus de escritura. • Si los resultados se requieren en la siguiente etapa se adelantan inmediatamente • Las excepciones se registran en el registro PCSW Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Instruction pipeline (5) • Etapa de “writeback” • Un máximo de 5 resultados se generan en cada ciclo. • El banco de registros soporta la escritura simultánea de los 5 registros. Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Caracteristicas VLIW • Cada instruccion VLIW del Trimedia contiene 5 operaciones. • Operaciones simples tipo RISC u operaciones adaptadas a algoritmos multimedia. • 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] • Ejecucion condicional de cada operacion. • Un registro destino no se escribe si no se lo permite el LSB del reg. de protección. • Se usa para eliminar saltos en los IF y en los slots de retardo de los saltos. Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Saltos y slots de retardo • El juego de instrucciones del Trimedia incluye tanto saltos condicinales como incondicionales. • Se pueden ejecutar hasta un maximo 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, correpondientes a las tres etapas de pipeline previas a la etapa de ejecucion, que es donde se reconoce la veracidad de la condicion de salto. Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Operaciones multimedia (1) • La mayor parte de las aplicaciones de audio y video, operan con precision de 8 bits. • Operaciones del tipo Instrucción Unica-Multiples datos (SIMD) operan con subdivisiones de los registros de 32 bits en campos de 8 o 16 bits. • Aceleracion de la cantidad de operaciones que se pueden hacer por ciclo. • Algunas operaciones incluyen saturacion, lo que evita tener que introducir excepciones de overflow o incluso operaciones especiales para realizar la saturacion. Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Operaciones multimedia (2) • Operaciones de empaquetado (pack), mezcla (merge) y extraccion (extract). • Se utilizan para la alineacion y colocacion de los datos a tratar por operaciones SIMD. • La inclusion de este tipo de operaciones permite acelerar de manera espectacular los algoritmos usados en multimedia, por lo que se les denomina operaciones multimedia. Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Operaciones en punto flotante, load/stores • Punto Flotante • El Trimedia cumple con la norma de aritmetica de punto flotante de precision simple del IEEE. • Es capaz de lanzar a ejecucion 2 sumas/restas y dos multiplicaciones en punto flotante por ciclo, ademas de una division/raiz quadrada en background. • Todas las dependencias de datos deben ser resueltas en tiempo de compilacion. • Load/store • Soporta load/store de un RISC y la carga y descarga de bytes y media palabra • Dos load/store por ciclo. • Sumadores y recursos adicionales en las unidades de load/store Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Pipeline VLIW Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Código de reconstrucción de un frame para MPEG Son necesarios: tres sumadores, un desplazador, dos comparaciones, tres loads, y un store por pixel Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Código de reconstrucción de un frame para MPEG con el bucle desenrollado Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Operaciones a medida (1) • Operación quadavy quadavg rsrc1 rsrc2 -> rdest • rsrc1 = [abcd], rsrc2 = [wxyz], y rdest = [pqrs] p = (a + w + 1) >> 1 q = (b + x + 1) >> 1 r = (c + y + 1) >> 1 s = (d + z + 1) >> 1 Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Operaciones a medida (2) • Operación dspuquadaddui dspuquadaddui rsrc1 rsrc2 -> rdest • rsrc1 = [efgh], rsrc2 = [stuv], y rdest = [ijkl] i = uclipi(e + s, 255) j = uclipi(f + t, 255) k = uclipi(g + u, 255) l = uclipi(h + v, 255) Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Operaciones a medida (3) • Operación uclipi uclipi (m, n) { if (m < 0) return 0; else if (m > n) return n; else return m; } Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Código de reconstrucción de un frame para MPEG con el bucle desenrollado y reordenado Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Uso de las operaciones a medida QUADAVG y DSPUQUADADDUI (1) Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo
Uso de las operaciones a medida QUADAVG y DSPUQUADADDUI (2) Son necesarios: dos operaciones a medida, tres loads, y un store para cuatro pixeles. Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo