Title: Arquitectura de Procesadores VLIW y DSP
1Arquitectura de ProcesadoresVLIW y DSP
2ILP (Instruction Level Parallelism)
- Familia de técnicas de diseño tanto del
procesador como del compilador que incrementan la
velocidad de ejecución permitiendo que
operaciones individuales (instrucciones) tales
como loads, stores, operaciones enteras y de CF,
se ejecuten en paralelo. - A diferencia de los multiprocesadores
tradicionales o máquinas masivamente paralelas,
estas técnicas son transparentes al usuario. - Ejemplo de técnicas ILP aplicadas a procesadores
superescalares y VLIW - Ejemplo de técnicas ILP aplicadas al compilador
software pipelining y trace scheduling
3Surgimiento de VLIW
- 1980s aparecen en el mercado como una natural
evolución de los procesadores microprogramados
horizontalmente. debido a los mismos cambios en
la tecnología que motivaron la aparición de RISC
la desaparición del gap existente entre RAM y
ROM. - El mercado de procesadores especializados, que
tenían cableados importantes algoritmos como FFT,
reemplazan la ROM de control con RAM, dándoles a
los programadores acceso al ILP.
4Microprogramación
- Horizontal cada microinstrucción contiene n
bits, cada uno de los cuales controla
directamente cada pieza de hardware, evitando
otros niveles de decodificación. Las
microinstrucciones horizontales son más largas. - Vertical cada microinstrucción tiene un pequeño
número de campos, muy codificados, de forma que
requieren más decodificación antes de aplicarse a
los componentes individuales.
5Surgimiento de VLIW
- Tanto en RISC como en VLIW, el tema crucial era
el compilador. En el caso de VLIW, el compilador
debía generar código horizontal es decir debía
especificar el paralelismo directamente. - Técnicas de generación de código se extendieron a
partir de las existentes para microcódigo, y se
desarrollaron nuevas para incorporar a los
compiladores para que éstos extraigan mucho
paralelismo. - Se construyeron pocas VLIW CPUs de propósito
general Culler, Multiflow y Cydrome. A pesar de
explotar mucho ILP, no tuvieron éxito comercial.
6Diferencias y Semejanzas con Superescalares
- Semejanzas misma estructura básica compuesta por
múltiples U.F. operando en paralelo, y un único
Banco de Registros (o dos para FX y FP) - Diferencias tipo de instrucciones y scheduling
de instrucciones
7Diferencias y Semejanzas con Superescalares
Única Instrucción Multioperación
Unidad de Fetch
Caché de Instr.
VLIW
EU
EU
EU
Banco de Registros
8Diferencias y Semejanzas con Superescalares
Múltiples Instrucciones
Unidad de Fetch
Caché de Instr.
Decode/ Inicio
Superescalar
EU
EU
EU
Banco de Registros
9Tipos de Instrucciones
- Arquitecturas VLIW están controladas por
instrucciones largas que contienen un campo de
control por cada una de las UF disponibles en la
arquitectura. - La longitud de la instrucción depende de dos
factores número de UF disponibles y número de
bits necesarios para controlar cada UF. - El número de UF suele ser grande de 5 a 30. El
número de bits de control para cada UF suele ser
de 16 o 32 gt palabras de instrucción de
100-1kbit - Ejemplos Trace 7/200 ejecuta 7 operaciones por
ciclo y utiliza una palabra de instrucción de 256
bits.
10Scheduling de Instrucciones
- Superescalares utilizan sheduling dinámico
- VLIW utilizan scheduling estático es
responsabilidad del compilador. - Ventaja
- reduce la complejidad del hardware (no hay
detección de riesgos, ni renombre, ni despacho en
desorden, ni retiro ordenado, y además la etapa
de decodificación es más sencilla) y permite
incrementar la velocidad del reloj o aumentar el
paralelismo o ambas a la vez.
11Scheduling de Instrucciones
- Desventaja
- mayor complejidad en el compilador al que le
tocan las tareas de detectar y eliminar los
riesgos por dependencias de datos, control y
recursos. - Pero además, el compilador, para poder realizar
su tarea, necesita conocer todas las
características del hardware, tales como número,
tipo, latencia, intervalo de iniciación de las
UF, slot delay del load, muchos de los cuales
dependen no sólo de la arquitectura sino de la
tecnología de implementación. gtgtgtun mismo
compilador NO puede utilizarse para distintos
modelos de la misma familia. !!!!!
12Scheduling de Instrucciones
- Mas problemas
- Cache Misses Debido a que el compilador no
conoce cuando se producirán, debe considerar el
caso peor de retardo al generan su scheduling.
(loads especulativos...) - El formato de la VL Instruction, que es fijo, no
siempre contiene información útil en todos los
campos gtgtpérdida de espacio y ancho de banda
con memoria. - Debido a la alta complejidad de la tarea, los
VLIW NO pueden ser programados en lenguaje
ensamblador (!)
13GPP VLIW Trace 2000
- Desarrollado por la empresa Multiflow en 1987.
(Tanto Multiflow como Cydrome quebraron a
principios de los 90) - Son tres modelos Trace 7/200, 14/200, 28/200
(7,14,28 instrucciones por ciclo)
14GPP VLIW Trace 2000
Registros FP (32x64)
Registros FX (64x32)
FADD
FMUL
ALU1
ALU0
Store Registers (32x32)
TLB
F board
I board
Dirección Física
Store Buses
15GPP VLIW Trace 2000
- Instrucción 256 bits (7 instrucciones).
- Fetch una instrucción por ciclo mayor ( 2 ciclos
menores llamados beats) - Latencia de operaciones de enteros 1 ciclo menor
- Latencia de operaciones de CF 6 (FADD), 7 (FMUL)
y 25 (FDIV) ciclos menores. UF segmentadas.
16Trace 2000 Instrucción
Subword 0 ALU0, primer beat
opcode
dest
dest_bank
src1
branch_test
src2
inm
Subword1 constante
Constante Inmediata
Subword 2 ALU1, primer beat
Subword3 FADD
opcode
dest
dest_bank
src1
src2
L
Subword 4 ALU0, ultimo beat
Subword 6 ALU1, ultimo beat
Subword 7 FMUL
opcode
dest
dest_bank
src1
src2
L
17Trace 2000 Instrucción
- Hay 4 subwords que permiten especificar salto
condicional, pero sólo pueden utilizarse dos. Los
saltos codifican su prioridad (cual es el
primero) en el campo inmediato. - De las 8 palabras, 6 especifican los bits de
control para las UF, mientras que dos contienen
operandos inmediatos. - Las palabras de control contienen
- 7 bits de código de operación
- dos campos para designar operandos fuentes y uno
para destino (6 bits) - especificación del Banco de Registros (FX, FP o
local store)
18Trace 2000 Instrucción
- Las instrucciones se almacenan en una caché de 8K
VLIW, que provee una instrucción por ciclo. - Las subwords vacías no se almacenan en memoria.
Cada palabra de 1K bit se asocia con una máscara
de 32 bits que indica que subpalabras están
vacías y cuales no. - Comparado con el código compilado para un VAX, el
código para TRACE es al menos 3 veces más largo. - Números de rendimiento
- Trace 7/200 130 instrucciones/ciclo 6 Mflops
- Cray XMP 8 instrucciones/ciclo 24 Mflops
19DSP Digital Signal Processing
- Procesadores para procesado digital de señales
se utilizan para teléfonos celulares, modems,
discos, contestadoras, etc. - Al bajar el precio de los microprocesadores,
éstos pueden ser incorporados a productos del
mercado que demandan bajo costo, rapidez,
pequeñez y poco consumo de energíagt se
desarrollan chips que implementan el procesado
de señales. - El mercado de DSP está creciendo. (Forward
Concepts reporta en 1997 un movimiento de 3
billones de dolares)
20DSP Funciones de Filtro
- Una de las funciones más comunes en DSP filtrado
de señales.
xn
xn-1
x1
D
D
D
c1
c2
cn
Cn-1
x
x
x
x
yn
yn xn c1 xn-1c2 ........ x1 cn
Tap
21DSP instrucción MAC
- El número de TAPs, y los valores de los
coeficientes definen las características del
filtro. - La operación realizada (yk yk-1 xk cj) se
llama MAC multiply-accumulate. - Para soportar la MAC eficientemente, DSP tienen
hardware especializado de multiplicación
(multiplican en un ciclo) y registros
acumuladores especiales (más grandes que los
registros comunes) - Casi todos los procesadores DSP tienen una
instrucción de MAC en su conjunto de
instrucciones. - Esta es una diferencia con los GPP.
22DSP instrucción MAC
- DSP requieren mucho ancho de banda con memoria
por ejemplo, para ejecutar un MAC por ciclo, se
requieren 4 accesos a memoria por ciclo - fetch de la instrucción MAC
- leer el elemento x correspondiente
- leer el coeficiente
- escribir el resultado
- DSP utilizan la arquitectura de memoria Harvard.
Un típico GGP utiliza la arquitectura Von
Neumann.
23Arquitecturas de Memoria Harvard y Von Neumann
Procesador
Procesador
Bus de Direcciones 1
Bus de Direcciones
Bus de Datos 1
Bus de Direcciones 2
Bus de Datos
Bus de Datos 2
Memoria
Memoria
Memoria
24DSP memoria
- Desde el punto de vista físico, la arquitectura
de memoria con caches de instrucciones y datos
de los procesadores superescalares es casi
idéntica a la arquitectura Harvard. - Desde el punto de vista lógico, hay diferencias
- En DSP, el programador controla EXPLÍCITAMENTE
qué datos e instrucciones se alamcenan en sus
memorias. - En GPP, el proceso de decidir que datos e
instrucciones residen en la caché, es
transparente al programador desde el punto de
vista del programador solo hay una única memoria
de datos e instrucciones (Von Neumann) - La mayoría de los DSP no contienen caché usan
múltiples bancos de memoria dentro del
chip.Algunos pueden llegar a tener una pequeña
caché de instrucciones, pero no de datos porque
los datos en los algoritmos de DSP se usan y se
descartan. (no hay reuso)
25DSP y GPP diferencias
- DSP Zero overhead looping hardware
especializado para la ejecución de loops
(instrucción loop) - GPP predicción de saltos
- DSP aritmética entera, porque es menos costosa.
- DSP modos de direccionamiento especializados
modulo addressing y bit reversed addressing - DSP aplicaciones de tiempo real. Esto requiere
del programador el conocimiento exacto de cuanto
tiempo de proceso requerirá cada muestra (o al
menos, el peor caso).
26DSP y GPP diferencias
- GPPs de alto rendimiento es difícil predecir
el tiempo de ejecución de un trozo de código
POCA PREDICTIBILIDAD, porque la ejecución
especulativa hace que un mismo trozo de código
consuma distinta cantidad de ciclos según la
historia previa de ejecución - DSP, no tienen ejecución especulativa y, en caso
de que hubiera caché de instrucciones, es el
programador el que sabe que instrucciones están
alligt MUCHA PREDICTIBILIDAD.
27DSP y GPP Instrucciones
- DSP ISAs diseñados para conseguir muchas
instrucciones por ciclo y poco consumo de memoria
gt muchas operaciones en una única instrucción,
pero muy especializadas gt conjuntos de
instrucciones irregulares y complicados. - Motorola DSP56300 dos espacios de memoria X e Y
- MAC X0, Y0, A X(R0), X0 Y(R4)N4, Y0
- Multiplica X0 por Y0
- Suma el resultado a A (aumulador)
- Carga registro X0 con la posición apuntada por R0
de memoria X - Carga registro Y0 con la posición apuntada por R4
de memoria Y - Postincrementa R0 por 1
- Postincrementa R4 por el contenido de N4
28DSP y GPP Programación
- GPP se programan en alto nivel.
- DSP se programan en ensamblador porque la
complejidad de la arquitectura (múltiples
espacios de memoria, juego irregular de
instrucciones y hardware especializado) hacen
difícil escribir compiladores eficientes. - Optimización de código es esencial en DSP mucha
computación a bajo costo. Los vendedores de DSP
proveen herramientas de optimización y
simulación. Se mejora a manoel resultado del
compilador.
29Tipos de DSP
- Bajo Costo, Bajo Rendimiento
- TI TMS320C2xx, Motorola DSP560xx (Familias)
- Operan a razón de 20-50MIPS Nativos
- Poco consumo de energía, poca memoria.
- Uso productos que requieren poco rendimiento
pero tienen mucho consumo, por ejemplo disk
drives, contestadoras - DSP medios
- Mayor frecuencia de reloj 100-120 MIPS
- TI TMS320C54xx, Lucent Technologies DSP16xx
(Familias) - Hardware más sofisticado pipeline, cachés de
instrucciones - Uso productos que requieren alto rendimiento
computacional y poco consumo, por ejemplo
modems de alta velocidad.
30Tipos de DSP
- Alto Rendimiento Procesamiento ultrarrápido,
Diversidad de Arquitecturas. - Convencionales Mejorados
- Inicio de Múltiples Instrucciones por Ciclo
- Convencionales Mejorados
- Se agregan UF (Multiplicadores, Sumadores),
soporte dentro del juego de instrucciones para el
hardware adicional. - Ejemplo Lucent Technologies DSP16210 100MIPS
- Inicio Múltiple
- En GPP, el inicio múltiple se consigue con
técnicas superescalares - En DSP, con VLIW
31VLIW DSPs
- Texas Instruments TMS320C6000 (Fabio)
- 256 bits por instrucción, divididas en 8 palabras
de 32 bits controlan 8 UFs independientes - clock 200Mhz
- MIPS 1600
- Las subinstrucciones son más simples que las de
los DSP convencionales - No siempre están ocupadas todas las UF
- Consumen más energía y los programas ocupan más
memoria que los DSPs convencionales - Compiladores agrupan las instrucciones en
palabras. Si no puede agrupar el conjunto
completo de subinstrucciones, inserta NOPs. - Mecanismo de compresión hardware y software para
solucionar el problema del tamaño del código.
32VLIW DSPs
- Un bit por instrucción se reserva para indicar si
la instrucción se ejecuta en paralelo con sus
vecinas. El bit lo setea el programador o el
compilador.
- Los p bits se escanean de izquiera a derecha. Si
p de la instrucción i es igual a 1, entonces la
instrucción i 1 se ejecuta en paralelo con la
instrucción i. El último p es siempre 0.
33VLIW DSPs
34Ejemplo de código
MPY .M1 A0, A1, A2 ADD .L1 A4, A5,
A2 ADD .L1X A7, B1, A6
- El lenguaje ensamblador especifica, además de los
registros, modos de direccionamiento y operación
a ser realizada, la Unidad Funcional, los Caminos
de Datos utilizados, y el paralelismo entre las
instrucciones.