PDF de programación - Paralelismo en monoprocesadores - Procesadores VLIW

Imágen de pdf Paralelismo en monoprocesadores - Procesadores VLIW

Paralelismo en monoprocesadores - Procesadores VLIWgráfica de visualizaciones

Publicado el 31 de Julio del 2017
1.052 visualizaciones desde el 31 de Julio del 2017
962,2 KB
36 paginas
Creado hace 12a (11/05/2011)
Paralelismo en

monoprocesadores

Procesadores VLIW

Profesor: Mag. Marcelo Tosini
Cátedra: Arquitectura de Computadoras y técnicas Digitales
Carrera: Ingeniería de Sistemas
Ciclo: 4º año

Arquitectura VLIW básica

• Data de principios de los años 70

• Muy apoyada en la tecnología de compiladores que optimicen el código

• Una instrucción especifica varias operacíones agrupadas en un formato

largo de instrucción con longitudes desde 128 a 1024 bits

• La planificación de ejecución de las operaciones es externa al procesador

• El rendimiento del procesador queda determinado por la calidad del

compilador

Formato de instrucciones

Procesador
tradicional

inst 1 (op1)
inst 1 (op1)
inst 2 (op2)
inst 2 (op2)
inst 3 (op3)
inst 3 (op3)
inst 4 (op4)
inst 4 (op4)
inst 5 (op5)
inst 5 (op5)
inst 6 (op6)
inst 6 (op6)
inst 7 (op7)
inst 7 (op7)
inst 8 (op8)
inst 8 (op8)
inst 9 (op9)
inst 9 (op9)
inst 10 (op10)
inst 10 (op10)

100
101
102
103
104
105
106
107
108
109

100
101
102
103
104
105
106
107
108
109

Procesador

VLIW

operación 8
operación 8

NOPNOP
NOPNOP

NOPNOP
NOPNOP

operación 5
operación 5
operación 3
operación 3
operación 7
operación 7

NOPNOP

operación 10
operación 10
operación 9
operación 9

NOPNOP

NOPNOP

operación 1
operación 1

NOPNOP

NOPNOP

operación 2
operación 2

operación 6
operación 6
operación 4
operación 4

NOPNOP
NOPNOP
NOPNOP
NOPNOP

operación 11 operación 12
operación 12
operación 11
operación 14 operación 16
operación 16
operación 14
operación 13
operación 13

operación 15
operación 15

NOPNOP

una instrucción = una operación

una instrucción = varias operaciones

VLIW vs. Superescalar

Dynamic
Dynamic
scheduler
scheduler

32-64 bits

0

1

2

3

4

5

6

Instruction memory

128-512 bits

0

1

2

3

4

5

6

Instruction memory

Superescalar

VLIW

FX 1

FX 2

FP

load/
store

FX 1

FX 2

FP

load/
store

VLIW vs. Superescalar

Diferente división de tareas entre software (compilador) y hardware (procesador)

programa
programa

Optimización
Optimización
(compilador)
(compilador)

Análisis de
Análisis de
dependencias
dependencias
(compilador)
(compilador)

S

u

p

e

r

e

s

c

a

l

a

r

Análisis de
Análisis de
dependencias
dependencias
(procesador)
(procesador)

Planificación y
Planificación y

reserva de recursos
reserva de recursos

(compilador)
(compilador)

Planificación y
Planificación y

reserva de recursos
reserva de recursos

(procesador)
(procesador)

V

L

I

W

Ejecución
Ejecución
(procesador)
(procesador)

VLIW vs. Superescalar

En VLIW no se puede determinar si hay dependencias en ciertos casos

Ejemplo:

lw
sw

r1, 100(r2)
r3, 0(r4)

Procesador superescalar
Procesador superescalar

; si r2 = r4+100, hay dependencia!!!

comprueba si la dirección r2 + 100 es igual a r4 + 0
comprueba si la dirección r2 + 100 es igual a r4 + 0

• igual => secuencializa las instrucciones
• igual => secuencializa las instrucciones
• NO igual => paraleliza las instrucciones
• NO igual => paraleliza las instrucciones

Procesador VLIW
Procesador VLIW

No puede determinarlo => el compilador siempre secuencializa
No puede determinarlo => el compilador siempre secuencializa

Arquitectura VLIW: ventajas

• La planificación de la ejecución estática de instrucciones es

realizada por el compilador:

• Menos lógica en la unidad de control del procesador

• Mayor frecuencia de reloj (organización mas sencilla)

• Mayor disponibilidad de especio para otras unidades

(Pe: unidades funcionales)

• Es una arquitectura muy difundida en circuitos embebidos

• DSP´s
• Multimedia (placas de sonido, video, etc.)

Arquitectura VLIW: Limitaciones
• Tamaño del código

• Mucho desperdicio de memoria por instrucciones NOP

• Compatibilidad de código objeto

• Hay que recompilar todo el código fuente para cada nueva

versión de procesador

• Baja ocupación de las unidades funcionales

• Conflictos en el acceso al banco de registros desde varias unidades

• Conflictos de predicción estática de accesos a memoria

• Imposibilidad de determinación de latencias en caso de posibles

fallos en accesos a Ram o caché

• Dificultades en la predicción estática de saltos

Tamaño del código

nop
load
store
nop
nop

adda
nop
sub
nop
nop

Formato de instrucción
VLIW empaquetado

nop
addb
nop
addc
nop

A

nop
mul
nop
nop
nop

B

Formato de instrucción
VLIW desempaquetado

•útil para ejecución

en las UF

C

D

•útil para almacenar

en la memoria

B1
A0

adda
store

A0
B1

load
sub

C0
C1

addb
addc

D1
A1

mul
nop

0 Separador de instrucciones VLIW (1 = última instrucción)
B

Unidad funcional en la que se ejecutará la instrucción

Tamaño del código

En qué momento se descomprimen las instrucciones de memoria?

• Carga en la I-Caché

• Transferencia de bloques a la cache es lenta

(bus de acceso a RAM cuello de botella)

• El algoritmo de compresión puede ser complejo ya que se

• se ocupa mucho especio de cache si las instrucciones están

dispone de tiempo

descomprimidas

• Lectura de la I-Caché (Fetching)

• En la caché se mantienen las instrucciones empaquetadas

•La descompresión en la etapa de fetching puede ser lenta
(agrega una o más etapas de segmentación al proceso)

Ocupación de las unidades funcionales

Meta principal: Mantener ocupadas todas las unidades funcionales

Problema:

Para N unidades funcionales usables en cada ciclo de reloj

• Se leen 2 operandos fuente por unidad
• Se escribe un resultado por unidad

Register

Bank

UF1

UF2


UFn

Ocupación de las unidades funcionales

Arquitectura del banco de registros

• Área banco de registros ≈ cuadrado del número de puertos

(de entrada o salida)

• Diseño limitado por el número de puertos

read1 A

read1 B

write1

D
o
u
t
1

A

D
o
u
t
1

B

read1 A

read1 B

write1

read2 A

read2 B

write2

D
o
u
t
1

A

D
o
u
t
1

B

D
o
u
t
2

A

D
o
u
t
2

B

Ocupación de las unidades funcionales

Arquitectura del banco de registros

• Tiempo de acceso al banco de registros proporcional al

número de registros

• Al crecer las áreas de celda básica y decodificadores hay mayores

retardos

• A partir de aproximadamente 20 puertos (I/O) la velocidad

se degrada bastante

• Aproximadamente 14 lecturas y 7 escrituras

=> hasta 7 unidades funcionales como máximo

Ocupación de las unidades funcionales

Optimización de la arquitectura del banco de registros

• Particionar el banco de registros en bancos locales a cada
unidad funcional y con canales de comunicación globales

Bus global

Banco de
Banco de
registros
registros

Banco de
Banco de
registros
registros

Banco de
Banco de
registros
registros

Banco de
Banco de
registros
registros

UF1UF1

UF2UF2

UF3UF3

UFnUFn

Planificación del compilador

• La eficiencia del compilador influye mucho en el rendimiento final

de la arquitectura

Rendimiento alcanzado por los compiladores actuales es
inferior al rendimiento potencial máximo que alcanza la
arquitectura

• Código generado por el compilador muy dependiente de la arquitectura

VLIW de destino

Ante actualizaciones de hardware es necesario reescribir el
compilador (mayores costos de actualización)

• Para optimizar mejor el código es útil que el programador ayude al

compilador

Lenguajes deben usar meta comandos (pragmas) especiales

Planificación del compilador

Optimizaciones del compilador: Análisis global del código

• Modificación del código fuente para incrementar el paralelismo a

nivel de instrucción

• Aplicación de técnicas usadas para superescalares:

• Desenrollamiento de lazos
• Segmantación de software
• Actualización de referencias
• Renombre de registros

Planificación del compilador

Ejemplo: Suma de un valor a un arreglo

for (i=10; i>0; i--)

x[i] = x[i] + s;

En ensamblador:

lazo:

ld
addd
sd
subi
bnez

f0, 0(r1)
f4, f0, f2
f4, 0(r1)
r1, r1, #8
r1, lazo

; f0 = x[i]
; f4 = f0 + s
; x[i] = f4
; i--
; if i ≠ 0 goto lazo

Suponer un procesador VLIW de 3 unidades funcionales:

load/store & saltos
load/store & saltos

2 ciclos de reloj

ALU FX
ALU FX

2 ciclos de reloj

ALU FP
ALU FP

3 ciclos de reloj

Planificación del compilador
Instrucciones VLIW del programa

Instr.
Instr.

load/store & saltos
load/store & saltos

ALU FX
ALU FX

11
22
33
44
55
66
77
88
99

ld f0, 0(r1)
ld f0, 0(r1)

nopnop
nopnop
nopnop
nopnop

nopnop
nopnop
nopnop
nopnop
nopnop

sd f4, 0(r1)
sd f4, 0(r1)

subi r1, r1, #8
subi r1, r1, #8

nopnop

bnez r1, lazo
bnez r1, lazo

nopnop

nopnop
nopnop
nopnop

ALU FP
ALU FP

nopnop
nopnop

addd f4, f0, f2
addd f4, f0, f2

nopnop
nopnop
nopnop
nopnop
nopnop
nopnop

Planificación del compilador
Replicación de código

lazo:

ld
addd
sd

lazo:

ld
addd
sd
subi
bnez

f0, 0(r1)
f4, f0, f2
f4, 0(r1)
r1, r1, #8
r1, lazo

ld
addd
sd

ld
addd
sd

ld
addd
sd

ld
addd
sd

subi
bnez

f0, 0(r1)
f4, f0, f2
f4, 0(r1)

f0, 0(r1-8)
f8, f6, f2
f4, 0(r1-8)

f0, 0(r1-16)
f12, f10, f2
f4, 0(r1-16)

f0, 0(r1-24)
f16, f14, f2
f4, 0(r1-24)

f0, 0(r1-32)
f20, f18, f2
f4, 0(r1-32)

r1, r1, #8
r1, lazo

Planificación del compilador
Código VLIW optimizado del programa

Instr.
Instr.

load/store & saltos
load/store & saltos

ALU FX
ALU FX

ALU FP
ALU FP

11
22
33
44
55
66
77
88
99
1010
1111
1212
1313

ld f0, 0(r1)
ld f0, 0(r1)
ld f0, 0(r1-8)
ld f0, 0(r1-8)
ld f0, 0(r1-16)
ld f0, 0(r1-16)
ld f0, 0(r1-24)
ld f0, 0(r1-24)
ld f0, 0(r1-32)
ld f0, 0(r1-32)
sd f0, 0(r1)
sd f0, 0(r1)
sd f0, 0(r1-8)
sd f0, 0(r1-8)
sd f0, 0(r1-16)
sd f0, 0(r1-16)
sd f0, 0(r1-24)
sd f0, 0(r1-24)
sd f0, 0(r1-32)
sd f0, 0(r1-32)

bnez r1, lazo
bnez r1, lazo

nopnop

nopnop

nopnop
nopnop
nopnop
nopnop
nopnop
nopnop
nopnop
nopnop
nopnop

nopnop
nopnop
nopnop

subi r1, r1, #8
subi r1, r1, #8

addd f4, f0, f2
addd f4, f0, f2
addd f8, f6, f2
addd f8, f6, f2
addd f12, f10, f2
addd f12, f10, f2
addd f16, f14, f2
addd f16, f14, f2
addd f20, f18, f2
addd f20, f18, f2

nopnop
nopnop

nopnop
nopnop
nopnop
nopnop
nopnop
nopnop

Instrucciones predicadas

Ante una bifurcación el compilador asigna a las instrucciones de las dos ramas
posibles un predicado a cada una.
De e
  • Links de descarga
http://lwp-l.com/pdf5873

Comentarios de: Paralelismo en monoprocesadores - Procesadores VLIW (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad