Microarquitecturas de Sistemas Integrados “Processing the new world of interactive media” The Trimedia VLIW CPU architecture Benjamín Pérez Carballo Efraín.

1 Microarquitecturas de Sistemas Integrados “Processing t...
Author: Alphonso Natal
0 downloads 0 Views

1 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

2 Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo Qué es Trimedia? Familia de procesadores multimedia de Philips Basados en CPU-VLIW de altas prestaciones El primer producto Trimedia es el TM-1000

3 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.

4 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

5 Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo Estructura funcional del TM-1000 (2) Audio In Audio Out I 2 C Inteface VLD Coprocesso r Video Out Video In Synchronous Serial Interface Image Coprocesso r VLIW CPU Main Memory Interface PCI Interface SDRAM Stereo Digital Audio I 2 S DC-80 kHz Huffman decoder Slice-at-a-time MPEG 1&2 CCIR601/656 YUV 4:2:2 CCIR601/656 YUV 4:2:2 I 2 C Bus to Camera, etc. 2-8 ch. Digital Audio I 2 S DC-80 kHz PCI Bus Down & Up Scalling YUV-RGB V.34 or ISDN Front End TM - 1000

6 Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo 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 TM - 1000 SDRAM DAC CCIR601/656 YUV 4:2:2 CCIR601/656 YUV 4:2:2 Stereo Audio in JTAG V.34 Modem Front End Audio out 2-8 ch. PCI Bus ADC

7 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

8 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

9 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

10 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

11 Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo Pipeline (1) 1La unidad de búsqueda de instrucción toma una instrucción de la cache de instrucciones 2La unidad de descompresión descomprime la inst. Y la expande en operaciones de tamaño fijo. 3La unidad de lectura de operandos y bypass proporciona los 15 operandos requeridos por las 5 operaciones

12 Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo Pipeline (2) 4Las unidades de ejecución ejecutan las operaciones apropiadas 5Los resultados son escritos en el banco de registros en la etapa de writeback Instruction Cache (32 Kb) Instruction Fetch Buffer Register File (128 x 32) Decompression Hardware Issue Register (5 Ops) Register Routing and Forwarding Network Operation Routing Network Execution Unit (27 functions) ……………

13 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.

14 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

15 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.

16 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.

17 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

18 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.

19 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.

20 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.

21 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.

22 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.

23 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

24 Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo Pipeline VLIW

25 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

26 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

27 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

28 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)

29 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; }

30 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

31 Pablo Santos Arozarena, Efraín Tejera Clavijo, Benjamín Pérez Carballo Uso de las operaciones a medida QUADAVG y DSPUQUADADDUI (1)

32 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.