Name Event Date Name Event Date 1 Procesadores de streams 1 Diseño de microprocesadores para multimedia Procesadores de streams Pedro Hernández Fernández.
Post on 02-Feb-2016
213 Views
Preview:
Transcript
Name Event DateName Event Date11
Procesadores de streams 1
Diseño de microprocesadores para multimedia
Procesadores de streams
Pedro Hernández FernándezAntonio Núñez Ordóñez
Name Event DateName Event Date22
Procesadores de streams 2
Contenido
- Características generales
- Arquitectura IMAGINE
- Arquitectura MERRIMAC
Procesadores de streams
Name Event DateName Event Date33
Procesadores de streams 3
Procesadores programables optimizados para ejecutar aplicaciones multimedia
Procesador de
streams
Aplicacionesmultimedia
- Comprensión de video
- Gráfico en tres dimensiones
- Procesamiento de imágenes
- Procesamiento de señales
- Videoconferencia
- Reconocimiento de voz
Procesadores de streams
Name Event DateName Event Date44
Procesadores de streams 4
Características aplicaciones multimedia
Procesador de
streams
Aplicacionesmultimedia
- Alto nivel de paralelismo
- Poca reutilización de los datos
- Alta carga computacional
- Alta relación operaciones/accesos a memoria
- Localidad Productor-Consumidor
Procesadores de streams
Name Event DateName Event Date55
Procesadores de streams 5
Opciones actuales
EFICIENCIA
Procesadores de aplicaciones específicas (ASIC)
50 a 500 GOPS/W
Flexibilidad mínima o nula
PROGRAMABILIDAD
Microprocesadores o DSPs
Eficiencia pequeña 10GOPS/W
Programables usando lenguajes de alto nivel
Name Event DateName Event Date66
Procesadores de streams 6
Opciones actuales
DSPsMicroprocesadores
Procesadoresaplicacionesespecíficas
Eficientes
Flexibilidad mínima
Poco eficientes
Programables
Procesadoresde
streams
Eficientes
Programables
Name Event DateName Event Date77
Procesadores de streams 7
Fichero de registros central
Área proporcional al cubo del número de unidades funcionales
Potencia proporcional al cubo del número de unidades funcionales
Retardo proporcional 3/2 del número de unidades funcionales
Name Event DateName Event Date88
Procesadores de streams 8
Sustituir el fichero único por múltiples ficheros de registros
Las unidades funcionales se agrupan
Se asigna a cada grupo su propio fichero de registros
1ª Solución: Fichero de registros múltiples
Name Event DateName Event Date99
Procesadores de streams 9
2ª Solución: Fichero de registros múltiples con buses compartidos
Las unidades funcionales se conectan usando buses compartidos
Las unidades funcionales pueden leer/escribir directamente en los ficheros de registros
Name Event DateName Event Date1010
Procesadores de streams 10
Modelo de programación con Modelo de programación con streamsstreams
DefinicionesDefiniciones
El dato mínimo con el que se trabaja se denomina STREAM
STREAM: Conjunto de datos relacionados de longitud variable
KERNEL: Pequeño programa que realiza la misma operación sobre todos los elementos de un stream de entrada, produce un stream de salida para el siguiente kernel de la aplicación
Name Event DateName Event Date1111
Procesadores de streams 11
Programmable Kernel
Stream 4datadatadatadatadata
Stream 3datadatadatadatadata
Stream 2datadatadatadatadata
Stream 1datadatadatadatadata
Modelo de programación con Modelo de programación con streamsstreams
Los programas se estructuran como una secuencia de streams de datos que pasan a través de unos kernels de cálculo
Las operaciones se realizan sobre el stream completo
Name Event DateName Event Date1212
Procesadores de streams 12
Programmable Kernel
Stream 4datadatadatadatadata
Stream 3datadatadatadatadata
Stream 2datadatadatadatadata
Stream 1transformed datatransformed datatransformed datatransformed datatransformed data
Modelo de programación con Modelo de programación con streamsstreams
Los kernels no pueden hacer referencias a memoria
Los kernels operan con datos locales, (los streams de salida de un kernel son función de los streams de entrada
Name Event DateName Event Date1313
Procesadores de streams 13
Programmable Kernel
Stream 4datadatadatadatadata
Stream 3datadatadatadatadata
Stream 2 data data data data data
Stream 1transformed datatransformed datatransformed datatransformed datatransformed data
Modelo de programación con Modelo de programación con streamsstreams
Name Event DateName Event Date1414
Procesadores de streams 14
Programmable Kernel
Stream 4datadatadatadatadata
Stream 3 data data data data data
Stream 2 data data data data data
Stream 1transformed datatransformed datatransformed datatransformed datatransformed data
Modelo de programación con Modelo de programación con streamsstreams
Name Event DateName Event Date1515
Procesadores de streams 15
Programmable Kernel
Stream 4 data data data data data
Stream 3 data data data data data
Stream 2 data data data data data
Stream 1transformed datatransformed datatransformed datatransformed datatransformed data
Modelo de programación con Modelo de programación con streamsstreams
Name Event DateName Event Date1616
Procesadores de streams 16
Los programas en este modelo se especifican en dos niveles
A nivel de streams- La secuencia de kernels que forman la aplicación- Como están conectados esos kernels- Nombre y tamaño de los streams con los que se opera
A nivel de kernel- Especifica las operaciones a realizar con los datos
Modelo de programación con Modelo de programación con streamsstreams
Name Event DateName Event Date1717
Procesadores de streams 17
Las aplicaciones requieren un manejo adecuado del ancho de banda con memoria
La jerarquía de memoria tiene tres niveles:
- Un nivel de memoria principal: datos grandes o que se acceden de forma no frecuente
- Nivel intermedio : Aprovechar la localidad de los datos dentro del chip
- Nivel local: Almacenar datos temporales en las operaciones de cálculo
Las aplicaciones multimedia se adaptan perfectamente a este jerarquía
La ejecución de los kernels es rápida y eficiente (sólo datos locales)
El 90% del movimiento de datos es local
Jerarquía de memoriaJerarquía de memoria
Name Event DateName Event Date1818
Procesadores de streams 18
Imagine
Scott RixnerUniversidad de Stanford
Name Event DateName Event Date1919
Procesadores de streams 19
Procesador multimedia programable diseñado para implementar el modelo de programación con streams
Diseñado para ser una prueba del concepto de procesador de streams programable, mostrando la viabilidad de las estructuras
Está pensado para actuar como un coprocesador que opera sobre streams de datos multimedia.
Diseño organizado alrededor de tres niveles de memoria- Memoria del sistema (memoria principal)
- Un Fichero de registros global (nivel intermedio)- Un conjunto de ficheros de registros local (nivel local)
IMAGINE
Name Event DateName Event Date2020
Procesadores de streams 20
IMAGINE: Jerarquía de memoria
- Memoria del sistema (2GB/S)
Name Event DateName Event Date2121
Procesadores de streams 21
IMAGINE: Jerarquía de memoria
- Memoria del sistema (2GB/S)- Fichero de registros global (32GB/s) (arquitectura load/store)
Name Event DateName Event Date2222
Procesadores de streams 22
IMAGINE: Jerarquía de memoria
- Memoria del sistema (2GB/S) - Fichero de registros global (32GB/s) (arquitectura load/store) - Conjunto de ficheros de registros local (544GB/s)
Name Event DateName Event Date2323
Procesadores de streams 23
IMAGINE
Name Event DateName Event Date2424
Procesadores de streams 24
IMAGINE
Comunicación conel host y emisiónde instrucciones
Name Event DateName Event Date2525
Procesadores de streams 25
IMAGINE
Almacena los kernelsde la aplicación
Name Event DateName Event Date2626
Procesadores de streams 26
IMAGINE
Ejecutan loskernels
Name Event DateName Event Date2727
Procesadores de streams 27
IMAGINE
Conección con otrosintegrados IMAGINE
Name Event DateName Event Date2828
Procesadores de streams 28
IMAGINE
Transfiere datosentre bloques delchip
Name Event DateName Event Date2929
Procesadores de streams 29
IMAGINE
Almacenamiento local
Name Event DateName Event Date3030
Procesadores de streams 30
IMAGINE: Stream Register File
Name Event DateName Event Date3131
Procesadores de streams 31
IMAGINE: Stream Register File
Contiene SRAM de 128KB organizada en 1.024 bloques de 32 palabras de 32 bits
Puede almacenar streams de datos de longitud variable
La carga/almacen. de streams ocurre entre la memoria y el SRF
El envío y recepción de datos a través de la red ocurre entre el interfase de red y el SRF
Proporciona el streams de entrada a los kernels y almacena el stream de salida
Name Event DateName Event Date3232
Procesadores de streams 32
IMAGINE: Stream Register File
Name Event DateName Event Date3333
Procesadores de streams 33
IMAGINE: Stream Register File
IMAGINE tiene 22 stream buffers:IMAGINE tiene 22 stream buffers:
• • ocho cluster stream buffers ocho cluster stream buffers (ocho palabras por ciclo)(ocho palabras por ciclo)
• • ocho network stream buffers ocho network stream buffers (dos palabras por ciclo)(dos palabras por ciclo)
• • cuatro memory system stream cuatro memory system stream buffers buffers (una palabra por ciclo)(una palabra por ciclo)• • un microcontroller stream buffer un microcontroller stream buffer
(una palabra por ciclo),(una palabra por ciclo),• • un host processorun host processor stream buffer stream buffer
(una palabra por ciclo)(una palabra por ciclo)
Name Event DateName Event Date3434
Procesadores de streams 34
IMAGINE: Clusters aritméticos
Name Event DateName Event Date3535
Procesadores de streams 35
IMAGINE: Clusters aritméticos
- Operaciones en coma flotante de 32 bits en precisión simple
- Operaciones enteras de 32 bits.
- Están totalmente segmentadas, permitiendo una nueva operación en cada ciclo.
Name Event DateName Event Date3636
Procesadores de streams 36
IMAGINE: Red de comunicación Red de comunicación intraclusterintracluster
Permite el intercambio de datos entre las unidades aritméticas dentro del mismo cluster
Name Event DateName Event Date3737
Procesadores de streams 37
IMAGINE: Red de comunicación Red de comunicación interclusterintercluster
Name Event DateName Event Date3838
Procesadores de streams 38
IMAGINE: Red de comunicación Red de comunicación interclusterintercluster
La unidad de comunicación facilita el intercambio de datos entre clusters La unidad de comunicación puede enviar una palabra cada ciclo de reloj
El microcontrolador tiene un bus propio para enviar datos a los clusters
Name Event DateName Event Date3939
Procesadores de streams 39
IMAGINE: Microcontrolador
Name Event DateName Event Date4040
Procesadores de streams 40
IMAGINE: Microcontrolador
Envía instrucciones a los clusters aritméticos
Cada ciclo envía una instrucción VLIW de 568 bits a los ocho clusters
Los kernels están almacenados en una memoria de 2K instrucciones por
568 bits
Los kernels se cargan solamente una vez de memoria al comienzo de la
aplicación
Name Event DateName Event Date4141
Procesadores de streams 41
IMAGINE: Streaming Memory System
Name Event DateName Event Date4242
Procesadores de streams 42
Todas las referencias a memoria hacen uso de las instrucciones
LOAD y STORE que transfieren una stream completo de memoria
al SRF- simplifica la programación- minimiza las paradas de las unidades aritméticas
El sistema de memoria consiste en:- dos generadores de direcciones- cuatro bancos de memoria entrelazados- dos buffers de reordenación
IMAGINE: Streaming Memory System
Name Event DateName Event Date4343
Procesadores de streams 43
IMAGINE: Streaming Memory System
Genera direccionesde memoria
Name Event DateName Event Date4444
Procesadores de streams 44
IMAGINE: Streaming Memory System
Almacena lasreferencias a memoria
Name Event DateName Event Date4545
Procesadores de streams 45
IMAGINE: Streaming Memory System
Transfiere los datosal SRF en orden
Name Event DateName Event Date4646
Procesadores de streams 46
IMAGINE: Interface de red
Name Event DateName Event Date4747
Procesadores de streams 47
IMAGINE: Interfase de red
Transfiere streams de un procesador a otro, a través de la red
Se utiliza en las instrucciones de enviar o recibir (SEND/RECEIVE)
Dispone de cuatro canales de entrada y cuatro canales de salida
Cada canal puede transferir 2 bytes cada ciclo de reloj
Name Event DateName Event Date4848
Procesadores de streams 48
IMAGINE: Procesador
Name Event DateName Event Date4949
Procesadores de streams 49
IMAGINE: Procesador
Un procesador externo ejecuta el programa y transfiere las instrucciones que operan con streams al IMAGINE a través del controlador interno de streams.
Name Event DateName Event Date5050
Procesadores de streams 50
IMAGINE: Controlador de streams
Name Event DateName Event Date5151
Procesadores de streams 51
IMAGINE: Controlador de streams
Recibe instrucciones del procesador
Las almacena en una cola de instrucciones pendientes
Determina qué instrucciones están preparadas para emitir
Existen unas señales de estado desde las unidades funcionales que determinan cuando se completa una operación
Se emiten a las unidades que estén libres, sin violar las dependencias
Este emisión pueden hacerse fuera de orden
Name Event DateName Event Date5252
Procesadores de streams 52
Los programas en este modelo se especifican en dos niveles
A nivel de streams - La secuencia de kernels que forman la aplicación- Como están conectados esos kernels- Nombre y tamaño de los streams con los que se opera
A nivel de kernel- Especifica las operaciones a realizar con los datos
Modelo de programación con Modelo de programación con streamsstreams
Name Event DateName Event Date5353
Procesadores de streams 53
Los programas en este modelo se especifican en dos niveles
A nivel de streams (STREAMC)- La secuencia de kernels que forman la aplicación- Como están conectados esos kernels- Nombre y tamaño de los streams con los que se opera
A nivel de kernel - Especifica las operaciones a realizar con los datos
Modelo de programación con Modelo de programación con streamsstreams
Name Event DateName Event Date5454
Procesadores de streams 54
Los programas en este modelo se especifican en dos niveles
A nivel de streams (STREAMC)- La secuencia de kernels que forman la aplicación- Como están conectados esos kernels- Nombre y tamaño de los streams con los que se opera
A nivel de kernel (KERNELC)- Especifica las operaciones a realizar con los datos
Modelo de programación con Modelo de programación con streamsstreams
Name Event DateName Event Date5555
Procesadores de streams 55
KERNEL example1(istream<int> a,istream<int> b,ostream<int> c,uc<int> uc_amul,uc<int> uc_bmul){int amul = ucRead(uc_amul);int bmul = ucRead(uc_bmul);
loop_stream(a) {int ai, bi, ci;a >> ai;b >> bi;ci = select(ai > 0,ai * amul,bi * bmul);c << ci;
}}
Código ejecutado por un kernel (kernelC)
void main(){stream<int> a(256);stream<int> b(256);stream<int> c(512);stream<int> cEven = c(0, 512, FIXED, STRIDE, 2)uc<int> uc_amul = 2;uc<int> uc_bmul = 3;...example1(a, b, cEven, uc_amul, uc_bmul);...}
Código ejecutado en el procesador (StreamC)
Name Event DateName Event Date5656
Procesadores de streams 56
IMAGINE está implementado con un proceso CMOS de 0,15 micras de Texas Instruments, operando a 500MHz
El chip mide menos de 16x16mm, incluyendo los pads
Necesita 456 pines y 21 millones de transistores
IMAGINE: Implementación
Name Event DateName Event Date5757
Procesadores de streams 57
Merrimac
Bill DallyUniversidad de Stanford
Name Event DateName Event Date5858
Procesadores de streams 58
MERRIMAC: Jerarquía de memoria
Name Event DateName Event Date5959
Procesadores de streams 59
MERRIMAC: Jerarquía de memoria
Name Event DateName Event Date6060
Procesadores de streams 60
MERRIMAC
Name Event DateName Event Date6161
Procesadores de streams 61
MERRIMAC: Clusters aritméticos
Name Event DateName Event Date6262
Procesadores de streams 62
MERRIMAC
Name Event DateName Event Date6363
Procesadores de streams 63
Diseño de microprocesadores para multimedia
Procesadores de streams
Pedro Hernández FernándezAntonio Núñez
8 agosto 2004
top related