32
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

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

Embed Size (px)

Citation preview

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

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

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

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

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

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.

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

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

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

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

Estructura funcional del TM-1000 (2)

Audio In

Audio Out

I2C Inteface

VLDCoprocessor

Video Out

Video In

Synchronous Serial Interface

Image Coprocessor

VLIW CPU

Main Memory Interface

PCI Interface

SDRAM

Stereo Digital Audio I2S DC-80 kHz

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

CCIR601/656YUV 4:2:2

CCIR601/656YUV 4:2:2I2C Bus to Camera, etc.

2-8 ch. Digital AudioI2S DC-80 kHz

PCI Bus

Down & Up ScallingYUV-RGBYUV-RGB

YUV-RGB

V.34 or ISDNFront End

TM - 1000

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

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/656YUV 4:2:2

CCIR601/656YUV 4:2:2

Stereo

Audio in

JTAGV.34 Modem Front End

Audio out

2-8 ch.

PCI Bus

ADC

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

……………

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

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.

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

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

Page 15: Microarquitecturas de Sistemas Integrados “Processing the new world of interactive media” The Trimedia VLIW CPU architecture Benjamín Pérez Carballo Efraí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.

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

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.

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

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

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

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.

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

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.

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

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.

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

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.

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

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.

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

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

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

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

Pipeline VLIW

Decom. Reg. Read. Exe. Reg Write.Fetch instr.

Decom. Reg Read. Exe 1. Exe 2. Reg. Write.Fetch instr.

Decom. Reg Read. Exe 1. Exe 2. Exe 3.Fetch instr. Reg Write.

Decom. Reg Read. Address. Data Fetch. Align St. UpdFetch instr. Reg Write.

Decom. Reg Read. Jmp Add. Y cond

Fetch instr.

Fetch instr.

Alu, Shift, Fcomp pipe

DSPAlu pipe

FpAlu, Fpmul pipe

Load/Store pipe

Jump pipe

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

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

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

}

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

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

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;

}}

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

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

Operaciones a medida (1)

• Operación quadavyquadavg 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

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

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

Operaciones a medida (2)

• Operación dspuquadadduidspuquadaddui 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)

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

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;

}

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

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

void reconstruct (unsigned char *back, unsigned char *forward, char *idct, unsigned char *destination)

{int i, temp0, temp1, temp2, temp3;

for (i = 0; i < 64; i += 4){ temp0 = ((back[i+0] + forward[i+0] + 1) >> 1);

temp1 = ((back[i+1] + forward[i+1] + 1) >> 1); temp2 = ((back[i+2] + forward[i+2] + 1) >> 1); temp3 = ((back[i+3] + forward[i+3] + 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] = temp0;destination[i+1] = temp1;destination[i+2] = temp2;destination[i+3] = temp3;

}}

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

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

Uso de las operaciones a medida QUADAVG y DSPUQUADADDUI (1)

void reconstruct (unsigned char *back, unsigned char *forward, char *idct, unsigned char *destination)

{int i, temp;

int *i_back = (int *) back;int *i_forward = (int *) forward;int *i_idct = (int *) idct;int *i_dest = (int *) 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;

}}

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

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.

void reconstruct (unsigned char *back, unsigned char *forward, char *idct, unsigned char *destination)

{int i;

int *i_back = (int *) back;int *i_forward = (int *) forward;int *i_idct = (int *) idct;int *i_dest = (int *) destination;

for (i = 0; i < 16; i += 1) i_dest[i] = DSPUQUADADDUI(QUADAVG(i_back[i], i_forward[i]),

i_idct[i]);

}