Está en la página 1de 32

Tema 8

Estructura de Computadores

Procesadores vectoriales
Índice
Esquema 3

Ideas clave 4
8.1. Introducción y objetivos
8.2. Arquitectura vectorial
8.3. El sistema de memoria en procesadores
vectoriales 11
8.4. Medidas de rendimiento en procesadores
vectoriales 13
8.5. Eficiencia del procesamiento vectorial 16

A fondo 18

Test 20

Esquema 3

Ideas clave 4
8.1. Introducción y objetivos
8.2. Arquitectura vectorial
8.3. El sistema de memoria en procesadores
vectoriales 12
8.4. Medidas de rendimiento en procesadores
vectoriales 14
8.5. Eficiencia del procesamiento vectorial 17

A fondo 19

Test 21

Esquema 3

Ideas clave 4
8.1. Introducción y objetivos
8.2. Arquitectura vectorial
8.3. El sistema de memoria en procesadores
vectoriales 12
8.4. Medidas de rendimiento en procesadores
vectoriales 14
8.5. Eficiencia del procesamiento vectorial 17

A fondo 19

Test 21

A. Es un registro escalar que especifica el número de


componentes que se van a procesar. * El VLR controla la
longitud de cualquier operación vectorial incluyendo las
de carga y almacenamiento 23

B. Es un parámetro que indica el número de registros


vectoriales disponibles. 23

C. Es un registro vectorial que especifica el número de


vectores que se van a procesar. 23

Esquema
3

Ideas clave 4
8.1. ¿Cómo estudiar este tema?
8.2. Introducción
8.3. Arquitectura vectorial 13
8.4. El sistema de memoria en procesadores
vectoriales 13
8.5. Medidas de rendimiento en procesadores
vectoriales
8.6. Eficiencia del procesamiento vectorial

A fondo 14

Test 15
Esquema

Estructura de Computadores 4
Tema 8. Esquema
Estructura de Computadores 5
Tema 8. Esquema
Ideas clave

8.1. ¿Cómo estudiar este tema?Introducción y


objetivos

Para estudiar este tema lee el capítulo 6 «Procesadores vectoriales» (páginas 278-
308) del libro:
Ortega, J., Anguita, M. y Prieto, A. (2005). Arquitectura de computadores. Madrid:
Thomson. ISBN: 84-9732-274-6

En este tema se presentan los procesadores vectoriales empezando con su


motivación, ámbito de aplicación y desarrollo histórico.

Posteriormente se presenta una arquitectura vectorial básica, estudiando sus


elementos fundamentales y sus fuentes de incremento de prestaciones.

Más tarde se presentan algunos tipos de configuraciones de memoria adecuados


para el trabajo con vectores.

El tema finaliza definiendo las medidas de evaluación de rendimiento y observando


los conflictos que pueden reducir ese rendimiento.

8.2. Introducción

Los procesadores vectoriales constituyen la arquitectura más frecuente cuando se


pretende aprovechar el paralelismo de datos (cada instrucción vectorial codifica
una operación sobre todos los componentes del vector).

Estructura de Computadores
Tema 8. Ideas clave
Se ajustan a la clase SIMD de la clasificación de Flynn, de hechohecho, es otra forma
de designarlos.

Su desarrollo ha estado tradicionalmente vinculado al cálculo científico.

Se trata de arquitecturas que buscan ejecutar de forma paralela operaciones que se


realizan sobre operandos constituidos por componentes (vectores, matrices…).
Las operaciones sobre vectores presentan propiedades muy adecuadas para el
procesamiento paralelo:
 El cálculo de cada componente del vector resultado es independiente del de los
demás, esto favorece la ejecución en unidades de proceso segmentadas (no hay
conflicto de dependencias entre componentes).

El cálculo de cada componente del vector resultado es independiente del de los


demás, esto favorece la ejecución en unidades de proceso segmentadas (no hay
conflicto de dependencias entre componentes).

⃗A=( a ,a ,...,a ) ¿}¿ ¿⇒ ⃗A+ B⃗ =( a +b ,a +b ,...,a +b ) ¿


1 2 n 1 1 2 2 n n

 Una operación vectorial agrupa una gran cantidad de cálculos. Reduce el número
de instrucciones a ejecutar y sustituye bucle por instrucción (menores riesgos de
control)

Una operación vectorial agrupa una gran cantidad de cálculos. Reduce el número
de instrucciones a ejecutar y sustituye bucle por instrucción (menores riesgos de
control)
ADDV V1,V2,V3 = for i:=1 to n do V1(i):=V2(i)+V3(i)

 Los vectores pueden almacenarse ocupando posiciones adyacentes y las


operaciones vectoriales acceden a varios de ellos: se aprovechan de forma

Estructura de Computadores
Tema 8. Ideas clave
eficiente configuraciones de optimización de memoria (entrelazado…)
mejorando su ancho de banda.

Desde la perspectiva del tipo de paralelismo que explotan, este tipo de


configuraciones se acercan más al explícito de los procesadores VLIW que al
implícito de los superescalares

Tabla 8.1. Cronología de algunos de los principales procesadores vectoriales. Fuente: Ortega et al.,
2005.

La tabla 8.1 es un cuadro resumen de algunas de las máquinas a las que se hace
referencia en el manual de la asignatura y la evolución en el tiempo de este tipo de
procesadores. Deben conocerse, en este sentido, los conceptos de procesador
vectorial de tipo memoria-memoria y registro-registro.

En este capítulo abordaremos los siguientes objetivos:

 Presentar la arquitectura vectorial básica y profundizar en los elementos


fundamentales y el incremento de prestaciones.

Estructura de Computadores
Tema 8. Ideas clave
 Reconocer los tipos de configuraciones de memoria adecuados para trabajar con
vectores.

Estructura de Computadores
Tema 8. Ideas clave
8.23. Arquitectura vectorial

En este apartado se presenta la idea de un procesador vectorial básico y se


particulariza en el procesador DLXV de Hennessy y Patterson (Hennessy & Patterson
(2002). Arquitectura de Computadores: Un enfoque cuantitativo. Madrid. McGraw-
Hill).

En general, la estructura de un procesador vectorial del tipo registro-registro


responde al esquema de la Figura 8.1

Unidad Escalar
Reg. Escalares

Datos Escalares

Control
Cauces Esc.
E/S Flujo
IF ID OF
Cauces Vector.
Instr.

Unidad
LOAD/STORE
Datos Vectoriales
Reg. Vectoriales

Procesador Unidad Vectorial


Vectorial
Memoria
Principal
Figura 8.1. Diagrama de bloques de un procesador vectorial básico. Fuente: Ortega et al., 2005.

Estructura de Computadores
Tema 8. Ideas clave
Se trata de un procesador segmentado en el que las unidades más significativas son:
 La unidad escalar: procesa instrucciones escalares, está internamente
segmentada y respondería a las características de un procesador de este tipo.
Entre otros elementos incorpora un banco de registros escalares (para
operandos enteros o reales) y una serie de cauces escalares para procesar los
diferentes tipos de instrucciones. No presenta ninguna ventaja respecto a un
procesador escalar clásico.
 La unidad vectorial: se ocupa de las instrucciones vectoriales (al menos un
operando fuente vector y operando destino vector). Integrada por un banco de
registros vectoriales (capaz de almacenar las componentes de un vector) y por
unidades de proceso vectorial para operaciones de distinta naturaleza
(operandos enteros, reales o lógicos; operaciones aritméticas o lógicas) que
trabajan con los registros vectoriales y también tienen acceso a los registros
escalares de la otra unidad.

 La unidad de carga/almacenamiento (LOAD/STORE): es la que se encarga de la


transferencia de componentes entre la memoria (donde están los vectores
propiamente dichos) y los registros vectoriales (Se analiza en el apartado
siguiente).

La unidad escalar: procesa instrucciones escalares, está internamente segmentada


y respondería a las características de un procesador de este tipo. Entre otros
elementos incorpora un banco de registros escalares (para operandos enteros o
reales) y una serie de cauces escalares para procesar los diferentes tipos de
instrucciones. No presenta ninguna ventaja respecto a un procesador escalar
clásico.

La unidad vectorial: se ocupa de las instrucciones vectoriales (al menos un


operando fuente vector y operando destino vector): Integrada por un banco de
registros vectoriales (capaz de almacenar las componentes de un vector) y por
unidades de proceso vectorial para operaciones de distinta naturaleza

Estructura de Computadores
Tema 8. Ideas clave
(operandos enteros, reales o lógicos; operaciones aritméticas o lógicas) que
trabajan con los registros vectoriales y también tienen acceso a los registros
escalares de la otra unidad.

La unidad de carga/almacenamiento (LOAD/STORE): es la que se encarga de la


transferencia de componentes entre la memoria (donde están los vectores
propiamente dichos) y los registros vectoriales (Se analiza en el apartado
siguiente).

Las unidades de proceso vectorial estarán internamente segmentadas de modo


que puedan ejecutar simultáneamente la operación que corresponda sobre
componentes distintas (completamente segmentada: una componente procesada
por ciclo).

En relación con la estructura interna del procesador vectorial existen una serie de
parámetros característicos:

 Longitud de palabra: Define el tamaño de operando a usar y con ello el tamaño


en Bytes de los distintos registros (escalar entero o real, componente vectorial).
Puede ser única o distinguir entre valor real (mayor) y valor entero (menor).
 Longitud máxima de vector (MVL, Maximum Vector Length): Parámetro que
especifica el número de componentes que puede albergar un vector. Los
vectores se pueden operar con una sola instrucción, así que, en principio, cuanto
mayor sean, mejor.
 Número de registros en los bancos:
• Registros vectoriales

• Registros escalares enteros


• Registros escalares reales (coma flotante)

 Número y tipo de unidades de proceso vectorial: Dispone de varios cauces


vectoriales independientes con funcionalidades distintas. Incluso puede haber
unidades de proceso replicadas del mismo tipo.

Estructura de Computadores
Tema 8. Ideas clave
Longitud de palabra: Define el tamaño de operando a usar y con ello el tamaño
en Bytes de los distintos registros (escalar entero o real, componente vectorial).
Puede ser única o distinguir entre valor real (mayor) y valor entero (menor).

Longitud máxima de vector (MVL, Maximum Vector Length): Parámetro que


especifica el número de componentes que puede albergar un vector. Los
vectores se pueden operar con una sola instrucción, así que, en principio, cuanto
mayores sean, mejor.

Número de registros en los bancos:


o Registros vectoriales
o Registros escalares enteros
o Registros escalares reales (coma flotante)

Número y tipo de unidades de proceso vectorial: Dispone de varios cauces


vectoriales independientes con funcionalidades distintas. Incluso puede haber
unidades de proceso replicadas del mismo tipo.

En este tipo de procesadores, la segmentación se aplica de forma diversa:


 En el procesamiento de instrucciones se usa para ganar ILP
 En el procesamiento de datos se usa a varios niveles:
• Microsegmentación: Segmentación interna de las unidades vectoriales

• Macrosegmentación: Encadenamiento de las operaciones vectoriales

En el procesamiento de instrucciones se usa para ganar ILP


En el procesamiento de datos se usa a varios niveles:
o Microsegmentación: Segmentación interna de las unidades vectoriales
o Macrosegmentación: Encadenamiento de las operaciones vectoriales

Si se dispone de varios cauces vectoriales segmentados que implementan la misma


operación vectorial (ej. suma), se podrán realizar varias sumas segmentadas a la
vez. Se puede usar para lograr:

Estructura de Computadores
Tema 8. Ideas clave
 Paralelismo funcional: Si las operaciones son de instrucciones diferentes.
 Paralelismo de datos: Si se reparten los elementos de un vector entre los cauces.

Paralelismo funcional: Si las operaciones son de instrucciones diferentes.


Paralelismo de datos: Si se reparten los elementos de un vector entre los cauces.

Procesador DLXV

Procesador didáctico desarrollado por Hennessy y Patterson en 1990 a partir de una


simplificación del CRAY-1. Lo usaremos como ejemplo con posibles variantes en su
estructura original (Hennessy & Patterson, November 23, 2017).

Está formado por:


 8 registros vectoriales (V1 a V8) de 64 componentes de 8 Bytes.
 5 unidades funcionales de cálculo (suma/resta coma flotantes, multiplicación
reales, división reales, operaciones entre enteros y operaciones lógicas)
totalmente segmentadas y una de carga/almacenamiento.
 64 registros escalares.
 32 de 4 Bytes para enteros de propósito general (R0 a R31).
 32 (F0 a F31) de 8 Bytes para datos en coma flotante.

8 registros vectoriales (V1 a V8) de 64 componentes de 8 Bytes.


5 unidades funcionales de cálculo (suma/resta coma flotantes, multiplicación
reales, división reales, operaciones entre enteros y operaciones lógicas)
totalmente segmentadas y una de carga/almacenamiento.
64 registros escalares.
32 de 4 Bytes para enteros de propósito general (R0 a R31).
32 (F0 a F31) de 8 Bytes para datos en coma flotante.

Registros o elementos especiales:


 Longitud máxima de vector (MVL): parámetro de valor 64 en este caso.

Estructura de Computadores
Tema 8. Ideas clave
 Registro longitud de vector (VLR, Vector Length Register): especifica el número
de componentes de vector con el que se va a trabajar. Su valor por defecto es
MVL.
 Vector máscara (VM, Vector Mask): registro vectorial con componentes
booleanas que sirve para seleccionar las componentes que se van a “procesar”
en las operaciones vectoriales.
 Longitud máxima de vector (MVL): parámetro de valor 64 en este caso.
 Registro longitud de vector (VLR, Vector Length Register): especifica el número
de componentes de vector con el que se va a trabajar. Su valor por defecto es
MVL.
 Vector máscara (VM, Vector Mask): Registro vectorial con componentes
booleanas que sirve para seleccionar las componentes que se van a “procesar”
en las operaciones vectoriales.

La Tabla 8.2 muestra las instrucciones más significativas de este procesador y se


describen en el manual de la asignatura (páginas 286 a 288).

Instrucción Descripción
ADDV Vi,Vj,Vk Suma vectorial: Vj+Vk→Vi
ADDSV Vi,Fj,Vk Suma vector/escalar: Fj+Vk→Vi
SUBV Vi,Vj,Vk Resta vectorial: Vj-Vk→Vi
SUBSV Vi,Fj,Vk Resta escalar/vector: Fj-Vk→Vi
SUBVS Vi,Vj,Fk Resta vector/escalar: Vj-Fk→Vi
MULTV Vi,Vj,Vk Multiplicación vectorial:Vj*Vk→Vi
MULTSV Vi,Fj,Vk Multiplicación escalar/vector:Fj*Vk→Vi
DIVV Vi,Vj,Vk División vectorial: Vj/Vk→Vi
DIVSV Vi,Fj,Vk División escalar/vector: Fj/Vk→Vi
DIVVS Vi,Vj,Fk División vector/escalar: Vj/Fk→Vi

LV Vi,Rj Carga: (Rj)→Vi


SV Ri,Vj Almacenamiento: Vj→(Ri)
LVWS Vi,(Rj,Rk) Carga: (Rj)→Vi con separación Rk

Estructura de Computadores
Tema 8. Ideas clave
SVWS (Ri,Rj),Vk Almacenamiento: Vk→(Ri) con separación Rj
LVI Vi,(Rj+Vk) Carga: (Rj)→Vi usando Vk como índice
Almacenamiento: Vk→(Ri) usando Vj como
SVI (Ri+Vj),Vk
índice

CVI Vi,Rj Crea vector índice Vi con separación Rj


S__V Vi,Vj Compara Vi-Vj y actualiza VM(*)
S__SV Fi,Vj Compara Fi-Vj y actualiza VM(*)
POP Ri,VM Nº de unos de VM→Ri
CVM Inicializa VM todo a unos
MOVI2S VLR,Ri Ri→VLR
MOVS2I Ri,VLR VLR→Ri
MOVF2S VM,Fi Fi→VM
MOVS2F Fi,VM VM→Fi
(*)
“__” indica la condición: EQ, NE, GT, GE, LT o LE.

Tabla 8.2. Selección de instrucciones vectoriales del DLXV. Fuente: Hennessy & Patterson., 201702.

8.34. El sistema de memoria en procesadores


vectoriales
La unidad de carga y almacenamiento de un procesador vectorial de tipo registro-
registro busca tener un comportamiento equivalente a una unidad de proceso
totalmente segmentada, para ello la organización de la memoria debe ser
concurrente con este resultado y los accesos a las componentes vectoriales en
memoria se deben realizar a posiciones consecutivas.

Para conseguir una organización adecuada de la memoria se emplea el entrelazado


de memoria, que consiste en distribuir las posiciones de memoria en distintos
módulos, bancos o bloques. Un conjunto de bits de la dirección distinguirá el
módulo y el resto cada posición de memoria dentro del módulo.

Estructura de Computadores
Tema 8. Ideas clave
Figura 8.2. Entrelazado inferior y superior para una memoria de 1MB (2 20B) dividida en 64 (26)
módulos de 16KB (214B). Fuente: Ortega et al., 2005.

El entrelazado admite dos opciones (Figura 8.2):


 Entrelazado de orden superior o alto:
• Usa los bits más significativos de la dirección.
• Crea módulos con posiciones consecutivas.

• Aislamiento de módulos.
 Entrelazado de orden inferior o bajo:
• Usa los bits menos significativos de la dirección.
• Crea módulos con posiciones salteadas.

• Acceso entrelazado o interpaginado.

Entrelazado de orden superior o alto:


o Usa los bits más significativos de la dirección.
o Crea módulos con posiciones consecutivas.
o Aislamiento de módulos.
Entrelazado de orden inferior o bajo:
o Usa los bits menos significativos de la dirección.
o Crea módulos con posiciones salteadas.
o Acceso entrelazado o interpaginado.

La Figura 8.3 muestra el efecto del entrelazado en una memoria de 32 (2 5)


posiciones que se distribuye en 4 (22) módulos de 8 (23) posiciones cada uno.

Estructura de Computadores
Tema 8. Ideas clave
En general las memorias se organizan aprovechando ambos entrelazados.

Respecto a la conexión procesadorconexión procesador-memoria, existen dos


alternativas, que hay que conocer, para organizar el acceso a memoria y obtener un
buen ancho de banda, además ambos pueden usar los dos entrelazados. Se trata
de:
 Organización de memoria de tipo S (simultáneo).
 Organización de memoria de tipo C (concurrente).

Organización de memoria de tipo S (simultáneo).


Organización de memoria de tipo C (concurrente).

Figura 8.3. Ejemplo de entrelazado para una memoria de 32B (2 5B) organizada en 4 (22) módulos de
16KB (23B). Fuente: Ortega et al., 2005.

La finalidad de las dos opciones es la de conseguir un comportamiento segmentado


en las unidades de carga/almacenamiento (LOAD/STORE) del procesador cuando
se transfieren vectores. Esto se podrá garantizar cuando los accesos se realicen a
posiciones consecutivas, no pudiendo garantizar el resultado si el acceso no es

Estructura de Computadores
Tema 8. Ideas clave
consecutivo. Debe tenerse en cuenta el efecto de la distancia o separación entre
elementos (stride).

8.45. Medidas de rendimiento en procesadores


vectoriales
Un procesador vectorial aprovecha el paralelismo de datos que existe en los
vectores (paralelismo explícito) con ello consigue agrupar instrucciones de proceso
de componentes y saltos (bucle) que serían necesarios para ejecutar la operación
equivalente en un procesador escalar.

Además, cada operación vectorial se ejecuta en una unidad funcional segmentada


en la que las componentes del vector resultante se obtienen como un proceso
independiente.

En estas condiciones el tiempo de ejecución de una operación vectorial de k


componentes (con k≤MVL) será:

T k=TLI +k ×TPC [8.1]


Donde:
 TLI es el tiempo de latencia (o tiempo de arranque) de la unidad de proceso.
Equivaldría al tiempo de ejecución de una componente aislada, para una
operación.
 k: número de componentes del vector.
 TPC es el tiempo por componente. Tiempo que tarda en obtenerse una
componente procesada nueva tras la anterior. En un cauce lineal es el tiempo
consumido por cada etapa del cauce.

TLI es el tiempo de latencia (o tiempo de arranque) de la unidad de proceso.


Equivaldría al tiempo de ejecución de una componente aislada, para una
operación.

Estructura de Computadores
Tema 8. Ideas clave
k: número de componentes del vector.
TPC es el tiempo por componente. Tiempo que tarda en obtenerse una
componente procesada nueva tras la anterior. En un cauce lineal es el tiempo
consumido por cada etapa del cauce.

La expresión [8.1] sería aplicable tanto a unidades de proceso vectorial como a la


unidad LOAD/STORE siempre que el acceso sea a posiciones consecutivas o
equivalente.

Además del paralelismo vinculado a los cauces de proceso, un procesador vectorial


puede llegar a aprovechar el paralelismo entre las propias unidades mediante dos
técnicas:
 Solapamiento de cauces: iniciar el proceso de operaciones vectoriales a medida
que se decodifican. Se consiguen grupos de instrucciones con un
comportamiento común (convoyes, para algunos autores). Esta agrupación
estaría limitada por uso del mismo cauce o por dependencia real de operandos.
 Encadenamiento de cauces: permite que un cauce empiece a procesar los
resultados de otro cauce según este va generando componentes. Esta técnica
puede paliar el efecto de la dependencia de operandos porque una operación
dependiente solo debería espera el TLI de la operación de la que depende.

Solapamiento de cauces: iniciar el proceso de operaciones vectoriales a medida


que se decodifican. Se consiguen grupos de instrucciones con un
comportamiento común (convoyes, para algunos autores). Esta agrupación
estaría limitada por uso del mismo cauce o por dependencia real de operandos.
Encadenamiento de cauces: permite que un cauce empiece a procesar los
resultados de otro cauce según este va generando componentes. Esta técnica
puede paliar el efecto de la dependencia de operandos porque una operación
dependiente solo debería espera el TLI de la operación de la que depende.

Estructura de Computadores
Tema 8. Ideas clave
Para implementar estás técnicas se requiere que el procesador disponga de los
recursos hardware adecuados (conexiones entre cauces y registros vectoriales y
entre los propios cauces).

En el manual de la asignatura se presentan diferentes supuestos como ejemplo. Y se


describe cómo tenerlas en cuenta a la hora de evaluar el tiempo de proceso de un
conjunto de instrucciones.
Por último, en la Tabla 8.3 se presentan algunas medidas empleadas en los
procesadores vectoriales para evaluar sus prestaciones al ejecutar un código
determinado (algunos autores presentan los Rs como rendimientos):

Rk: Operaciones por unidad de


(Operaciones vectoriales ejecutadas×k )
tiempo para vector de k Rk =
Tk
componentes
R∞: Operaciones por unidad de
tiempo para un vector de longitud R∞= lim Rk
k →∞
infinita
N1/2: Número de componentes de R∞
RN =
2
un vector para que: 1
2

k
Wk: Productividad (Throughput) W k=
Tk
Rk Wk
E: Eficiencia vectorial E= =Operaciones×
R∞ R∞

Tabla 8.3. Medidas de prestaciones para procesadores vectoriales. Fuente: Ortega et al., 2005.

8.56. Eficiencia del procesamiento vectorial


Estructura de Computadores
Tema 8. Ideas clave
En este apartado se presentan algunas técnicas, que se deben conocer, para
completar las distintas opciones de ejecución en un procesador vectorial como son:
 Troceado de vectores (Strip mining): solución que hay que adoptar cuando
k>MVL. En ese caso es necesario incluir un bucle de ejecución que trabaje sobre
trozos de vector a razón de MVL.
 Uso del VM (vector máscara) en sentencias con instrucciones condicionales.
 Ejecución de arrays mediante agrupación/dispersión (gather-scatter) de las
componentes de los vectores.

Troceado de vectores (Strip mining): solución que hay que adoptar cuando
k>MVL. En ese caso es necesario incluir un bucle de ejecución que trabaje sobre
trozos de vector a razón de MVL.
Uso del VM (vector máscara) en sentencias con instrucciones condicionales.
Ejecución de arrays mediante agrupación/dispersión (gather-scatter) de las
componentes de los vectores.

Teniendo en cuenta la posibilidad de tener que incluir un bucle de troceado, la


evaluación del tiempo de ejecución de un fragmente de código vectorial con
vectores de k componentes quedaría:

k
⌉×( T BUCLE +TLI ) +k ×TPC
T k=T BASE +⌈

MVL
SOBRECARGA ( O K )
[8.2]
Donde:
 TBASE: tiempo consumido por las instrucciones escalares previas al bucle.
 TBUCLE: tiempo asociado al control del bucle.
 TLI: tiempo de inicio del conjunto de instrucciones (se evalúa teniendo en cuenta
solapamientos y encadenamientos).
 k: componentes de vector en el código (si cambia debe tenerse en cuenta).
k
⌈ ⌉
 MVL : cociente por exceso de k y MVL.

Estructura de Computadores
Tema 8. Ideas clave
TBASE: tiempo consumido por las instrucciones escalares previas al bucle.
TBUCLE: tiempo asociado al control del bucle.
TLI: tiempo de inicio del conjunto de instrucciones (se evalúa teniendo en cuenta
solapamientos y encadenamientos).
k: componentes de vector en el código (si cambia debe tenerse en cuenta).
k
⌈ ⌉
MVL : cociente por exceso de k y MVL.

Y también se presentan los conceptos de:


 Tiempo por elemento = Tk/k
 Sobrecarga (Overhead) por elemento = Ok/k

Tiempo por elemento = Tk/k


Sobrecarga (Overhead) por elemento = Ok/k

8.6. Referencias bibliográficas

Hennessy, J. L., & Patterson, D. A. (November 23, 2017). Computer Architecture. A


quantitative Approach. 6th Edition. United States: Morgan Kaufmann
Publishers.
Ortega, J., Anguita, M., & Prieto, A. (2005). Arquitectura de computadores.
Thomson.

Estructura de Computadores
Tema 8. Ideas clave
A fondo
No dejes de leer…

Ejemplos de procesador vectorial

Ortega, J., Anguita, M. y Prieto, A. (2005). Arquitectura de computadores. Madrid:


Thomson. ISBN: 84-9732-274-6

El ejemplo de procesador vectorial presentado en el manual de la asignatura


(páginas 308 a 311).

Procesador vectorial

Hennessy, J. & Patterson, D. (2002). Arquitectura de computadores. Un enfoque


cuantitativo (pp. 377-432). McGraw-Hill.

Para obtener una visión más directa del procesador vectorial y, sobre todo, del
DLXV es muy recomendable leer el capítulo 7: «Procesadores vectoriales».

Accede al documento desde el aula virtual.

Multiprocessors and Thread-Level Parallelism

Keller, R. (1975). Look-ahead processors. Computing Surveys, 7, 177-196.


https://courses.engr.illinois.edu/ece511/fa2003/papers/Keller.1975.CSUR.pdf
© Universidad Internacional de La Rioja (UNIR)
Hennessy, J., y Patterson, D. (2007). Computer Architecture. A Quantitative Approach.
Elsevier.
http://books.google.es/books?id=57UIPoLt3tkC&printsec=frontcover

Estructura de Computadores 24
Tema 8. A fondo
Para profundizar en los conceptos tratados en este tema y observar cómo se han
aplicado las técnicas básicas vistas aquí a procesadores gráficos, sería conveniente
revisar el capítulo 4: «Multiprocessors and Thread-Level Parallelism».

Optimizing the P Optimizing the Performance of P formance of Parallel and


Concurr allel and Concurrent Applications Based on Asynchronous Many-Task
Runtimes

https://digitalcommons.lsu.edu/cgi/viewcontent.cgi?
article=6980&context=gradschool_dissertations

Implementan varias técnicas de optimización. En primer lugar, agregan soporte de


back-end de subprocesos HPX a DCA ++ y logran una aceleración significativa del
rendimiento. En segundo lugar, resuelven un desafío relacionado con la memoria en
DCA++ y desarrollan algoritmos de comunicación basados en anillos utilizando
tecnología GPU RDMA que permiten casos de simulación científica mucho más
grandes. En tercer lugar, exploramos una metodología para usar herramientas
basadas en LLVM para ajustar el DCA++ que apunta al nuevo procesador ARM
A64Fx.

Vector Processing on CPUs and GPUs Compared

https://itnext.io/vector-processing-on-cpus-and-gpus-compared-b1fab24343e6
© Universidad Internacional de La Rioja (UNIR)

Las CPU y GPU modernas pueden procesar una gran cantidad de datos en paralelo,
entonces, ¿qué las hace diferentes exactamente? Esta pregunta se vuelve más

Estructura de Computadores 25
Tema 8. A fondo
relevante a medida que vemos que el procesador Arm agrega extensiones
vectoriales escalables, Intel y AMD agregan AVX a la arquitectura del
microprocesador x86, mientras que RISC-V ha formalizado recientemente sus
extensiones vectoriales RISC-V.
Multiprocessors and Thread-Level Parallelism

Hennessy, J., y Patterson, D. (2007). Computer Architecture. A Quantitative


Approach. Elsevier

Para profundizar en los conceptos tratados en este tema y observar cómo se han
aplicado las técnicas básicas vistas aquí a procesadores gráficos, sería conveniente
revisar el capítulo 4: «Multiprocessors and Thread-Level Parallelism».

Accede al documento desde el aula virtual o a través de la siguiente dirección web:


¡Error! Referencia de hipervínculo no válida.

Compiladores para procesadores vectoriales

Padua, D., Wolfe, M. (1986-diciembre). Advanced Compiler Optimizations for


Supercomputers. Comm. Of the ACM, 29(12), 1184-1201.

El siguiente artículo es una de las referencias históricas sobre el desarrollo de


compiladores para procesadores vectoriales.

Accede al documento desde el aula virtual o a través de la siguiente dirección web:


¡Error! Referencia de hipervínculo no válida.

© Universidad Internacional de La Rioja (UNIR)

Estructura de Computadores 26
Tema 8. A fondo
© Universidad Internacional de La Rioja (UNIR)

Estructura de Computadores 27
Tema 8. A fondo
Test
1. Un procesador vectorial…
A. Accede a memoria de forma secuencial.
B. Aprovecha el paralelismo de datos. * Lo hace a través de SIMD (Single
Instruction, Multiple Data) que es una técnica empleada para conseguir
paralelismo a nivel de datos.
C. Si es de tipo registro—registro no necesita memoria para almacenar
información.
D. Las tres afirmaciones anteriores son correctas.

2. En un procesador vectorial…
A. No se contemplan las dependencias entre componentes de los vectores en
proceso. * El paralelismo viene de que, al operar con matrices,
normalmente, los elementos de las matrices son independientes entre sí,
es decir, no existen dependencias de datos dentro de las propias matrices,
en general.
B. Las componentes se procesan todas al mismo tiempo.
C. No se admiten operandos en coma flotante.
D. Ninguna de las tres respuestas anteriores es correcta.

3. En un procesador vectorial…
A. Solo se trabaja con instrucciones vectoriales.
B. El número de componentes admitidas depende del tamaño de los registros
escalares.
C. Se pueden ejecutar instrucciones escalares y vectoriales al disponer de
sendas unidades de ambos tipos. * los componentes principales del
conjunto de instrucciones comprenden registros vectoriales y registros
escalares.
D. Las tres afirmaciones anteriores son falsas.

Estructura de Computadores 28
Tema 8. Test
4. El MVL de un procesador vectorial…
A. Es un registro que contiene el número de componentes a procesar.
B. Es un parámetro que caracteriza al procesador especificando su número
de registros vectoriales.
C. Es un registro que almacena el número de componentes procesadas.
D. Es un parámetro que caracteriza al procesador especificando el número
máximo de componentes de sus registros vectoriales. *Es la longitud
vectorial máxima definida por el procesador.
5. El VM del procesador vectorial…
A. Es un registro escalar que contiene el número de componentes que se van
a procesar.
B. Es un registro vectorial que almacena temporalmente los procesos en
curso.
C. Es un registro vectorial que identifica las componentes no nulas del
resultado obtenido.
D. Ninguna de las afirmaciones anteriores es cierta. * Vector Mask registro
vectorial con componentes booleanas que sirve para seleccionar las
componentes que se van a “procesar” en las operaciones vectoriales.

6. El TLI de una instrucción vectorial…


A. Es el número de ciclos de reloj necesarios para que se obtenga la primera
componente del resultado. * tiempo de ejecución de una componente
aislada, para una operación.
B. Es el número de ciclos necesario para ejecutar la operación completa.
C. Es el número de ciclos necesario para ejecutar la operación completa
siempre que el número de componentes sea menor o igual que MVL.
D. Es el tiempo que necesita el procesador vectorial para ejecutar una
instrucción de control.

7. La técnica de agrupación/dispersión…
A. Se aplica cuando el tamaño del vector a procesar es menor que MVL.
B. Sirve para optimizar los accesos a memoria.

Estructura de Computadores 29
Tema 8. Test
C. Optimiza el proceso de vectores grandes cuando el número de
componentes que interesa procesar es muy inferior al tamaño total. * El
objetivo es moverse de una representación densa a la dispersa normal y
viceversa
D. Ninguna de las afirmaciones anteriores es cierta.

8. El VLR…
A. Es un registro escalar que especifica el número de componentes que se
van a procesar. * El VLR controla la longitud de cualquier operación
vectorial incluyendo las de carga y almacenamiento
B. Es un parámetro que indica el número de registros vectoriales disponibles.
C. Es un registro vectorial que especifica el número de vectores que se van a
procesar.
D. Es un registro escalar que contiene el orden de multiplicidad de un bucle.

9. Respecto al sistema de memoria de un procesador vectorial, se puede decir:


A. El entrelazado de orden alto garantiza el acceso segmentado a posiciones
de memoria consecutivas.
B. El entrelazado de orden bajo limita el número de componentes que
pueden formar un vector.
C. El entrelazado de orden alto es incompatible con el de orden bajo en una
organización de memoria.
D. Ninguna de las afirmaciones anteriores es correcta. *La organización de la
memoria debe ser concurrente con este resultado y los accesos a las
componentes vectoriales en memoria se deben realizar a posiciones
consecutivas.

10. El encadenamiento de cauces:


A. Agrupa las instrucciones vectoriales según su número de componentes.
B. Permite solapar la ejecución de operaciones vectoriales sin más que
respetar el TLI de la operación precedente. *Esta técnica puede paliar el

Estructura de Computadores 30
Tema 8. Test
efecto de la dependencia de operandos porque una operación
dependiente solo debería espera el TLI de la operación de la que depende.
C. Permite solapar instrucciones siempre que sean de la misma naturaleza.
D. Permite solapar instrucciones a partir de las especificaciones del
compilador, independientemente del hardware del procesador.
E.

Estructura de Computadores 31
Tema 8. Test

También podría gustarte