1
Prof. Dr. José Antonio de Frutos Redondo Curso 2011-2012
GRADO EN INGENIERÍA DE COMPUTADORES Arquitectura e Ingeniería de Computadores
Departamento de Automática Computadores Vectoriales Organización de memoria
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 2
Computadores vectoriales
n Computadores vectoriales n Procesamiento vectorial n Arquitectura de computadores vectoriales n Organización de los vectores n Computadores vectoriales significativos
n Sistemas de memoria
2
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 3
Procesamiento vectorial
n Nociones sobre procesamiento vectorial
n Computadores vectoriales: n máquinas segmentadas con unidades de ejecución vectoriales; n especialmente diseñadas para optimizar las operaciones con
estructuras vectoriales. n Vector
n Conjunto de datos escalares del mismo tipo almacenados en memoria.
n Procesamiento vectorial n Aplicaciones de procesos sobre vectores.
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 4
Procesamiento vectorial
n Operaciones vectoriales: n repetición de la misma operación sobre un conjunto de datos.
n Estas operaciones se especifican por: n Código de operación
n selecciona la unidad funcional o reconfigura el cauce en cauces dinámicos para la operación solicitada.
n Dirección base de los operadores fuente y destino o los registros vectoriales implicados en la operación.
n Incrementos de dirección entre elementos; n en la mayoría de los casos este incremento tendrá valor 1.
n Longitud de los vectores con los que se va a operar.
3
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 5
Ejemplo de programa vectorial
Bucle DO de FORTRAN en un procesador escalar convencional:
DO 100 I=1,N A(I) = B(I) + C(I)
100 B(I) = 2 * A(I+1)
TEMP(1:N)= A(2:N+1) A(1:N) = B(1:N)+C(1:N) B(1:N) = 2*TEMP(1:N)
Procesamiento vectorial
INITIALIZE I=1 10 READ B(I) READ C(I) ADD B(I) + C(I) STORE A(I) <= B(I)+C(I) READ A(I+1) MULTIPLY 2*A(I+1) STORE B(I) <= 2*A(I+1) INCREMENT I <= I+1 IF I .LE. N GO TO 10 STOP
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 6
Ejemplo de programación vectorial DLXV
Ej.: calcular Y = a*X + Y
ld f0,a addi r4,rx,#512
loop: ld f2,0(rx) multd f2,f0,f2 ld f4,0(ry) addd f4,f2,f4 sd f4,0(ry) addi rx,rx,#8 addi ry,ry,#8 sub r20,r4,rx bnz r20,loop
ld f0,a lv v1,rx multsv v2,f0,v1 lv v3,ry addv v4,v2,v3 sv ry,v4
escalar vectorial
Procesamiento vectorial
4
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 7
Arquitectura de procesadores vectoriales
n Dos tipos:
n Computadores de tipo registro-registro.- CRAY y FUJITSU. El rendimiento depende de la longitud del vector con el que se opere.
n Computadores de tipo memoria-memoria.- CYBER y los primeros computadores vectoriales TI-ASC y STAR-100.
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 8
memoria
carga/almac.
suma/resta en CF
división en CF
multiplicación en CF
enteros
lógicas
registros vectoriales
registros escalares
unidades de ejecución
Arquitectura básica de un computador vectorial
Arquitectura de procesadores vectoriales
5
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 9
Arquitectura de procesadores vectoriales
Elementos de la arquitectura
n Registros vectoriales: n Contienen los operandos vectoriales en máquinas de registros. n No existen si la máquina es memoria-memoria. n Valores típicos de componentes son 64 o 128. n Deben tener al menos 2 puertos de lectura y uno de escritura.
n Unidades funcionales vectoriales: n Ejecutan las operaciones vectoriales. n Están segmentadas y suelen tener latencia 1. n Una unidad de control vigila las dependencias.
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 10
Arquitectura de procesadores vectoriales
Elementos de la arquitectura (II) n Unidad de carga y almacenamiento:
n Gestiona transferencias de vectores desde/a memoria. n Puede estar segmentada. n También puede ocuparse de los datos escalares.
n Registros escalares: n Contienen los operandos escalares. n Se usan en operaciones vectoriales y para calcular direcciones. n Se necesitan varios puertos de lectura y escritura.
n Unidades funcionales escalares: n Pueden existir para operaciones específicamente escalares. n Pueden no existir si para operaciones escalares se usan las
unidades vectoriales
6
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 11
Organización de los vectores
La longitud del vector en la aplicación no tiene por qué coincidir con el tamaño de los registros (generalmente no lo hace)
Solución: se añade un registro escalar llamado VLR (vector
length register, registro de longitud).
n Este registro contiene el número de elementos de los registros que se utilizan en cada operación
n Si un cálculo necesita vectores mayores que los que caben en un registro, se divide en bloques y se hace un bucle (strip-mining)
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 12
Ejemplo de strip-mining:
inicio = 1 VL = (n mod MVL) do 1 j=0,(n/MVL)
do 10 i=inicio,inicio+VL-1 Y(i) = a*X(i)+Y(i) 10 continue inicio = inicio + VL VL = MVL
1 continue
do 10 i=1,n 10 Y(i) = a*X(i) + Y(i)
Organización de los vectores
7
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 13
Ejecución del bucle con strip-mining:
rango de j (índice del bucle externo)
rango de i para cada valor de j (el nº de ejecuciones del bucle interno es m la
primera vez y MVL el resto de veces)
0 1 2 3 … n/MVL
1=>m m + 1=> m + MVL
... ... ... n − MVL + 1 => n
donde: m = n mod MVL
Organización de los vectores
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 14
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
nnnn
n
n
aaa
aaaaaa
...............
...
...
21
22221
11211
Organización de los vectores
El espaciado (‘stride’) de un vector en memoria no tiene por qué ser 1 (es decir, los elementos de un vector pueden no estar contiguos en memoria).
Ejemplo: almacenamiento de una matriz en memoria (por filas)
8
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 15
a11 a12 a13 ... a1n a21 a22 a23 ... a2n ... an1 an2 an3 ... ann
Elementos de un vector fila. Tienen espaciado = 1 componente
a11 a12 a13 ... a1n a21 a22 a23 ... a2n ... an1 an2 an3 ... ann
Elementos de un vector columna. Tienen espaciado = n componentes (1 fila)
Organización de los vectores
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 16
Organización de los vectores
n Solución: se indica el espaciado con un registro específico o con un registro de datos. Se pueden incluir instrucciones específicas para acceso a vectores espaciados, o hacer que las instrucciones de carga y almacenamiento de vectores siempre trabajen con espaciado.
n Ejemplo: en DLX, versión vectorial, existen las instrucciones: n LVWS V1,R1,R2: carga desde la dirección en R1 con el
espaciado que indica R2 en V1
n SVWS R1,R2,V1: almacena V1 a partir de la dirección en R1 con el espaciado que indica R2
9
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 17
Computadores vectoriales significativos
n CRAY 1 (1975)
n En 1979 aparece una versión mejorada CRAY 1S. n Primer computador basado en lógica ECL. n Periodo de reloj 12.5 ns (80 MHz). n Posee 10 cauces funcionales. Dos para direcciones. n Software COS (Cray Operating System) y Fortran 77 n 133 megaflops.
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 18
Ejecución
01
23
00
17Memoria
de instrucciones
NIP CIP
LIP
Registros vectoriales
V0
V1V2
V3V4
V5V6
V7
Cal. inver.Mutiplic.
Suma
UnidadesFuncio-nales
de comaflotante
Desplaz.Lógica
Suma
UnidadesFuncio-nales
vectoriales
Controlvectorial
VM
RTC
00
77
((A0)+(Ak)
Vj
Vk
Vl
Sl
Vj
Vk
VlSj
Sk
Sl
Sj
Sj
S0S0
S2S3
S4S5
S6S7
Desplaz.LógicaSuma
UnidadesFuncio-nales
escalares
Pobl/17Registros escalares
Sj
Sl
Sk
Sj
Tjk
T00
T77
hasta
(AO)
((Ahj + jkm)
((Ahj + jkm)
A0A0A2A3A4A5A6A7
Registros
Aj
Al
Ak
Aj
Bjk
B00
B77
hasta(AO)
de direcciones
Multipli.
Suma
UnidadesFuncio-nales
direcciónde
Ak
AlXAXL
Control deintercambio
controlvectorial
PI
Controlde E/S
memoria
Arquitectura del CRAY 1
10
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 19
Computadores vectoriales significativos
n X-MP (1982)
n 4 CPUs equivalentes a un CRAY 1 con memoria compartida. n Contiene un conjunto de registros compartidos para acelerar las comunicaciones entre CPUs. n Período de reloj de 8.5 ns. (120 MHz.) n 840 Mflops. n UNIX, UNICOS.
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 20
n CRAY Y-MP n Se introduce en 1988 n 8 procesadores n 6 ns de ciclo de reloj.
(160 MHz.) n 128 Mwords de memoria
compartida hasta 1Gwords de SSD.
n En 1990 aparece la versión C 90 con un ciclo de reloj de 4.2 ns
Computadores vectoriales significativos
11
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 21
CRAY SX-6
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 22
n CPU procesador vectorial de 9 Gflops n Hasta 8 CPUs y 128 GB por nodo de memoria compartida
SMP n Ancho de banda de memoria 36 GB/S n Ampliable hasta 128 nodos (1024 CPUs, 9.2 Tflops, 16 TB) n Red de alto rendimiento de barras cruzadas entre nodos (8
GB/s bidireccional) n Arquitectura de I/O ampliable con procesadores I/O
independientes n SUPER-UX sistema operativo basado en UNIX con
características especificas para supercomputación. n Entorno de programación paralelo con compiladores capaces
de vectorizar y optimizar Fortran 95 y C/C++. n Modelos de memoria distribuida y herramientas de
optimización y depuración.
CRAY SX-6
12
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 23
NEC SX-8
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 24
NEC SX-8
13
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 25
FUJITSU VPP5000
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 26
FUJITSU VPP5000
n Tipo de máquina: Multiprocesador vectorial de memoria distribuida. n Sistema operativo: UXP/V (una variante de Unix basada en la V5.4). n Estructura conectiva: Barras cruzadas. n Compiladores: Fortran 90/VP (compilador vectorial de Fortran 90),
Fortran 90/VPP (compilador vectorial paralelo de Fortran 90), C/VP (compilador vectorial de C), C, C++.
n Ciclo de reloj: 3.3 ns n Rendimiento pico teórico:
n 9.6 Gflop/s por procesador (64 bits). n 1.22 Tflop/s máximo (64 bits).
n Memoria principal n Memoria/nodo 16 GB n Memoria máxima 2 TB n Número de procesadores 4-128
n Ancho de banda de memoria 38.4 GB/s n Ancho de banda de comunicaciones 1.6 GB/s
14
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 27
Sistemas de memoria
n En una máquina vectorial, los accesos no son a datos individuales, sino a colecciones de ellos (vectores).
n La distribución de estos datos en memoria sigue una ecuación generalmente sencilla. Por ejemplo, en una matriz almacenada n por filas:
n leer un vector-fila es leer posiciones de memoria consecutivas,
n leer un vector-columna es leer posiciones distanciadas en n, donde n es el número de elementos de una fila.
n El sistema de memoria se diseña de forma que: n se puedan realizar accesos a varios elementos a la vez, n el tiempo de inicio del acceso sea sólo para el primer
elemento.
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 28
Sistemas de memoria
n Se utilizan principalmente dos opciones: n Memoria entrelazada (generalmente de orden inferior, con factor
de entrelazado palabra). n Bancos de memoria independientes.
n La memoria entrelazada tiene un diseño más sencillo y menos costoso, pero menos flexible.
n La memoria en bancos independientes es más costosa (cada banco necesita su bus), pero es más flexible.
n Se puede pensar en soluciones intermedias: memoria en bancos independientes con un bus compartido por todos los bancos.
15
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 29
1
2
3
4
contro- lador
de me-
moria
CPU
Memoria entrelazada
Memoria multi-banco
CPU controlador de memoria
1 2 3 4
Sistemas de memoria
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 30
Ejemplo de funcionamiento: acceso al vector de 8 dobles palabras (8*64b) con dirección 136 (88h)
Memoria entrelazada
000 001 010 palabra del banco nº banco
dir acceso dir acceso dato dir acceso dato dir acceso dato dir acceso dato dir acceso dato dir acceso dato dir acceso dato
Banco 0 Banco 1 Banco 2 Banco 3 Banco 4 Banco 5 Banco 6 Banco 7
136 144 152 160 168 176 184
(192)
Sistemas de memoria
16
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 31
dir acceso dir acceso dato dir acceso dato dir acceso dato dir acceso dato dir acceso dato dir acceso dato dir acceso dato
Banco 0 Banco 1 Banco 2 Banco 3 Banco 4 Banco 5 Banco 6 Banco 7
136 144 152 160 168 176 184
192 dato
Memoria multibanco (bus dedicado)
Ej.: el mismo acceso
Sistemas de memoria
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 32
dir acceso dir acceso dato dir acceso dato dir acceso dato dir acceso dato dir acceso dato dir acceso dato dir acceso dato
136 144 152 160 168 176 184
192 dato
Ej.: el mismo acceso
Memoria multibanco (bus de datos compartido)
Sistemas de memoria
17
© J. A. de Frutos Redondo 2011
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
Vectoriales 33
Sistemas de memoria
n Efecto sobre el sistema de memoria: n Si el espaciado es 1, una memoria entrelazada, o un diseño por
bancos independientes, proporcionan el mejor rendimiento. n Sin embargo, con espaciado no unidad, puede no alcanzarse el
rendimiento óptimo. Ejemplo: si el espaciado es 8, y hay 8 bancos, todos los accesos van al mismo banco (=>secuencialización).
n Por esto, es interesante que el espaciado y el número de bancos sean primos entre sí.
n Como el espaciado es una característica del problema, el compilador puede intervenir si ocurre una coincidencia como la del ejemplo (por ejemplo, añadiendo una columna “hueca” en la matriz).