descargar

Anuncio
Arquitecturas vectoriales,
SIMD y extensiones
multimedia
William Stallings, Organización y Arquitectura de
Computadores, 5ta. ed., Capítulo 16: Procesamiento Paralelo.
Andrew S. Tanenbaum, Organización de Computadoras 4ta.
ed., Capítulo 8: Arquitecturas de computadoras paralelas.
Hesham El-Rewini & Mostafa Abd-El-Barr, Advanced
Computer Architecture and Parallel Processing. Willey.
Taxonomía de Flynn
Procesadores vectoriales
Definición
Implica un repertorio de instrucciones (ISA) con instrucciones que
operen sobre vectores (arreglos unidimensionales de datos), en
contraste con los procesadores escalares, que operan sólo sobre un
único elemento.
Explotación del paralelismo en los datos. No concurrencia.
El concepto está presente en diversas tecnologías.
Supercomputadoras de los 70s. Cray. UF segmentadas.
Array processors de los 90s. Connection Machines. Múltiples UF
simultámeas (SIMD).
Extensiones multimedia de los procesadores de propósitos generales. Desde el Pentium 1997.
Aceleradores gráficos o GPU (Graphics processing unit).
Procesadores vectoriales
Alternativas
Procesadores vectoriales
Supercomputadoras de los 70s
Se trata de procesadores con unidades vectoriales segmentadas,
además de unidades escalares. Cada unidad vectorial dispone de un
banco de registros vectoriales (cada uno con 64 o 128 words) y una
unidad funcional vectorial fuertemente segmentada. Dispone de
instrucciones escalares clásicas e instrucciones vectoriales (load,
store, alu, mixed). El usuario puede operar directamente sobre
vectores en assembler (hoy utilidad relativa).
CD Cyber 205
Cray
IBM 3090
Nec SX
Hitachi S8000
Fujitsu VP
Procesadores vectoriales
IBM 3090 con unidad vectorial
Unidad vectorial, compuesta por:

Unidades funcionales segmentadas

Registros vectoriales
Procesadores vectoriales
ISA
Dispone, además de registros de
m palabras, de algunos registros
especiales: VL (vector length,
l<m) y M (mask, m bits, opera si
1).
Ejemplo:
for(i=0;i<50;i++){
if(a[i]>0)
a[i] = a[i] + 1;
}
R0 <- A(0:49:1)
VL <- #50
M <- R0 > 0
WHERE(M) R0 <- R0 + 1
Arquitecturas SIMD
Single Instruction stream, Multiple Data stream
Constan de una única unidad de control y múltiples unidades
idénticas de procesamiento que realizan la misma instrucción al
unísono. Llamados también Array Processors.
Especializados en problemas numéricos que puedan expresarse
como matrices o vectores. Cada unidad de procesamiento consta de
una ALU y registros, y se utiliza para computar un elemento del
resultado (front-end von Neumann, más un array de procesadores
idénticos que realizan la misma instrucción).
Arquitecturas SIMD
Single Instruction stream, Multiple Data stream
Pueden utilizar memoria compartida o distribuida.
Ejemplo: ILLIAC IV (1970s), 64 procesadores
conectados en una grilla de 8x8. CM-2 (1990s)
de Connection Machines (RIP), 65536
procesadores conectados en hipercubo.
Arquitecturas SIMD
Single Instruction stream, Multiple Data stream
Explotación eficiente del paralelismo en los datos.
Ejemplo: ajuste de volumen de un strem de audio digital o ajuste de
contraste en una imagen (la misma operación se realiza sobre un
número muy grande de datos).
SIMD
Extensiones multimedia
En procesamiento de audio y video
deben manejarse arreglos grandes
de datos de 8 o 16 bits.
Gran potencial para SIMD.
Incorporan características propias
de los DSP.
La idea es utilizar registros de 64
bits para procesar al mismo tiempo
8 palabras de 8 bits, o cuatro de 16
(paralelismo SIMD a escala
reducida).
Pentium MMX y Pentium II: MultiMedia eXtension (enteros),
originario del i860. 57 instrucciones y 8 nuevos registros MM0-MM7
(son los mismos registros del stack de la unidad de punto flotante,
no simultáneos).
Extensiones multimedia (cont)
Ejecuta instrucciones entre las sub-palabras, por ejemplo suma o
MAC, utilizando aritmética de saturación, propio de los DSP. Existen
extensiones para enteros y para punto flotante.
Intel MMX, Pentium II (1997 enteros) -> AMD 3DNow! en K6-2 1999 (fp) -> Intel SSE,
Streaming SIMD Extension, en el Pentium III (fp) 1999 –> SSE2 en P4/Opteron 2001 ->
SSE3 P4/Athlon 2004 –> SSE3 Core2 2006, Advanced Digital Media Boost 128 bits/1c
Además VIS en UltraSPARC, MDMX para MIPS y MAX-2 para HP PA-RISC.
Extensiones multimedia (cont)
MIPS lanzó en 1996 MDMX (MIPS Digital Media Extensions).
32 nuevos registros de 64 bits (media registers), mapeados sobre los
de punto flotante, para ahorrar hardware; y un acumulador de
producto extendido de 192 bits.
Los media registers pueden almacenar dos nuevos tipos de datos:
octo byte (OB) y quad half (QH) que contienen 8 bytes (8-bit) y 4
media-palabra (16-bit) integers.
Variantes de las intrucciones existentes, incluyendo aritmética de
saturación.
Extensiones multimedia PF 128 bits
Nuevas extensiones multimedia
Streaming SIMD Extension 5 (SSE5)
FMA4 instruction set, fused multiply–add
Fused multiply accumulate (FMACxx) instructions (FMA4 extension: single rounding, four
operands d = a + b * c) Ver: https://www.pgroup.com/lit/articles/insider/v3n3a4.htm
Advanced Vector Extensions (AVX2), 256 bits
→ AVX-512
Descargar