Sunteți pe pagina 1din 33

Universidad Nacional de Trujillo

FACULTAD DE INGENIERIA
ESCUELA DE INGENIERIA DE SISTEMAS

PROCESAMIENTO SEGMENTADO Y VECTORIAL

DOCENTE:

Ing. ARELLANO SALAZAR, CESAR

GRUPO 4:
CABRERA CARRASCO, Moiss
GARCA ROSAS. Hugo
CALDAS DOMINGUEZ, Roque
ROJAS LOPEZ, Jos

TRUJILLO PER
2016
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

NDICE

INTRODUCCIN..................................................................................................................................iii
CAPTULO 1 ........................................................................................................................................ 1
PROCESAMIENTO SEGMENTADO...................................................................................................... 1
1. CONCEPTO ............................................................................................................................. 2
2. TIPOS ........................................................................................................................................ 5
2.1. SEGMENTACIN DE INSTRUCCIONES .................................................................. 5
2.2. SEGEMENTACIN DE PROCESADORES ............................................................. 11
2.3. SEGMENTACIN ARITMTICA................................................................................ 12
3. CONFLICTOS Y DEPENDENCIAS ................................................................................... 14
3.1. CONFLICTOS ................................................................................................................ 14
3.1.1. CLASES .................................................................................................................. 14
3.2. CONTROL ...................................................................................................................... 14
3.2.1. Conflictos Estructurales: .................................................................................. 14
3.2.2. Conflictos por dependencia de datos: .......................................................... 16
3.2.3. Conflictos de control:......................................................................................... 19
CAPTULO 2 ...................................................................................................................................... 21
PROCESAMIENTO VECTORIAL ......................................................................................................... 21
1. INTRODUCCIN ................................................................................................................... 22
2. CONCEPTO DE PROCESAMIENTO VECTORIAL ........................................................ 23
3. ARQUITECTURA DE LOS PROCESADORES VECTORIALES ................................. 25
4. EL CRAY-1 DE CRAY DE RESEACH .............................................................................. 26
BIBLIOGRAFA ............................................................................................................................. 29

ii
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

INTRODUCCIN
En la actualidad, hay una gran demanda de computadores rpidos para muchos
campos de aplicacin de tipo cientfico, tcnico, mdico, etc. Para muchas de estas
reas de aplicacin, se necesita un gran volumen de clculo. Sin el empleo de
computadores muy potentes, muchos de los clculos precisos para este tipo de
aplicaciones no podran realizarse a una velocidad razonable. Por otra parte, las
tendencias actuales de la ciencia y la tcnica siguen planteando problemas que
exigen cada vez ms y ms potencia de clculo.
Todo esto hace que las prestaciones de los computadores deben mejorar
continuamente. Para ver de una forma ms palpable la necesidad actual de
computadores ms rpidos pondremos un ejemplo: los satlites artificiales envan
informacin a la tierra al ritmo de 1020 bits/sg. Todo este volumen de informacin
se utiliza para efectuar predicciones meteorolgicas, etc. Si queremos procesar
esta informacin con el fin de que los resultados de ese proceso
sean tiles, deben procesarse con una velocidad suficiente. Teniendo en cuenta
que los clculos para este tipo de aplicaciones no son sencillos, se podra estimar
que la velocidad de proceso necesaria, para que los resultados se obtengan antes
de dejar de ser tiles, debe ser de unas 1023operaciones/sg.
Es conocido que la velocidad de los computadores ha ido aumentando con el
tiempo segn las evoluciones de la Tecnologa. En cualquier caso, existen lmites
fsicos para el aumento indefinido de la velocidad de las mquinas (velocidad de la
luz, capacidad de los conductores, disipacin de calor en los circuitos integrados,
etc.). Estas limitaciones provocan que se busquen nuevas alternativas para
aumentar las prestaciones de las mquinas. Una de las alternativas que
resulta ms evidente es poner a trabajar varios elementos de proceso
simultneamente, dicho de otra forma, tratar de desarrollar el paralelismo; as el
trabajo se repartir y se tardar menos tiempo en completar el proceso de clculo.

iii
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

CAPTULO 1
PROCESAMIENTO SEGMENTADO

1
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

1. CONCEPTO

El Paralelismo en la informtica, es una funcin que realiza el procesador para


ejecutar varias tareas al mismo tiempo. Es decir, puede realizar varios clculos
simultneamente, basado en el principio de dividir los problemas grandes para
obtener varios problemas pequeos, que son posteriormente solucionados en
paralelo.

El paralelismo a Nivel intrainstruccin: explota el paralelismo dentro de cada


instruccin, ejecutando de forma simultnea varias acciones de cara a la ejecucin
de las instrucciones. Un ejemplo de este nivel de paralelismo lo constituyen los
procesadores segmentados. En ellos se divide la ejecucin de cada instruccin en
pasos, y cada paso es ejecutado por una etapa diferente del procesador
(segmento), de forma que pueden ejecutarse simultneamente acciones diferentes
de distintas instrucciones.

La segmentacin (pipelining) es una tcnica de implementacin de procesadores


que desarrolla el paralelismo a nivel intrainstruccin. Mediante la segmentacin se
puede solapar la ejecucin de mltiples instrucciones. El procesamiento
segmentado aprovecha la misma filosofa de trabajo de la fabricacin en cadena:
cada etapa de la segmentacin (o segmento) completa una parte (subtarea) de la
tarea total. Los segmentos estn conectados cada uno con el siguiente, de forma
que la salida de uno pasa a ser la entrada del siguiente. As, los segmentos
configuran un cauce a travs del que se va procesando la tarea deseada (por ello,
en algunas ocasiones, a los procesadores segmentados tambin se les llama
procesadores encauzados o, simplemente, cauces). Lo ms interesante de la
segmentacin es que las diferentes subtareas pueden procesarse de forma
simultnea, aunque sea sobre diferentes datos.

Una contribucin clave de la segmentacin es la posibilidad de comenzar una


nueva tarea sin necesidad de que la anterior se haya terminado. La medida de la
eficacia de un procesador segmentado no es el tiempo total transcurrido desde que
se comienza una determinada tarea hasta que se termina (tiempo de latencia del
procesador), sino el tiempo mximo que puede pasar entre la finalizacin de dos
tareas consecutivas.

2
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

Evidentemente, la segmentacin no es posible sin incrementar los recursos de


proceso, de la misma manera que la fabricacin en cadena no es posible sin
aumentar el nmero de operarios. Por ello, los procesadores segmentados
necesitan redundancia de muchos recursos: registros, circuitos aritmticos, etc.

Considrese una tarea, compuesta por n subtareas. Si estas subtareas se procesan


de forma totalmente secuencial, el tiempo necesario para procesar la tarea total
ser la suma de los tiempos necesarios para la terminacin de cada una de las
subtareas (figura 1). En este esquema, Tj i representa la subtarea j dentro de la
tarea i. Por otra parte, para comenzar el tratamiento de una nueva tarea ser
necesario esperar ese mismo tiempo. Esto se debe a que habr algunas unidades
funcionales que sern necesarias para llevar a cabo varias de las subtareas y, por
ello, esas subtareas no podrn superponerse en el tiempo.

Figura 0: Tarea Procesada Totalmente Secuencial

Si, para procesar esa misma tarea, se emplea un procesador segmentado, basta
que se haya terminado la primera subtarea para poder empezar a procesar una
nueva tarea (vase la figura 2). En la citada figura puede verse el continuo flujo de
tareas que se van procesando a travs de los n segmentos encargados de procesar
cada una de las subtareas. Puede observarse que el tiempo total de procesamiento
de una tarea completa puede ser el mismo, aunque frecuentemente ser mayor,
que el tiempo empleado para el procesamiento secuencial de la misma tarea
mostrado en la figura 1. Esto, sin embargo, carece de importancia, ya que lo
verdaderamente importante es el ritmo al que las tareas van saliendo del
procesador (velocidad de emisin de tareas). Al nmero de segmentos del
procesador, n, se le llama, en muchas ocasiones, profundidad de la segmentacin.

3
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

Para que el tiempo de latencia del procesador segmentado sea el mnimo posible,
es necesario que el procesador est equilibrado, es decir, que todas las subtareas
en que se ha dividido la tarea total tarden en procesarse el mismo tiempo. Esto es
debido a que las tareas no podrn evolucionar al segmento siguiente hasta que no
se haya terminado la subtarea ms lenta. Por ello, si el procesador no est
equilibrado, los segmentos ms rpidos estarn cierto tiempo sin hacer trabajo
alguno, lo que disminuir el rendimiento del procesador. La relacin de precedencia
de un conjunto de subtareas T1, ..., Tn, que componen cierta tarea T , especfica
para cada subtarea Tj, que sta no puede comenzar hasta que haya terminado
ciertas subtareas Ti. Las relaciones de precedencia para todas las subtareas de T
forman su grafo de procedencia. En el ejemplo de la figura 1.2 se ha supuesto que
las tareas que se procesan en el cauce tiene un grafo de procedencia lineal. Esto
significa que una subtarea Tj no puede comenzar hasta que todas las subtareas
previas, es decir Ti, i < j, hayan finalizado. A los procesadores segmentados que
slo pueden procesar tareas con grafo de precedencia de este tipo, denominado
cauces lineales. Ms adelante veremos casos de procesadores segmentados en
que se pueden procesar tareas con grafo de procedencia no lneas. En este tipo de
cauces, algunas de las subtareas pueden ejecutarse varias veces para procesar la
tarea total. Ello implica que algunas de las etapas pueden utilizarse varias veces,
provocando una realimentacin dentro del cauce.

Figura 1. Tarea Ejecutada Mediante Un Procesador Segmentado

4
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

2. TIPOS

Puede establecerse una clasificacin de los procesadores segmentados


atendiendo al uso que se da a la segmentacin. Esta clasificacin fue propuesta
por Hndler (1977).

2.1. SEGMENTACIN DE INSTRUCCIONES

La ejecucin de un flujo de instrucciones puede adoptar una estructura segmentada


que permita el solapamiento de la ejecucin de una instruccin con la lectura,
decodificacin, bsqueda de operandos, etc. de las instrucciones siguientes. Esta
tcnica tambin se denomina anticipacin de instrucciones (instruction lookahead).

La segmentacin o pipeline es una tcnica de realizacin de procesadores por la


cual se solapa la ejecucin de las instrucciones. Hoy en da es la tcnica clave para
la realizacin de CPU rpidas.

La idea bsica de la segmentacin se puede extraer de una cadena de montaje de


coches. Los coches no se montan uno a uno, si no que su construccin se divide
en fases sucesivas y el montaje del coche se realiza tal como este va avanzando
por estas fases. De esta forma cada fase est trabajando simultneamente en la
construccin de un coche diferente. De esta forma, la construccin de un coche
cuesta el mismo tiempo que antes, pero ahora la frecuencia con que salen los
coches construidos es mucho mayor (tantos como fases tenga su construccin).

Cada uno de estas fases se denomina segmento o etapa de segmentacin. Al igual


que en los coches, la productividad de un computador va a depender del nmero
de instrucciones que acaben por unidad de tiempo, y no de lo que le cueste a una
instruccin individual.

Segmentacin para DLX.

Si queremos aplicar la tcnica de la segmentacin a la ejecucin de instrucciones,


deberemos dividir la ejecucin de las mismas en una serie de etapas. Por ejemplo,
en DLX la ejecucin de una instruccin se divide en 5 etapas:

IF: Lectura de instruccin.


ID: Decodificacin de Instruccin y lectura de registros.

5
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

EXE: Ejecucin de la instruccin.


MEM: Acceso a memoria de datos.
REG: Acceso a banco de registros.

La realizacin de cada etapa de segmentacin es un ciclo mquina. Esta duracin


est determinada por la duracin de la etapa ms lenta. Con frecuencia el ciclo
mquina es un ciclo de reloj (a veces dos), aunque el reloj puede tener mltiples
fases.

El objetivo del diseador de computadores es equilibrar correctamente el diseo de


cada segmento para que todos tengan la misma duracin. Si esto es as, entonces
la duracin de una instruccin ser (si no hay atascos):

De forma ideal, el avance en rapidez del procesador por la segmentacin se ve


multiplicado por el nmero de etapas que dispongamos. Pero en la realidad no es
exactamente as, las etapas no suelen estar perfectamente equilibradas y siempre
surgen atascos en la ejecucin de las instrucciones que hacen que no siempre se
superponga su ejecucin perfectamente (se suele obtener un 10% menos de
rapidez de la prevista en el caso ideal).

La segmentacin es una tcnica no visible al programador, que consigue una


reduccin en el tiempo de ejecucin medio por instruccin. Esta tcnica que explota
el paralelismo entre instrucciones secuenciales.

La segmentacin es una tcnica de diseo de procesadores que se viene


empleando desde la tercera generacin de computadores. En la figura siguiente
podemos ver como se han diseado los procesadores en cada generacin.

6
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

Figura 3: Diagramas de ejecucin de 5 generaciones de microprocesadores

Figura 4: Diagramas de ejecucin de 5 generaciones de microprocesadores

7
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

En las dos figuras siguientes se puede observar cmo funciona la segmentacin


cuando se ejecutan varias instrucciones sobre un procesador segmentado. La
figura 5 es en el caso ideal, y la figura 6 en el caso real.

Figura 5: Segmentacin caso ideal

Figura 6: Segmentacin caso real. Se introducen numerosos retardos en la


ejecucin de las instrucciones.

8
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

En la figura 7 se muestra un ejemplo de segmentacin de instrucciones. La citada


figura corresponde a un computador de tipo registro-registro, es decir, un
computador en que los accesos a memoria estn restringidos a instrucciones
especficas (LOAD y STORE), y en que el modo de direccionamiento empleado
para estos accesos a memoria y para las bifurcaciones, es el relativo al contador
de programa. Se supone que el computador dispone de arquitectura Harvard, es
decir, que posee memorias cach separadas para cdigo y datos. En el ejemplo,
se ha dividido la ejecucin completa de cada instruccin en cuatro segmentos:

Lectura.
Decodificacin y lectura de operandos.
Ejecucin.
Acceso a la memoria de datos (si es necesario).

Prcticamente, todos los computadores actuales disponen de segmentacin de


instrucciones.

Figura 7. Ejemplo de segmentacin de instrucciones.

9
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

Ejemplo 1: Sea un procesador segmentado en 5 etapas con una duracin de (50,


50, 60, 50, 50) n seg de duracin para cada una de las etapas. Es decir, cuando
ejecuta una instruccin de forma no segmentada, tarda 260 n seg en ejecutarla. Si
este mismo procesador lo diseamos de forma segmentada, deberemos aadir 5
nseg. A cada etapa debido al retardo de los biestables que almacenan la
informacin entre etapas.

Ver el esquema siguiente:

Figura 8. Ejecucin no segmentada

Figura 9. Ejecucin segmentada

La pregunta es, cuando ejecutamos N=10 instrucciones, qu aceleracin y que


eficiencia se consiguen? Realizar los clculos de la Aceleracin y la Eficiencia
para cuando procesamos N = 4 y N = 32 instrucciones. (Importante: Usar siempre
las frmulas de este ejemplo).

10
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

2.2. SEGEMENTACIN DE PROCESADORES

Este tipo de procesamiento se produce cuando el mismo flujo de datos es tratado


por una serie de procesadores, de forma que cada uno de ellos efecte una
subtarea del proceso total. Cada procesador dejar sus resultados en una memoria,
que tambin ser accesible desde el siguiente, para que ste procese esos
resultados para ejecutar la siguiente subtarea sobre el flujo de datos. Este tipo de
segmentacin se emplea solamente en procesadores vectoriales de muy altas
prestaciones.

Por otra parte, los procesadores segmentados pueden ser tanto mono funcin como
multifuncin. Los primeros slo pueden realizar una funcin fija; por el contrario, los
procesadores segmentados multifuncin pueden efectuar diferentes funciones, en
instantes distintos, conectando de formas diferentes los segmentos del cauce.

Los procesadores segmentados multifuncin son estticamente configurables si no


pueden cambiar su configuracin mientras se est ejecutando una funcin; esto
implica que no pueden ejecutarse varias funciones diferentes al mismo tiempo. Por
el contrario son dinmicamente configurables si pueden cambiar su configuracin
en cualquier momento; por ello, los cauces de este tipo pueden mantener varias
configuraciones simultneas y, por tanto, ejecutar varias funciones diferentes a la
vez.

Para que estos conceptos puedan apreciarse ms claramente, pondremos como


ejemplo el procesador segmentado que se mostr en la figura 7. En este cauce
podran ejecutarse diferentes clases de instrucciones, utilizando cada una de ellas
diferentes etapas: por ejemplo, una instruccin de bifurcacin slo empleara las
etapas A, B y C; sin embargo, una instruccin de almacenamiento de datos en
memoria (STORE) empleara las etapas A, B, C y D; por otra parte, una instruccin
de carga (LOAD) empleara las etapas A, B, C, D y escribira el resultado en uno
de los registros del banco, por lo que volvera a emplear parte de la etapa B; por
ltimo, una instruccin aritmtica pasara por las etapas A, B, C y depositara el
resultado en un registro, por lo que tendra que emplear nuevamente la etapa B.

Un cauce multifuncin sera capaz de efectuar todas las operaciones anteriores con
los mismos segmentos, combinndolos de forma diferente en cada caso. Si este

11
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

cauce pudiera estar ejecutando al mismo tiempo diferentes clases de instrucciones


(evidentemente en diferentes etapas), sera un cauce dinmicamente configurable.

2.3. SEGMENTACIN ARITMTICA

La ALU de un computador puede segmentarse para la ejecucin de algoritmos


aritmticos complejos. La segmentacin aritmtica es muy til para procesar
instrucciones vectoriales, es decir, operaciones que deben repetirse de la misma
forma sobre todas las componentes de un vector; esto se consigue provocando que
un segmento de la unidad aritmtica trabaje sobre una de las componentes,
mientras los dems trabajan sobre las componentes siguientes, realizndose as
las diferentes subfunciones necesarias para la ejecucin de la operacin aritmtica.
En la actualidad, este tipo de segmentacin se emplea en muchos procesadores
para ejecutar operaciones aritmticas con nmeros representados en punto
flotante. Un ejemplo clsico de este tipo de procesadores es el multiplicador
segmentado basado en un rbol de Wallace, tal como se muestra en la figura 10.
En esta figura, los bloques CSA representan a sumadores con salvaguarda de
llevadas y los bloques CLA, a sumadores con generacin anticipada de llevadas.
Las lneas inclinadas hacia la izquierda indican que los vectores de llevadas deben
desplazarse a la izquierda un lugar antes de entrar en la etapa siguiente (vase,
por ejemplo, (Bastida, 1995)). Por otra parte, es necesario sealar que las sumas
deben efectuarse con extensin de signo y que es necesario dejar bits de guarda
para tener en cuenta las posibles llevadas salientes.

Las cajas sombreadas representan registros cerrojos (latchs) que, en este caso, se
llaman registros de segmentacin. Estos registros retienen las informaciones
salientes de cada etapa durante un ciclo de reloj para que se mantengan en la
entrada de la siguiente etapa.

Se ha supuesto que el retardo del sumador con anticipacin es doble que el del
sumador con salvaguarda de llevadas.

12
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

Figura 10. Multiplicador segmentado basado en un rbol de Wallace.

13
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

3. CONFLICTOS Y DEPENDENCIAS
3.1. CONFLICTOS

Estos suceden cuando hay circunstancias que pueden disminuir el rendimiento de


un procesador segmentado porque provocan la detencin del cauce.

3.1.1. CLASES
A. Conflictos estructurales: Son detenciones que se producen en el
procesador por insuficiencia del hardware, debido a que una etapa no puede
avanzar porque el hardware necesario ese siendo utilizado.
B. Conflictos por dependencia de datos: Se producen cuando principalmente
una instruccin necesita los resultados de otra anterior, que todava no los
tiene disponibles, por no haberse terminado de ejecutar completamente.
C. Conflictos de control: Surgen cuando las instrucciones de control de flujo,
en que no se puede leer la instruccin siguiente hasta que no se conozca su
direccin.
3.2. CONTROL

En esta parte estudiaremos las tcnicas para detectar, prevenir o evitar los
diferentes tipos de conflictos; adems veremos la forma de conseguir que causen
la menor prdida posible de rendimiento una vez que ya se han producido.

3.2.1. Conflictos Estructurales:

En los cauces de monofuncin, se resuelven, aumentado las posibilidades del


hardware duplicando todos los recursos que sea necesario.

Uno de los conflictos estructurales en los cauces de monofuncin son los


relacionados con los accesos a memoria.

Ejemplo: se produce un conflicto cuando una etapa trate de acceder a memoria


para leer una instruccin y otra lo haga para acceder a un dato.

Se resuelven, en primer lugar, mediante la arquitectura Harvard en que existen


memorias cach diferenciadas para cdigo y datos. Aun as, podr mantenerse
algn conflicto ya sea por accesos simultneos a datos por parte de varios
segmentos, esto se puede evitar agregando nuevos puertos a la cache de datos o,

14
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

tambin, limitando a los accesos a datos a determinadas instrucciones para que


sea difcil que se superpongan (arquitecturas registro-registro o de carga-
almacenamiento). Tambin hay la posibilidad que el compilador tenga en cuenta la
estructura del procesador, detecte este tipo de conflictos y cuando ello ocurra,
intente modificar el orden de ejecucin de las instrucciones, siempre que sea
posible, para intentar evitarlos.

En los cauces no lineales, el control de estos conflictos adquiere una nueva


dimensin. El problema todava se agrava ms en los cauces multifuncin
dinmicamente configurables. En estos cauces existe la posibilidad del uso
simultneo de varios segmentos por parte de ejecuciones distintas de la misma
funcin o por varias de las funciones. Este tipo de conflictos se denominan
colisiones el control de colisiones se hace ms complejo si el grafo de precedencia
de las tareas no es lineal. Las tcnicas de prevencin de colisiones se basan en las
tablas de reserva.

La tabla de reserva contiene la informacin sobre la ocupacin de cada segmento


en cada uno de los ciclos maquina hasta que termine de ejecutare cierta tarea. Las
filas de la tabla representan cada a cada uno de los segmentos y las columnas
representan los ciclos necesarios para la ejecucin de la tarea.

Figura 11. Tabla para instrucciones aritmticas

Figura 12. Tabla para instrucciones de carga.

15
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

Figura 13. Sistema de prevencin de colisiones para un cauce


de monofuncin.

3.2.2. Conflictos por dependencia de datos:

Supongamos dos instrucciones A y B que se ejecutan en ese mismo orden en un


procesador segmentado de instrucciones. Las dependencias de datos que se
pueden presentar de tres clases:

RAW (read after write, lectura despus de escritura):


La instruccin B trata de leer un operando antes de que la instruccin A lo
haya escrito; de esta forma; B puede tomar un valor incorrecto de ese
operando. Este es el tipo de dependencia ms comn.
WAR (write after read, escritura despus de lectura):
La instruccin B trata de escribir en un registro antes de que sea ledo por la
A; por ello, A tomara un valor incorrecto, ya que debera tomas el valor antes
de modificarse. Este riesgo es poco frecuente, debido a que la escritura de
los resultados se efecta en los ltimos segmentos y es difcil que esa
escritura se adelante al segmento de lectura de una instruccin anterior. Se
podra presentar en procesadores con autoindexacin.

16
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

WAW (write after write, escritura despus de la escritura):


La instruccin B intenta escribir un operando antes de que sea escrito por la
A. Dado que las escrituras se estn realizando en orden incorrecto, el
resultado final depositado es el correspondiente a la instruccin A cuando
debera ser depositado por la B. Sol se presenta en procesadores
segmentados que escriben en ms de una etapa y este no es muy frecuente.

Estas tcnicas para detectar los conflictos por dependencias de datos. Estas
tcnicas precisan algo de hardware adicional: unos buffers, que guarden los
nmeros de los registros implicados en las ltimas instrucciones, junto con unos
compradores. Los buffers tendrn una estructura de registro de desplazamiento, de
forma que la posicin del nmero de registro dentro del desplazador nos dir en
que segmento se encuentra y la clase de operacin que se efecta sobre el (lectura
o escritura). Los comparadores analizaron si coinciden los operandos de la
instruccin que va a ejecutarse, con los de alguna de las anteriores con las que
pueda entrar en conflicto, como primera solucin, se detendr la ejecucin de la
instruccin hasta que las anteriores hayan avanzado y la dependencia
desaparezca. En este caso se impide la emisin de la instruccin, ya que se llama
as al paso de la instruccin de la etapa de decodificacin a la siguiente, donde
comienza la ejecucin efectiva de la instruccin.

La solucin para reducir la duracin de estas detenciones es hacer uso del


resultado, en cuando se disponga de l, aunque no se haya escrito en el registro
afectado, este mtodo se llama anticipacin.

Existen tambin tcnicas para evitar las posibles detenciones que podra producir
un conflicto. Estos mtodos se pueden clasificarse en dos grupos:

Planificacin esttica: Consiste en habilitar el medio software para que el


compilador detecte los riesgos y cambie el orden de las instrucciones que
los produce en la medida de lo posible. Si el compilador no encuentra
ninguna instruccin que pueda evitar la detencin, insertara una instruccin
NOP (no operacin) para dejar un lugar libre en la cadena de procesamiento
sin tener que efectuar una detencin.

17
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

Planificacin dinmica: con esta clase de mtodos es el propio procesador,


durante la ejecucin de instrucciones, el que cambia el orden de emisin de
las mismas para mantener los segmentos del cauce tan ocupados como sea
posible. Existen dos mtodos para implementa esta planificacin:
El marcaje: un marcador es un sistema de tablas que tienen
informacin sobre la ocupacin de los recursos de la mquina.
Mediante el marcador podemos saber cundo una instruccin tiene o
no dependencias endiente. Si tuviera alguna dependencia, aplazamos
su emisin intentndola con otra instruccin posterior en que esas
dependencias no se produzcan. El emitir las instrucciones fuera de
orden puede tener el inconveniente de que se puedan reducir nuevos
riesgos que tambin debern ser considerados por el marcador.
Algoritmo de Tomasulo: es similar al de marcadores, pero se
diferencia de que la informacin sobre la ocupacin de recursos est
distribuida en llamadas estaciones de reserva. Cada unidad funcional
tiene una estacin de reserva que controla cuando comenzar una
nueva operacin en esa unidad funcional, es decir cuando sus
operandos estn listos.

Figura 13. Ejecucin de instrucciones sin bifurcaciones

Figura 14. Detencin producida por un conflicto de control

18
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

3.2.3. Conflictos de control:

Este tipo de conflictos se producen en los procesadores de instrucciones


segmentados. Los conflictos de control se deben a las instrucciones de control del
flujo, que no permiten que se lea la instruccin siguiente hasta que no se conozca
su direccin (que precisamente es calculada por la propia instruccin de control de
flujo). Parece claro que una instruccin de control de flujo provocar una detencin
del procesador, ya que el clculo de la direccin de destino, al menos en principio,
se efecta en la fase de escritura de resultado (de la instruccin de control) y esta
fase suele ser la ltima. Esto es especialmente vlido en las instrucciones de
bifurcacin condicional. Conflictos de esta misma ndole se producen tambin
debido a los desvos e interrupciones. En estos casos, los conflictos son ms graves
porque no estn previstos en el programa y, por tanto, son mucho ms difciles de
controlar.
Una de las soluciones para evitar estas prdidas de rendimiento es hacer que el
compilador encuentre algo til para hacer mientras calcula la direccin del destino
del salto. Esto se conseguir reordenando las instrucciones de la misma forma que
se haca en la planificacin esttica de los riesgos por dependencias de datos. Si
el compilador no pudiera encontrar ninguna instruccin para ocupar los huecos
libres dejados por la instruccin de salto, rellenara con instrucciones NOP. Para
llevar a cabo este mtodo, denominado bifurcacin retardada, tienen que ponerse
de acuerdo en la forma de operar el hardware y el compilador.

Efecto de la bifurcacin retardada:

Figura 15. Detencin producida por una bifurcacin sin tomar medidas
correctoras.

19
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

Figura 16. Efecto del cambio de orden de las instrucciones producido por un
compilador en una mquina con bifurcacin retardada.

20
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

CAPTULO 2
PROCESAMIENTO VECTORIAL

21
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

1. INTRODUCCIN

Para una mejor comprensin empecemos con unas definiciones previas:

Se llama vector a una secuencia de datos escalares del mismo tipo almacenados
en memoria, normalmente en posiciones contiguas, aunque no siempre. Para
ilustrar este hecho, supngase una matriz bidimensional almacenada en memoria
por filas. En esta matriz, podramos considerar vectores a las filas, columnas o
diagonales; en este caso, slo las filas estarn en posiciones contiguas de
memoria.

Figura 17. Procesador Vectorial

Un procesador vectorial es un conjunto de recursos para efectuar operaciones


sobre vectores. Estas operaciones consistirn en funciones aritmticas y lgicas
aplicadas sobre las componentes de los vectores. La diferencia entre un procesador
vectorial y uno escalar estriba en que el procesador vectorial puede decodificar
instrucciones cuyos operandos son vectores completos. La conversin de un
programa correspondiente a un procesador escalar a otro vectorial se llama
vectorizacin.

La gran mayora de las CPU de hoy en da son escalares o superescalares. Los


procesadores vectoriales son muy comunes en el rea de la computacin cientfica,
formando la base de la mayor parte de los supercomputadores durante los aos 80
y 90. Sin embargo, parece claro que la mejora de la tecnologa y de los diseos de
procesadores van a acabar con el uso de procesadores vectoriales como
procesadores de propsito general. IBM, Toshiba y Sony han anunciado el
procesador Cell, que est formado en parte por procesadores vectoriales.

22
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

Casi todas las CPU de hoy en da incluyen algunas instrucciones de procesamiento


de tipo vectorial, conocidas como SIMD. En particular, las consolas de videojuegos
y las tarjetas grficas hacen un uso intenso de este tipo de procesamiento.

Los procesadores vectoriales proporcionan operaciones de alto nivel que trabajan


sobre vectores. Una mquina vectorial consta de una unidad escalar segmentada
y una unidad vectorial. La unidad vectorial dispone de M registros vectoriales de N
elementos y de unidades funcionales vectoriales (de suma/resta, multiplicacin,
divisin, de carga/almacenamiento, etc.) que trabajan sobre los registros
vectoriales, y un conjunto de registros escalares.

Dispone de un conjunto de instrucciones vectoriales. Por ejemplo add v v1, v2, v3.

Una operacin vectorial equivale a un bucle completo que procesara los N


elementos del registro vectorial.

2. CONCEPTO DE PROCESAMIENTO VECTORIAL

Un operando vectorial contiene una secuencia de n elementos, llamados


componentes, donde n es la longitud del vector. Cada componente del vector es un
escalar de cualquier tipo (entero, punto flotante, etc.). Los operadores vectoriales
pueden tener una de estas cinco formas (ver figura 18)

Figura 18. Formas de los operadores vectoriales

23
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

Las mquinas vectoriales proporcionan operaciones que trabajan sobre vectores.


Una instruccin vectorial es equivalente a la ejecucin de un bucle completo de
instrucciones ordinarias, donde cada iteracin trabaja sobre cada una de las
componentes del vector. Las operaciones vectoriales tienen algunas ventajas sobre
las escalares:

En las operaciones vectoriales, cada resultado es independiente de los


anteriores. Esto permite efectuar los clculos en un procesador segmentado
sin que existan conflictos por dependencias de datos.
Una simple instruccin vectorial sustituye a muchas escalares. Por ello, el
cuello de botella producido por la lectura de esa instruccin es pequeo,
comparado con el que producira el conjunto de instrucciones escalares a
las que equivale.
Las instrucciones vectoriales que precisan acceder a memoria, lo hacen con
un patrn de acceso fijo (normalmente sern adyacentes). Esto facilitar su
lectura paralela mediante una memoria entrelazada. En cualquier caso, si no
se dispusiera de memorias entrelazadas, las posiciones de memoria
adyacentes se cargarn en cach, con el consiguiente ahorro de tiempo.
Si se utiliza una instruccin vectorial, evitaremos el riesgo de control del salto
del bucle, que se producira si procesramos las instrucciones escalares
equivalentes en un procesador segmentado.
Por todas estas razones, las operaciones vectoriales pueden ejecutarse de
forma mucho ms rpida que la secuencia de instrucciones equivalentes
sobre el mismo conjunto de datos. Esto hace que se deba tender al diseo
y fabricacin de mquinas vectoriales en aplicaciones donde este tipo de
operaciones se usen con suficiente frecuencia.

24
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

3. ARQUITECTURA DE LOS PROCESADORES VECTORIALES

Una primera versin, muy simplificada, de procesador vectorial es el mostrado en


la siguiente figura. Este tipo de mquina sera un procesador vectorial memoria-
memoria que es capaz de extraer dos vectores de memoria y operar sobre ellos. El
inconveniente de este tipo de mquina sera el cuello de botella que supondran los
accesos a memoria. Por ello, sobre esta primera arquitectura pueden hacerse
algunas mejoras:

Aumentar el ancho de banda de la memoria: esto se consigue entrelazando


la memoria, de forma que la sta tenga varios mdulos y se pueda acceder
simultneamente a varias posiciones consecutivas que se hallen en mdulos
diferentes.
Aadir una memoria intermedia de mayor velocidad entre la memoria y el
procesador. Una forma de hacer esto, adems de incorporar una memoria
cach, es aadir un banco de registros vectoriales.

Por todo esto, es habitual que los procesadores vectoriales dispongan de un banco
(o varios) de registros vectoriales que hagan de memoria intermedia; se habla
entonces de procesadores vectoriales registro-registro. Por otra parte, la mayora
de los procesadores vectoriales actan como coprocesadores de un procesador
escalar convencional que trata las instrucciones no vectoriales. Ello hace que la
arquitectura de un computador vectorial actual sea la que se muestra en la siguiente
figura 19. Como puede verse, los computadores vectoriales pueden considerarse
como computadores del tipo SIMD de Flynn, sin embargo, hay que tener en cuenta
que, si bien los computadores vectoriales ejecutan la misma instruccin sobre datos
diferentes, estos datos forman parte del mismo flujo. Por ello, en algunos casos, a
estas mquinas se les llama SIMD-vectoriales (Germain-Renaud & Sansonnet,
1991).

25
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

FIGURA 19. Arquitectura de un computador vectorial

4. EL CRAY-1 DE CRAY DE RESEACH

El Cray-1, operativo desde 1976, puede considerarse como el primer computador


vectorial. Como muchos supercomputadores (el Cray-1 en su tiempo lo fue),
necesita un procesador auxiliar (front end host) que efecte labores de
administracin, E/S, etc. De esta forma, el Cray-1 se dedica slo a computacin
pura. El Cray-1 posee tres secciones (Russell, 1978): la seccin de computacin,
la seccin de memoria y la seccin de E/S. La seccin de memoria est organizada
en 8 o 16 bancos con 72 mdulos por banco (1 mdulo por bit) de los que 8 son
para deteccin y correccin de errores: el sistema puede detectar hasta 2 errores y
corregir 1, siendo la palabra eficaz de memoria de 64 bits. La memoria es
entrelazada con 16 vas.

En la siguiente figura (ver figura 20) puede verse la estructura de la seccin de


computacin del Cray-1. Como se aprecia en la citada figura, esta mquina dispone
de tres tipos de registros: registros de direccin (A), registros escalares (S) y
registros vectoriales (V), habiendo 8 registros de cada clase. Tambin existen unos
registros temporales, tanto escalares (T) como de direcciones (B), que actan a
modo de memorias cach para datos y direcciones. Existen 64 registros temporales
de cada una de estas clases. Tiene tambin 4 bancos de registros temporales de
instrucciones (cach de cdigo). Los registros de direcciones (tanto temporales

26
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

como primarios) tienen 24 bits, los escalares 64 y los vectoriales tienen 64 registros
componentes de 64 bits cada uno. La mquina dispone de un registro de longitud
(VL) que indica la longitud de los operandos vectoriales. Si la longitud de los
vectores del problema es mayor, debe recurrirse a la tcnica de seccionamiento.
Los contenidos de los registros vectoriales se transfieren desde (o a) memoria
indicando la direccin inicial, el incremento y la longitud del vector.

Figura 20. Estructura de la seccin de computacin del Cray-1

27
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

El sistema dispone de 12 unidades funcionales segmentadas divididas en cuatro


grupos: vectoriales (enteras y de punto flotante), escalares y de direcciones. Cada
unidad funcional puede trabajar con total independencia de las dems, por lo que
todas ellas pueden funcionar concurrentemente siempre que no haya conflictos en
cuanto a los registros que utilicen. Las unidades funcionales pueden acceder
directamente a los registros primarios, pero no a los temporales.

28
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

BIBLIOGRAFA
BASTIDA, J. 1995. Introduccin a la Arquitectura de Computadores. Universidad
de Valladolid.

DAVIDSON, E.S. 1971 (Jan.). The Design and Control of Pipelined Function
Generators. In: Proceedings of the 1971 International Conference on Systems,
Networks and Computers.

HNDLER, W. 1977. The Impact of Classification Schemes on Computer


Architecture. In: Proceedings of the 1977 International Conference on Parallel
Processing.

HENNESSY, J.L., & PATTERSON, D.A. 2003. Computer Architecture. A


Quantitative Approach. 3 edn.

Morgan Kaufmann Publishers. Existe traduccin al castellano de una edicin


anterior: Arquitectura de computadores: Un enfoque cuantitativo, McGraw-Hill,
1993.

HWANG, K. 1993. Advanced Computer Architecture: Parallelism, Scalability,


Programmability.

McGraw-Hill.

KELLER, R.M. 1975. Look Ahead Processors. ACM Computing Surveys, 7(4).

KOGGE, P.M. 1981. The Architecture of Pipelined Computers. McGraw-Hill.

PATEL, J.H, & DAVIDSON, E.S. 1976. Improving the Throughput of a Pipeline by
Insertion of Delays.

In: Proceedings of the Third Annual Computer Architecture Symposium. IEEE num.
76CH 0143-5C.

PATTERSON, D.A., & HENNESSY, J.L. 2005. Computer Organization and Design.
The hardware/ software interface. 3 edn. Elsevier. Existe traduccin al castellano
de una edicin anterior: Estructura y diseo de computadores. Inteficie
circuitera/programacin, Revert, 2000.

SHAR, L.E. 1972. Design and Scheduling of Statically Configured Pipelines. Digital
Systems, Lab

Report SU-SEL-72-042. Stanford University.

STONE, H.S. 1990. High-performance Computer Architecture. 2 edn. Addison-


Wesley.

29
Escuela de Ingeniera de Sistemas Arquitectura de Computadoras

SUSSENGUTH, E. 1971 (Jan.). Instruction sequence control. U.S. Patent num. 3,


559,183.

TOMASULO, R.M. 1967. An Efficient Algorithm for Exploiting Multiple Arithmetic


Units. IBM Journal of Research and Development, 11(1).

DASGUPTA, S. 1989. Computer Architecture: A Modern Synthesis. Vol. 2:


advanced topics. Joh Wiley & Sons.

GERMAIN-RENAUD, C., & SANSONNET, J.P. 1991. Les ordinateurs massivement


paralleles. Armand Colin Editeur. Existe traduccin al castellano: Ordenadores
masivamente paralelos, Paraninfo, 1993.

HENNESSY, J.L., & PATTERSON, D.A. 1990. Computer Architecture. A


Quantitative Approach. Morgan Kaufmann Publishers. Existe traduccin al
castellano: Arquitectura de computadores: Un enfoque.

30

S-ar putea să vă placă și