Está en la página 1de 8

Estructura y Tecnología de Computadores III - Capítulo 7 -1-

CAPÍTULO 7. PROCESADORES VECTORIALES

¿POR QUÉ MÁQUINAS VECTORIALES?

- Límites de la segmentación:
• Duración del ciclo de reloj.
• Velocidad en la búsqueda y decodificación de
instrucciones.

- Grandes aplicaciones científicas: manejan conjuntos de datos


activos muy grandes con baja localidad de memoria, y consiguen
rendimientos pobres de la jerarquía de memoria.

- Máquinas vectoriales: proporcionan instrucciones que trabajan


sobre vectores.

- Los procesadores vectoriales segmentan las operaciones sobre


los elementos de un vector, tanto la operación aritmética como los
accesos a memoria y cálculo de direcciones efectivas.

- Propiedades de las operaciones vectoriales:


• El cálculo de un resultado es independiente de los
cálculos de los resultados anteriores.
• Especifican el trabajo de todo un bucle: ancho de banda
de instrucciones reducido.
• Acceso a memoria con patrón conocido.
• Se reducen los riesgos de control en bucles.
Estructura y Tecnología de Computadores III - Capítulo 7 -2-

ARQUITECTURA VECTORIAL BÁSICA

- Máquina vectorial:
• Unidad escalar segmentada + unidad vectorial.
• Las unidades funcionales tienen una latencia de varios
ciclos de reloj.
• Ciclo de reloj de pequeña duración.
- Tipos de arquitecturas vectoriales:
• Máquina vectorial con registros.
• Máquina vectorial memoria-memoria.

- Componentes principales del conjunto de instrucciones de una


máquina vectorial con registros (DLXV):
• Registros vectoriales:
∗ Bancos de longitud fija.
∗ Cada banco contiene un vector.
• Unidades funcionales vectoriales:
∗ Totalmente segmentadas.
∗ Pueden comenzar una operación cada ciclo de reloj.
∗ Necesitan una unidad de control para detectar
riesgos estructurales y por dependencia de datos.
• Unidad de carga/almacenamiento de vectores.
• Conjunto de registros escalares.

- Ejecución de instrucciones en DLXV:


• Tiempo de arranque (Ta) (start-up):
∗ Depende de la latencia de las etapas de las unidades
vectoriales.
∗ Dado por el número de etapas de la unidad.
• Velocidad de iniciación (vi):
∗ Tiempo por cada resultado una vez la operación
vectorial está en ejecución.
∗ Dada por la frecuencia con la que la unidad
funcional puede aceptar nuevos operandos.
∗ Normalmente es uno por ciclo de reloj.
Estructura y Tecnología de Computadores III - Capítulo 7 -3-

• Velocidad de terminación: iguala a la de iniciación.

- Tiempo de ejecución de una operación vectorial de longitud n:


T + n ⋅v .
a i
Tuf
• Si vi = 1, entonces p s = , donde
c
ps: profundidad de la segmentación
Tuf: tiempo de la unidad funcional
c: duración del ciclo de reloj.

- Tiempos en una unidad vectorial de carga/almacenamiento:


• Ta en una carga: tiempo de lectura de una palabra en
memoria y su escritura en un registro.
• Ta en un almacenamiento: no se considera.
• vi: velocidad a la que se extraen o almacenan las
siguientes palabras (si no se producen detenciones).

- Memoria: bancos que permiten accesos independientes entre sí.


• Bancos sincronizados.
∗ Accesos síncronos en paralelo.
∗ Los datos se recogen a la vez en un buffer y se
envían uno a uno al procesador, mientras los bancos
pueden servir otra petición.
• Bancos desfasados o asíncronos.
∗ Accesos síncronos en paralelo.
∗ Los datos se leen a la vez, pero los bancos envían
uno a uno los datos al procesador.
∗ Cuando un banco ha transmitido su dato, puede
servir otra petición.
• Si cada banco tiene ancho de palabra de doble precisión,
con vi = 1, el nº de bancos de memoria debe ser mayor o
igual que el nº de ciclos de reloj por acceso al banco.

- El número de bancos de memoria y el de segmentos en las


unidades funcionales son conceptos equivalentes.
Estructura y Tecnología de Computadores III - Capítulo 7 -4-

LONGITUD DE UN VECTOR

- La longitud real de los vectores en un programa no tiene por qué


coincidir con la de los registros vectoriales.

- Registro de longitud vectorial (VLR): controla la longitud de


cualquier operación vectorial, incluso cargas y almacenamientos.

- VLR es menor o igual que la longitud de los registros


vectoriales (VLM: longitud máxima del vector).

- Si la longitud real del vector es mayor que VLM:


seccionamiento (strip mining).

- El cálculo de los costes de arranque se complica (costes de


seccionamiento).

SEPARACIÓN ENTRE LOS ELEMENTOS DE UN VECTOR

- Las operaciones de carga y almacenamiento de vectores deben


especificar la longitud de comienzo y la separación (stride) entre
los elementos que conforman el vector de la operación.

- Conflicto del banco de memoria:


• Pueden pedirse datos a un banco a una frecuencia mayor
que el tiempo de acceso a memoria.
mcm ( s , n b )
• Se presenta si < lm , donde
s
s: separación
nb: número de bancos de memoria
lm: latencia de acceso a memoria en ciclos de reloj.
Estructura y Tecnología de Computadores III - Capítulo 7 -5-

MODELO PARA EL RENDIMIENTO VECTORIAL

- Componentes del tiempo de ejecución de un bucle seccionado:


• Tiempo de cada operación vectorial en el bucle para
procesar un elemento (Tel). Depende de la máquina.
• Coste adicional (overhead) de las instrucciones
vectoriales para cada bloque seccionado, formado por el
tiempo de ejecución del código escalar para
seccionamiento de cada bloque más el coste de arranque
del vector para cada bloque (Tb+Ta), que dependen de la
máquina y del compilador.
• Costes adicionales (overhead) del cálculo de las
direcciones de comienzo y la escritura del vector de
control (Tbase).

- Tiempo total de una operación vectorial de longitud n:


n
Tn = Tbase + ⋅ ( Tb + Ta ) + n ⋅ Tel
MVL
Estructura y Tecnología de Computadores III - Capítulo 7 -6-

TECNOLOGÍA DE COMPILADORES PARA MÁQUINAS


VECTORIALES

- Dependencias entre iteraciones del bucle: cuando una iteración


utiliza un valor calculado en iteraciones anteriores.
• El bucle no será vectorizable.
• Test del máximo común divisor (GCD): si GCD(c,a) es
divisor de (d-b), existe dependencia (el elemento se
almacena con el índice a·j+b, y se lee con el índice
c·k+b).
• Test de Banerjee: tiene en cuenta los extremos del bucle.

- Riesgo RAW: dependencia verdadera de datos.


• Impide la vectorización del bucle.

- Riesgo WAR: antidependencia.


• Se puede eliminar renombrando los registros en el
compilador.

- Riesgo WAW: dependencia de salida.


• Se puede eliminar renombrando registros en el
compilador.

- El compilador deberá:
• Vectorizar bucles.
• Generar código de seccionamiento.
• Asignar registros vectoriales.

- La eficacia de las técnicas de vectorización depende de:


• La estructura del programa: algoritmos escogidos y forma
de codificación.
• La capacidad del compilador.
Estructura y Tecnología de Computadores III - Capítulo 7 -7-

MEJORANDO EL RENDIMIENTO VECTORIAL

- Encadenamiento (chaining):
• Los elementos de un vector se tratan de manera
individual, y se pueden adelantar de una unidad funcional
a otra.
• Las unidades funcionales deben ser distintas.
• vi = 1 si las unidades están totalmente segmentadas.

- Sentencias ejecutadas condicionalmente:


• Vector de control de máscara vectorial (VM): vector
booleano de longitud MVL.
• Cada elemento con valor 1 en VM se ve afectado por la
operación vectorial.
• Hay máquinas que sólo enmascaran el almacenamiento
del elemento, y otras que enmascaran también la
operación.

- Matrices dispersas:
• Dispersar-agrupar (scatter-gather) usando vectores de
índices.
• Es necesario que el programador indique al compilador
que vectorice el bucle.
• Hay máquinas con soporte hardware para crear vectores
de índices dada una cierta separación.
• Vectores de índices comprimidos (booleanos).

- Reducción vectorial:
• Expansión escalar: utilizar un vector intermedio.
• Doblamiento recursivo: secuencias de vectores
progresivamente más cortos.
Estructura y Tecnología de Computadores III - Capítulo 7 -8-

MEDIDAS DEL RENDIMIENTO VECTORIAL

- Rn: velocidad en MFLOPS sobre un vector de longitud n (R∞:


longitud infinita).

- N½: la longitud necesaria para alcanzar la mitad de R∞.

- Nv: longitud del vector para la que el modo vectorial es más


rápido que el escalar.

PIFIAS

- Concentrarse en el rendimiento máximo e ignorar los gastos de


arranque.

- Incrementar el rendimiento vectorial sin hacer incrementos


comparables en el rendimiento escalar.

FALACIAS

- El rendimiento escalar de los supercomputadores es bajo.

- Se puede obtener rendimiento vectorial sin proporcionar


suficiente ancho de banda de memoria.

OBSERVACIONES FINALES

- Las máquinas escalares segmentadas de alta velocidad pueden


superar el rendimiento de las vectoriales (a igualdad de
frecuencias de reloj) si el nivel de vectorización no es muy alto.

También podría gustarte