Folleto AMC3 2023
Folleto AMC3 2023
Folleto AMC3 2023
2023
TABLA DE CONTENIDO
2 SEGMENTACION ......................................................... 22
2.1 INTRODUCCION ...................................................................................................... 22
2.2 RENDIMIENTO DEL PROCESADOR SEGMENTADO ........................................ 25
2.3 CLASIFICACION DE LOS PROCESADORES ENCAUZADOS. .......................... 26
2.4 EL PROCESADOR SEGMENTADO DLX .............................................................. 27
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Para poder evaluar el desempeño de un computador y así poder compararlo respecto a otro
necesitamos poder definir y medir su rendimiento. Pero, ¿Qué queremos decir con
rendimiento?, ¿En base a qué parámetros podemos expresar o medir el rendimiento?, ¿Cómo
podemos establecer un mecanismo que permita comparar dos computadoras? En esta unidad
daremos respuesta a estas preguntas y definiremos un marco conceptual que nos habilite, en
términos generales, para evaluar el desempeño de los equipos de cómputo.
Página 1
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
De esta tabla podemos concluir que el avión con más velocidad es el Concord, el de mayor
alcance es el Douglas DC-8 y que el Boeing 747 es el de mayor capacidad. Así, por ejemplo,
para un pasajero adinerado que quiere transportarse de un lugar a otro distanciado 4,000 millas
del primero, el Concord es el más rápido. Pero si queremos movilizar 450 personas de una zona
a otra distante las mismas 4,000 millas, entonces, el más rápido es el Boeing 747.
Dadas las diferencias e inexactitudes que considerar todos los tiempos posibles puede acarrear,
se toma como la medida de rendimiento más adecuada del computador al tiempo de ejecución
t de un programa por parte del CPU.
Todas las métricas de desempeño están basadas en el comportamiento del sistema durante el
tiempo, dado que el tiempo es la medida básica de rendimiento. Existen tres clases de métricas
que pueden denominarse externas, pues pueden percibirse por un usuario o entidad externa al
sistema medido:
Página 2
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Existe una cuarta métrica de tipo interna o que se percibe desde dentro del sistema. Es la
métrica de utilización. Esta última es de vital importancia para entender el sistema y predecir
su desempeño en condiciones específicas.
La latencia es una medida del tiempo (t) que el sistema tarda en producir resultados. Esta
métrica puede representar diferentes conceptos en dependencia del contexto, por ejemplo, en la
evaluación del desempeño del CPU, tenemos los ciclos de reloj requeridos para completar un
programa, el ancho del pulso o período del reloj del CPU y el tiempo total de ejecución de un
programa; en cambio, en la evaluación del rendimiento de la memoria, tenemos, por ejemplo,
el tiempo de acceso a una celda.
La disponibilidad (d) mide cuánto tiempo un sistema se mantiene en operación normal del
tiempo total requerido.
La utilización () es el fragmento de tiempo que un componente del sistema (CPU, disco,
memoria, etc.) está activo para su utilización o contribuye al trabajo. La utilización se tasa en
el rango entre 0 y 1 o como porcentaje. La productividad máxima de un sistema se alcanza
cuando el componente más ocupado logra una utilización de 1 ó 100%.
Aunque las métricas nos permiten contar con un criterio de comparación genérico, muchas
veces es difícil definir métricas que sean efectivas 100% o estén libres de errores en los
procedimientos o casos de aplicación.
La historia muestra proyectos costosos, como Cray, donde se busca a ultranza lograr el mayor
poder de cálculo con el mejor rendimiento. En estos casos, el costo no se consideró como una
métrica de decisión para la implementación del proyecto. En el otro extremo tenemos a los
proyectos de soluciones SOHO genéricos, donde el menor precio posible es la meta. Aunque el
rendimiento sí cuenta, se puede renunciar a ciertos beneficios en función de obtener un equipo
de bajo costo para un mercado con baja exigencia.
Página 3
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Aunque en este curso nos limitaremos a la evaluación del desempeño más que a la
determinación de costos y su contrastación con los beneficios, sí haremos énfasis, en donde sea
pertinente, en aquellas técnicas que permitan aminorar el costo de los sistemas sin sacrificar la
eficiencia.
La mayor parte del arte en análisis de la ejecución queda en seleccionar a un buen modelo que
integre los aspectos más sobresalientes del sistema, eliminando toda la masa de detalles no
pertinentes que puedan ocultar lo esencial del mismo.
Ninguna técnica es mejor en todos los casos. Los modelos analíticos y de simulación
predominan en escenarios donde no contamos con el sistema utilizable o un prototipo del
mismo. Cuando queremos determinar el desempeño de un sistema existente, la técnica de
medición de la ejecución es lo más indicado.
En nuestro curso emplearemos, sobre todo, métodos analíticos muy simples y genéricos
partiendo desde la óptica del diseñador que pretende lograr un mejor desempeño de un sistema
proyectado más que desde la óptica de evaluar un sistema existente.
1.1.5 Rendimiento:
Página 4
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
1
𝑅 =
𝑡
Con esta medida ya podemos comparar dos computadoras. Sean Ra el rendimiento de la primera
y Rb el de la segunda, para una misma carga, podemos decir que:
Y podemos cuantificar la relación entre ellas: qué tanto más rinde A sobre B con la razón
siguiente:
Ra
=n
Rb
Donde n es cantidad de veces que A tiene mayor rendimiento que B. En dependencia del
contexto, n se conoce como ganancia “G” (si A es un reemplazo de B) o como aceleración
(A) o mejora de rendimiento (si A es una evolución o actualización de B).
Por ejemplo, si una máquina A ejecuta un programa en 10s y una máquina B en 15s. ¿Qué tanto
mayor es el rendimiento de la máquina A sobre el de la máquina B?
n = tb / ta = 15 s / 10 s = 1.5
Esta razón es adecuada como base de comparación respecto a la unidad, sin embargo, a veces
queremos saber en cuánto supera una a la otra, es decir, el incremento neto de rendimiento:
n’ = n – 1
n% = ( n – 1) * 100%
Rx - Ry
n% = * 100%
Ry
Página 5
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
De donde podemos deducir que A es 50% más rápida que B. Queda como tarea al lector
interesado demostrarlo.
Una vez definida una metodología para comparar rendimientos de dos computadoras mediante
su tiempo de ejecución, es importante definir qué métricas o características básicas intervienen
en la definición de esta medida.
La frecuencia define el ancho del pulso o período de reloj. Cabe mencionar que este período se
define en tiempo de diseño para ser suficientemente ancho a fin de permitir que todas las
operaciones de control requeridas por cualquier paso de control puedan realizarse sin problemas
en ese intervalo de tiempo. Así:
f = 1/
y t t=c*
Donde la constante c representa el total de ciclos de reloj que se requirió para ejecutar el
programa.
Con estas nuevas relaciones, podríamos obtener información para comparar dos computadoras
en función de su frecuencia. Por ejemplo, suponga que la máquina A ejecuta un programa p en
10s y su CPU tiene una frecuencia de reloj de 100MHz. Usted está diseñando una máquina B y
quiere que ésta ejecute p en solamente 6 segundos, aunque sabe que para ello requiere una
mayor frecuencia de reloj y como consecuencia, serán requeridos 20% más de ciclos para
completar p. ¿Qué frecuencia debe tener B para lograr este objetivo?
ta = ca / fa ca = ta * fa
cb = 1.2 * ca = 1.2 * ta * fa
fb = cb / tb = (1.2 * ta * fa) / tb
Página 6
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
sin embargo, que la aceleración global del sistema estará limitada por la fracción de tiempo en
que dicha mejora es efectiva. Es decir, no podemos esperar que el sistema global acelere al
doble si la mejora, que incrementa el rendimiento al doble, solo es capaz de funcionar cierto
porcentaje de tiempo.
Por ejemplo, supongamos que aumentamos la frecuencia de un CPU al doble, podría esperarse
reducir el tiempo de ejecución global a la mitad. Sin embargo, si en cada ciclo de instrucción
se pierde mucho accediendo datos de la memoria, la mejora global alcanzada no será del doble,
sino menor.
La ley de Amdahl nos permite cuantificar la aceleración global neta de un sistema donde se ha
introducido una mejora que es efectiva solo una fracción de tiempo de trabajo del sistema, es
decir, nos permite cuantificar el rendimiento en función de la utilización:
Siendo tg el nuevo tiempo de ejecución global del sistema al incorporar la mejora, t el tiempo
de ejecución original sin mejora, n la ganancia o aceleración parcial que la mejora proporciona,
y , la fracción mejorada (utilización) o el porcentaje de tiempo real que la mejora es efectiva,
entonces:
t
tg = * + t * (1 − ) = t * (1 − ) +
n n
y:
t 1
Ag = =
tmejorado
(1 − ) +
n
Así, por ejemplo, si una máquina se mejora duplicando la frecuencia del CPU, pero la mejora
solo es efectiva durante el 60% del ciclo de instrucción por el acceso a memoria, la aceleración
global del sistema sería:
Página 7
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Nota = 0.6 y n = 2
La ley de Amdahl nos conduce a un importante principio de diseño: Acelerar el caso común.
Hemos determinado que el tiempo de ejecución depende netamente del total de ciclos
requeridos para ejecutar el programa por el período o duración del ciclo. Ahora analizaremos
más a fondo cómo obtener el total de ciclos del programa. Sabemos que en definitiva, un
programa es una serie de instrucciones a ejecutar. Cada una de estas instrucciones consume una
cantidad de ciclos para completarse, por tanto, la cantidad total de ciclos que emplea una
máquina para ejecutar un programa depende de la cantidad total de instrucciones que se
ejecutan:
N
t = * Ci
i =1
g
t = *cj *nj
j =1
Sabemos del diseño del conjunto de instrucciones que en algunas arquitecturas, todas las
instrucciones tienen la misma cantidad de ciclos de reloj. En este caso, la ecuación anterior
tendría un solo grupo donde el factor “c1” se convierte en una constante a la que llamaremos
CPI (siglas de Ciclos Por Instrucción) y el factor “n1” en el total de instrucciones N.
c i
CPI = i =1
I
Página 8
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Al contar con un CPI constante, entonces el tiempo de ejecución “t” se puede definir como:
CPI * N
t = * CPI * N =
f
1.1.9.1 MIPS
N f
MIPS = 6
=
t *10 CPI *10 6
Como MIPS es una frecuencia, expresa el rendimiento en proporción inversa al tiempo lo cual
es adecuado porque mayores MIPS indican máquinas más rápidas.
El problema con el uso de MIPS consiste en que, si se emplea como método comparativo, debe
tenerse cuidado que las máquinas tengan características similares. Por ejemplo, un programa
que emplea emulación de las operaciones de punto flotante puede resultar con más MIPS que
una máquina que emplea una FPU aunque el tiempo de ejecución del programa sea menor en
la segunda, con lo cual el criterio MIPS nos conduce a un resultado equivocado. De manera
Página 9
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Para atacar el problema de dos máquinas con repertorios muy diferentes, se propuso emplear la
métrica MIPS relativos que se refiere a los MIPS de esta máquina en comparación con una
máquina de referencia. Se medía el tiempo de ejecución de un programa de prueba en la
máquina a evaluar y se dividía entre el tiempo de ejecución del mismo programa en la máquina
de referencia y finalmente se multiplicaba por los MIPS de la máquina de referencia, lo que nos
permitiría comparar dos máquinas respecto a una tercera.
treferencia
MIPS Re lativos = * MIPS referencia
tevaluando
Nuevamente los problemas de esta métrica son que evalúa el desempeño sólo para ese programa
específico, puesto que se han demostrado resultados equívocos con otro tipo de programas.
Adicionalmente, la dificultad de obtener una máquina de referencia adecuada con la misma
carga de los sistemas operativos y compiladores hace casi impráctico este método hoy día.
1.1.9.3 MFLOPS
Para atacar las deficiencias de MIPS, respecto a las diferencias en las operaciones de punto
flotante, que son extensivamente usados en los ámbitos de computación científica, se propuso
emplear los MFLOPS o Millones de Operaciones en Punto Flotante por segundo. Los
megaflops se obtienen del cociente entre el total de operaciones en punto flotante de un
programa sobre el tiempo de ejecución por un millón (para expresar el resultado en megas):
Aunque está restringido a las operaciones en punto flotante, los MFLOPS son más consistentes
que los MIPS por cuanto la cantidad de operaciones no cambia de máquina a máquina. La
problemática que se presenta, sin embargo, es que los conjuntos de operaciones en punto
flotante disponibles de máquina a máquina no son estándares y por tanto algunas operaciones
se deben implementar en función de otras. Adicionalmente existen operaciones en punto
flotante que son muy rápidas y otras muy lentas.
Página 10
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
t *106
Para poder determinar los valores o medidas para evaluar una computadora según tal o cual
métrica, se necesita establecer una carga de trabajo idónea. Esta carga de trabajo está compuesta
por uno o más programas tipo que permiten establecer una marca o benchmark de comparación
de esta computadora con otras. La elección de estos programas debe hacerse de forma cuidadosa
de acuerdo a la actividad para la que está pensada la computadora.
Existen cuatro tipos de Benchmarks de acuerdo a las tendencias que se han venido imponiendo:
Página 11
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
La primera apuesta y la más obvia apunta a reducir el período de reloj . Para lograr este
cometido, sin embargo, puede ser necesario reimplementar la máquina completa por cuanto el
período de reloj se decide en función de la máxima cantidad de pasos de control que se requieren
ejecutar de una sola vez, así como la máxima duración de éstos. Las mejoras realizadas en este
sentido, han implicado reducciones en el grosor de la oblea de silicio con que se fabrican los
procesadores. A menor grosor, menor distancias a recorrer y por tanto menor tiempo de
propagación.
Como ejemplo, la familia Intel x86 ha ido reduciendo significativamente el período de reloj
(aumentando la frecuencia) del CPU:
CPU
f (MHz) (ns)
Desde Hasta Desde Hasta
8088, 8086 1.7 1.7 588.2 588.2
80186 1.7 4 588.2 250.0
80286 4 12 250.0 83.3
80386 25 33 40.0 30.3
80486 33 100 30.3 10.0
Pentium 66 233 15.2 4.3
Pentium II 266 400 3.8 2.5
Pentium III 450 1,300 2.2 0.8
Pentium 4 1,300 4,000 0.8 0.3
Una meta común en estos esfuerzos fue el lograr la mayor ortogonalidad posible a fin que los
programas pudieran ser más compactos al permitir cualquier combinación de operandos en las
instrucciones. Posteriormente se encontró que esta dirección no llevaba a mejoras sustanciales
por cuanto al complejizar las instrucciones fue requerido complejizar el hardware del CPU,
Página 12
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
sobre todo de la unidad de control. Como consecuencia, fue necesario un período de reloj más
ancho o mayor cantidad de ciclos para ejecutar las instrucciones.
La idea común en este sentido apunta a reducir el CPI a su mínima expresión, es decir, a 1.
Obviamente tal propósito requerirá un período de reloj muy ancho así como reducir al máximo
los cuellos de botella (acceso a memoria y entrada-salida).
Como actividad práctica, proponemos identificar qué tan eficiente es el procesador simple
basado en un bus común estudiado en los cursos anteriores. Identificar las limitantes de diseño
que inciden en su desempeño y proponer un diseño mejorado que permita reducir el tiempo de
ejecución.
Hemos estudiado los factores de los cuales depende el rendimiento del CPU y cómo
reduciendo estos factores podríamos reducir el tiempo de ejecución. No podemos despreciar las
latencias del acceso a las otras partes de la computadora cuando queremos evaluar la aceleración
o impacto global que reducir el tiempo de ejecución tendrá en todo el sistema.
Puesto que cada instrucción a ejecutarse es llevada desde la memoria al CPU, las latencias en
el acceso a la memoria, limitarán la aceleración global del sistema, pues la aceleración lograda
Página 13
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
a lo interno del CPU no podrá usarse todo el tiempo sino solo una fracción de éste, según se
evidencia en el ejemplo del acápite 1.1.8. Un caso similar se dará con el acceso a dispositivos
periféricos cuando se requieran datos que deban leerse directamente de un puerto de entrada-
salida.
Por tanto, nuestro estudio de la mejora del rendimiento del ordenador no estaría completo sin
estudiar las mejoras del rendimiento de los otros dos subsistemas que componen la
computadora: la memoria y el sistema de entrada-salida.
La ley de Amdahl expresa que el efecto neto de las mejoras aisladas a una parte del
sistema está limitado por la fracción de tiempo que dicha mejora se pueda emplear. El sistema
de memoria es crítico en la ejecución de los programas por cuanto cada instrucción reside en
memoria y muchos de los operandos también.
De nuestro curso anterior conocemos que el ciclo de máquina de lectura o escritura en memoria
normalmente requiere varios ciclos de reloj, convirtiéndose en un verdadero cuello de botella
en el sistema de ejecución. En este sentido, el diseño del bus del sistema juega un rol muy
importante. En muchos casos, incrementar el ancho del bus puede incrementar
significativamente la velocidad de transferencia. Asimismo, implementar un diseño de
múltiples buses puede reducir cuellos de botella. También se pueden solapar en el tiempo
diferentes ciclos de acceso a memoria mejorando el desempeño global del sistema de memoria.
Página 14
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Para que la jerarquía de memoria funcione, las cachés deben tener una utilización
cercana a 100%, pues de lo contrario la aceleración global lograda no justificaría el incremento
costo al introducir una memoria extra bastante cara. Afortunadamente, el principio de localidad
de referencia garantiza la consecución de este objetivo bastante bien.
CPU
Registros
Caché
Meo
rV
eloc
ad
acid
id
ad d
C ap
Caché
e Tra
or
Externa
May
n sf e
renc
ia
Memoria Principal
Página 15
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
𝑡𝑔 = 𝑡𝑐 ∗ ℎ + (𝑡𝑐 + 𝑡𝑚 ) ∗ (1 − ℎ)
CPU +
Cache L2
Cache L1
Bus PCI
CD DD Controlador IDE
Controlador de DMA USB
DD DD Puente PCI a ISA
Bus ISA
LPT Disquete
Slot Slot
Super
Com 1 Teclado
I/O
Com 2 Ratón PS/2
Figura 1.2. PC con jerarquización de buses de E/S.
Página 16
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
1.4.1 DMA
DMA se aprovecha cuando los dispositivos son capaces de transferir gran cantidad de datos de
una vez. Surge un problema de concurrencia en el bus del sistema respecto al CPU. Este se
resuelve con Cycle Stealing, que permite al procesador de DMA bloquear al CPU el uso del
bus algunos ciclos a fin de realizar la transferencia de DMA.
Cuando un programa desea realizar una transferencia empleando DMA, el CPU inicializa los
parámetros de la misma e indica al Módulo DMA, acto seguido, el CPU se desentiende de la
transferencia. El procesador de DMA coordina el acceso al dispositivo y sincroniza la
transferencia en función del esquema de sincronización del bus del sistema. El procesador de
DMA y el dispositivo de E/S se sincronizan mediante líneas de control del Procesador de DMA
denominadas canal de DMA.
Una ventaja de DMA sobre interrupciones es que la transferencia en DMA puede hacerse en
cualquier ciclo, en tanto en Interrupciones, la verificación de solicitudes de interrupción se hace
hasta al final de la fase de ejecución.
Página 17
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
• Se requiere cada vez más poder de cómputo y además concurrencia (datos compartidos).
• Desde la introducción de las primeras enormes y costosas máquinas se requirió
capacidad de atención a múltiples usuarios para que fueran costo-efectivas.
• Los dominios de aplicación se han ido ampliando cada vez más: desde un procesamiento
de datos se ha pasado a un procesamiento de información, de conocimiento y
últimamente se habla de “inteligencia”.
• Los avances continuos en tecnología de producción de hardware a gran escala facilitan
la producción de sistemas paralelos a menor costo.
Esta es una técnica de software introducida por los diseñadores de sistemas operativos para
implementar paralelismo temporal en la ejecución de múltiples procesos de usuarios y los
mismos procesos del sistema operativo, logrando que todos progresen a la vez. La
multiprogramación permite tener múltiples procesos en memoria y sólo realiza cambio de
contexto con los procesos de house keeping del sistema o cuando el proceso se bloquea en
espera de un servicio. El tiempo compartido es más dinámico en el sentido que asigna un
quantum de tiempo de CPU a cada proceso.
Mecanismos de mejora del sistema de entrada/salida que permite liberar al CPU de las
operaciones de entrada–salida, permitiéndole ejecutar otras operaciones. Este mecanismo
requiere la introducción de procesadores auxiliares para la transferencia de entrada–salida a
Memoria: controlador DMA, Canales de E/S y controladores de E/S inteligentes.
Página 18
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Las diferencias de velocidad entre diferentes componentes del sistema afectan el desempeño
global del mismo por los cuellos de botella que los dispositivos más lentos imponen en las
transferencias entre ellos. La jerarquización de diferentes niveles y la introducción de niveles
intermedios que reduzcan la brecha de velocidad, permite ir equilibrando el ancho de banda del
sistema y acelerar su rendimiento global. En el sistema de memoria contamos con la jerarquía
de memoria y en los sistemas de entrada salida con técnicas de compensación con la
jerarquización de buses y técnicas de buffering en los módulos de entrada/salida.
El modelo de ejecución de las máquinas secuenciales puede ser ineficiente en cuanto al nivel
de utilización de los componentes internos del CPU, al ocupar todos los recursos en el ciclo de
instrucciones completo. Un análisis de las fases y etapas del ciclo nos permiten identificar
diferentes tareas que podrían solaparse. Por ejemplo, la fase fetch solo se encarga de traer la
próxima instrucción. Finalizada la fase fetch, el PC no vuelve a utilizarse hasta la próxima fase
fetch. Entonces, podría considerarse que cuando se complete la traída de la instrucción i, una
parte dedicada del CPU puede ir a traer la siguiente instrucción i+1, mientras el resto ejecuta la
instrucción i.
Cada parte o sección del CPU se denomina en este caso etapa o segmento del cauce de ejecución
o pipeline, porque la salida de cada etapa anterior alimenta la entrada de la siguiente como si
estuvieran conectados en una tubería. Por eso la implementación de tal solapamiento de la
ejecución en el CPU se denomina segmentación encauzada. El ejemplo de segmentación
mostrado en este párrafo solo consta de dos etapas y se le conoce como precarga de
instrucciones (prefetching), sin embargo, los sistemas segmentados hoy día suelen tener muchas
más etapas de cauce.
Página 19
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Suma
Banco de Multiplic. 1
Registros
Multiplic. 2
(24 x 32)
División
Suma Fija
Incremento
Subsistema de Entrada
Memoria Central
/ Salida Decremento
Lóg ica
Desplazamiento
Bifurcación
Pila de
Instrucciones
Marcador
Página 20
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Se han propuesto diferentes criterios para clasificar las arquitecturas paralelas, según diferentes
características y niveles de paralelismo. De entre estas resaltan las de Flynn, Feng, Handler,
Hockney - Jesshope y Shore.
Esta categoría incluye a todos los sistemas de un solo CPU. Las ejecuciones se ejecutan
de forma secuencial, pero puede haber segmentación.
Ejemplos de esta categoría son los computadores viejos IBM 370 e IBM 7090, el VAX
y el Intel 8086.
Esta categoría incluye una gran diversidad de procesadores paralelos que ejecutan una
misma instrucción sobre un conjunto de datos al unísono o solapadamente. Las
máquinas típicas SIMD son los procesadores matriciales con una red de múltiples
elementos de proceso (EP) supervisados todos por una la misma unidad de control.
Todos los EP reciben la misma instrucción emitida por la unidad de control y operan
esta instrucción sobre los datos residentes en su memoria local. Los miembros de esta
categoría serán nuestro objeto de estudio de la unidad 3.
Este modelo propone la existencia de n unidades procesadoras; cada una recibe distintas
instrucciones que operan sobre el mismo flujo de datos. La salida de un procesador pasa
a ser la entrada del siguiente. Muchos autores coinciden en que no existe espécimen
para esta categoría, aunque algunos insisten en considerar las etapas de un cauce como
entidades procesadoras y ubican los sistemas segmentados en esta categoría.
Dado que las etapas no son autónomas, nuestra posición para efectos de este curso será
aceptar y declarar la vacuidad de esta categoría.
Esta categoría incluye a todos los sistemas paralelos que constan de múltiples
procesadores autónomos trabajando cooperativa y coordinadamente en la solución de
uno o más problemas de forma simultánea. Esta categoría nos ocupará durante la unidad
4.
Página 21
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
2 SEGMENTACION
2.1 INTRODUCCION
La ejecución secuencial de instrucciones es muy lenta. Hemos expuesto que las mejoras
en tiempo de ejecución están limitadas por la interrelación entre las variables de la definición
del tiempo de ejecución secuencial t, que depende del número de instrucciones ejecutadas N, el
número promedio de ciclos de reloj consumidos por cada instrucción CPI y el período de reloj
del CPU, según muestra la expresión:
t = N * CPI
I1 Ejecución Secuencial
(Se ejecuta una instrucción tras otra)
I2
s1 s2 s3 s4 s5
I1 Ejecución Segmentada
s1 s2 s3 s4 s5 (Se ejecutan instrucciones solapadamente.
I2 El CPU se organiza en secciones o etapas
s1 s2 s3 s4 s5 que encadenadas se denominan cauce.
I3 Una vez que una instrucción completa su
s1 s2 s3 s4 s5 parte de ejecución en una etapa, pasa a la
I4
siguiente y otra nueva instrucción puede
I5 s1 s2 s3 s4 s5 ocupar la que ésta deja libre. Una vez que el
cauce está lleno, se produce una instrucción
s1 s2 s3 s4 s5 por ciclo)
I6
Página 22
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
completar el producto o tarea. El producto se construye con diferentes piezas o partes que se
ensamblan en cada etapa de la cadena. Cada etapa cuenta con el equipamiento requerido para
completar la subtarea que le compete. En cada etapa de la cadena se ensambla una parte o pieza
y al final de la misma tenemos el producto completo. La gran ventaja es que no se necesita
esperar a que un producto completo esté listo para comenzar a ensamblar el siguiente, sino que
apenas una etapa completa su parte del trabajo, la pasa a la siguiente y comienza a procesar su
parte correspondiente del siguiente trabajo.
Input S1 S2 S3 S4 S5 Output
Clock
Como todas las etapas están conectadas entre sí, todas ellas deben estar listas para proceder al
mismo tiempo; es decir, deben estar sincronizadas. El tiempo requerido para desplazar una
instrucción, un paso a lo largo del pipeline normalmente se hace corresponder a un ciclo del
reloj del procesador (). La duración de un ciclo máquina, está determinada por el tiempo que
necesita la etapa más lenta, porque todas las etapas deben progresar a la vez. El diseñador debe
entonces, equilibrar la duración de las etapas de la segmentación. Si las etapas están
perfectamente equilibradas, el ciclo de la máquina segmentada es óptimo porque reduce el gasto
por segmentación.
El objetivo de la segmentación es conseguir una instrucción por ciclo, aunque cada instrucción
por separado ocupe varios ciclos (CPI > 1). La productividad de la segmentación está
determinada por la frecuencia con que una instrucción salga del cauce. La segmentación
incrementa la productividad de instrucciones de la CPU porque el número de instrucciones
completadas por unidad de tiempo se incrementa, aunque no reduce el tiempo de ejecución de
cada instrucción debido al gasto en el control de la segmentación. El incremento en la
Página 23
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
productividad de instrucciones significa que un programa corre más rápido y tiene menor
tiempo total de ejecución aun cuando ninguna instrucción se ejecute con más rapidez.
El cauce de instrucciones mostrado en la figura 2.2. es un cauce lineal porque todas las etapas
tienen una relación de precedencia lineal entre ellas. El cauce lineal obliga a todas las
instrucciones a atravesar todas y cada una de las etapas del mismo, aunque no la necesite y por
tanto todas las instrucciones duran igual tiempo.
La precedencia está definida como una relación en el conjunto de subtareas en las que se divide
la tarea global que ejecuta el encauzado y define el orden de ejecución de las mismas:
Sea una tarea T, definida como el conjunto de subtareas requeridas para completarse:
Si se verifica que la subtarea Tj no inicia hasta completar Ti i < j y que una subtarea solo se
ejecuta una vez, entonces las subtareas tienen entre sí una relación de precedencia lineal. Si las
subtareas pueden ejecutarse en diferente orden y/o repetidamente, se tiene una relación no lineal
de precedencia y se dice que el cauce es no lineal o general.
Un cauce puede representarse en forma de diagrama de bloques como la figura 2.2 o como un
grafo de precedencia donde se muestre la relación entre las subtareas.
Espacio
Diagrama de Instrucciones Diagrama Espacio/tiempo
S4 T 14 T 24 T 34 ...
T 44 T 54
inst i
inst i+1 S3 T 13 T 23 T 33 T T4
3
... 5
3
inst i+2
S2 T 12 T 22 T 32 T 42 T ...
5
2
inst i+3
S1 T 11 T 21 T 31 T 41 T 51 ...
inst i+4
Tiempo
1 2 3 4 5 6 7 8 (ciclos)
Página 24
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Hemos establecido que el rendimiento de las computadoras puede determinarse a través de dos
medidas principales: el tiempo de ejecución y la productividad. En un procesador encauzado,
el rendimiento es superior al de un procesador secuencial debido al solapamiento (paralelismo
temporal) en la ejecución. Sabemos que el tiempo de ejecución en un procesador secuencial
es:
t1 = N * CPI *
Donde el subíndice 1 de t denota que es secuencial, es decir, solo tiene 1 etapa que ejecuta toda
la instrucción de una vez. N son las instrucciones totales ejecutadas y es el período de reloj.
Procedamos ahora a determinar una expresión para el tiempo de ejecución de un procesador
segmentado de k etapas tk.
El período del reloj de un procesador encauzado depende de la duración de la etapa más lenta,
porque estamos modelando una cadena de producción donde todas las etapas deben proceder al
mismo tiempo. Así el período, para un procesador de k etapas es:
1 r 2 3 4 5
Input S1 S2 S3 S4 S5 Output
Clock
= Max { i }1 + r
k
= max + r
Como todas las instrucciones duran lo mismo, puesto que deben pasar por todas las etapas del
cauce, y suponiendo que éste requiere un solo ciclo de reloj para ejecutar las operaciones de
cada etapa, entonces el CPI de todas las instrucciones equivale al número de etapas del cauce,
es decir: CPI = k.
El procesador encauzado, requiere k ciclos de reloj para producir la primera instrucción. Una
vez que el cauce está lleno, se produce una instrucción por ciclo, como puede apreciarse en la
figura 2.1. Entonces, podemos definir el tiempo de ejecución como el tiempo requerido para
ejecutar la primera instrucción (k * ) más el tiempo requerido para el resto que no es más N-1
ciclos. Así el tiempo de ejecución segmentado, denotado por tk es:
tk = k * + (N – 1) *
Así la ganancia de rendimiento de un procesador segmentado sobre uno secuencial se define
como:
Página 25
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
t1 N*k
G= =
tk k + ( N -1 )
Nótese que los tramos ocupados durante la primera instrucción se complementan con los tramos
desocupados una vez que la última instrucción entra al cauce, por tanto, el total de tramos llenos
es: N * k * y el total de tramos es: k * *[ k + (N -1)]. Así, la eficiencia es:
N*k* N
= =
k * *[k + ( N -1 )] k + ( N -1 )
Así, la Productividad que se define como el número de tareas (instrucciones) producidas por
unidad de tiempo es: = N / t. Sustituyendo la expresión del tiempo de ejecución del
segmentado, nos queda:
N
= = =f
K + ( N -1 )
❖ Cauce de Instrucciones.
➢ Ejemplo del DLX
Página 26
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
❖ Cauce Aritmético.
➢ Ejemplo del sumador de PF
❖ Encauzamiento de Procesadores.
➢ No es práctico.
❖ Unifunción – Multifunción
❖ Estático – Dinámico
❖ Escalares – Vectoriales
A continuación se presenta una pequeña comparación entre las Arquitecturas RISC/CISC con el objetivo
de facilitar al lector la comprensión del funcionamiento del DLX que se expondrá luego en este
documento.
Página 27
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
RISC CISC
Nótese que la instrucción OP es genérica acá por razones de simplicidad, sin embargo OP puede
ser cualquier operación binaria soportada por DLX, por ejemplo: ADD, SUB, AND, OR, etc.
A partir de esta definición de instrucciones, requerimos una arquitectura básica para el DLX
capaz de ejecutar las operaciones que ejecuten las instrucciones. Posteriormente, mejoraremos
esta arquitectura básica a fin de resolver ciertos problemas de la segmentación (riesgos
estructurales)
Página 28
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Rd Write
DataBus
mdr
BR
ir M
Rf1 R Rf2 R
@Bus
4
mar
A B
pc
A B
ALU
buff
Dado el alto rendimiento conseguido en una maquina segmentada, parece que cuanto mayor sea
k, mejor rendimiento obtenemos, sin embargo, la verdad es que la segmentación no es tan simple.
Existen situaciones en las que aparecen riesgos por dependencias que limitan la eficiencia del cauce.
Existen tres posibles casos: Riesgos por dependencias de recursos de las etapas, dependencias de datos
y dependencias de control debido a las instrucciones de saltos, según expondremos a continuación:
Página 29
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Normalmente, cuando una instrucción esta detenida, todas las instrucciones posteriores a esa
instrucción también se detienen. Las instrucciones anteriores a la instrucción detenida pueden
continuar, pero no se buscan nuevas instrucciones durante la detención. Una detención hace
que el rendimiento de la segmentación se degrade con relación al rendimiento ideal.
La única forma de evitar los riesgos estructurales consiste en dirimir la competencia desde el
diseño mismo de la máquina, definiendo qué etapa tendrá la supremacía de cada recurso y
duplicando recursos si es necesario. Un segmentado sin riesgos estructurales resueltos no es
una máquina práctica, pues probablemente nunca logre funcionar.
Aunque muchos riesgos estructurales de la segmentación pueden detectarse a proiri por simple
inspección, –como en el caso del acceso a memoria en BUS y MEM, o el incremento del PC en
BUS y cálculo en ALU– para detectar y corregir todas las dependencias estructurales en forma
detallada, recurrimos a la Tabla de Reserva. La tabla de reserva es una herramienta útil para
analizar los recursos ocupados por cada etapa de la segmentación por lo cual se pueden
identificar fácilmente los riesgos y tomar las medidas de diseño para solventarlos.
Página 30
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
2. Recursos de cálculo: Notamos 3 posibles riesgos en los órganos de cálculo del DLX :
La etapa BUS requiere calcular el incremento del PC en 4 para lo cual solicitaría los
servicios de la ALU y a su vez, la etapa ALU requiere aplicar A OP B, para lo cual
solicita los servicios de la ALU.
Por otro lado la instrucción BRx requiere comparar rf1 con 0 en la etapa ALU, lo cual
genera un conflicto incluso internamente dentro de la misma etapa (usar ALU para
ambas operaciones de forma secuencial sería inadmisible porque incrementaría la
duración del ciclo de máquina.
Finalmente, al BR se solicitan dos lecturas y una escritura simultáneamente.
Página 31
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
3. Latches: Los latches, por regla general, deben leerse al principio del período y escribirse al
final de éste –garantizando la función de retención entre etapas– con lo cual los datos sólo
deben permanecer en estos durante un período. Por otro lado, sólo una etapa puede escribir
en cada uno de ellos, pues de otro modo podríamos tener competencia o colisión. En el
DLX, es necesario revisar las instrucciones para determinar cuándo aparecen dependencias
estructurales de uso de latches. Podemos establecer tres criterios para determinar y solventar
tales dependencias:
Página 32
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Recursos de Cálculo Conflicto uso ALU: BUS para incrementar Usar un sumador en BUS (PC = PC+4)
PC, ALU para operar A y B y ALU para usar una ALU en ALU (ALUout = A OP B)
comparar. usar un comparador en ALU (cond = A’ cmp 0)
Instrucción en etapa Perder la información de qué instrucción Crear réplicas del IR en cada etapa excepto ESC
se esta ejecutando en cada etapa. para propagar la Instrucción junto a sus datos.
Obviamente, estas modificaciones requieren rediseñar la estructura del Procesador para reflejar
todos estos cambios y poder detectar los requerimientos de control. Se denomina camino de
datos o DataPath al diagrama de la estructura del procesador, diseñado de forma tal que muestre
de forma clara la trayectoria que deben seguir los datos dentro del procesador.
Página 33
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
IR
(offset d)
BR D/L
BR:@Rf1(CO, R1), Read
Rf1 R Rf2 R BR:@Rf2(CO, R2), Read
MuxA(CO)
MuxB(CO)
Reloj Reloj Reloj Reloj
ALU
0
ALUsel(CO)
Comp ALU
Reloj Reloj
Reloj Reloj
R/W
@datos MEM
datos_out dCache:R/W(CO)
dCache
datos_in
Reloj
Reloj
MDRIN IR4
Rd Write
ESC
BR:@Rd(CO, Rd|R2)
BR
Página 34
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Las lecturas y escrituras de los datos deben ejecutarse en el orden que establece la
secuencia lógica del programa. La segmentación permite iniciar la ejecución de instrucciones
posteriores antes que se completen las anteriores, con lo cual se corre el riesgo de leer o escribir
datos en un orden incorrecto si una instrucción j opera sobre los mismos registros que una
instrucción anterior i. Un buen diseño de procesador segmentado no debe permitir la ejecución
de estas instrucciones posteriores hasta que se pueda garantizar la coherencia de los datos.
En este caso la instrucción j requerirá en la etapa D/L un dato que no será actualizado hasta tres
ciclos después. Si el programa continúa, los resultados no serían los esperados, por tanto el
encauzado deberá detener todas las etapas anteriores a D/L hasta que R1 se haya actualizado.
Estas detenciones del cauce, denominadas latencias, merman la eficiencia porque en estos
ciclos no se producen instrucciones. Las dependencias de datos deben tratarse tanto para evitar
resultados incoherentes como para minimizar las latencias que provocan pérdidas en el
desempeño del segmentado.
Página 35
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
D-R: J trata de escribir un registro antes que una instrucción i anterior lo haya leído, violación
al orden Write After Read (WAR). Esta dependencia no ocurre en cauces lineales con ejecución
en orden, sin embargo puede ocurrir en cauces multiciclo cuando la ejecución ocurre en
desorden o en segmentados con ejecución dinámica.
R-D: Problema típico de los segmentados. Consiste cuando la instrucción j trata de leer datos
que no han sido escritos por la instrucción i anterior a ella, tratando de romper el orden Read
after Write o RAW. El ejemplo mostrado de dependencia con R1, es un caso típico de R-D :
R(i) D(j) , pues R(i) D(j) = {R1}
R-R: No puede ocurrir en el DLX dado que sólo se escribe en una única etapa, pero básicamente
puede aparecer en cualquier segmentado donde se escriba en diferentes etapas ( Write After
Write o WAW).
Dados los alcances del curso, sólo enfocaremos las dependencias R-D por ser las más comunes
y las únicas que se presentan en nuestro modelo. Lectores interesados en le tema pueden
encontrar más material en las obras de Henessy y Patterson.
R1 se escribe aquí
ALU Esc
D/L
1ra Latencia
2da Latencia
3ra Latencia
4ta Latencia
Necesito el
valor de R1
aquí
Garantizar que las lecturas ocurren luego de las escrituras del ciclo anterior (Esto se
garantiza estructuralmente en el DLX). Elimina la posible 4ª latencia.
Página 36
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Por ejemplo, Nótese que el valor de R1 en el ejemplo está disponible en la salida de la ALU de la
instrucción i, por tanto, ésta puede cortocircuitar con su entrada, permitiendo el manejo correcto del dato
mediante la selección de MuxA y MuxB en la instrucción j, eliminando así la 1ª latencia. Estos sólo
puede lograrse mediante un riguroso control pues nótese que aparentemente el valor de R1 se solicita al
inicio del ciclo y la salida de la ALU está disponible hasta el final del mismo, sin embargo recuérdese
que los registros A y B se escriben al final del ciclo también, por tantoel valor de la salida de la ALU
puede estar disponible con suficiente tiempo para escribir en A o B. esto es posible pues la instrucción
en la etapa D/L se tiene en el IR y la instrucción en ALU en el IR2 por tanto el control puede hacer el
cortocircuito inequívocamente.
También se pueden adelantar las salidas del MuxMDRin y del MDRin hacia MuxA y MuxB
a fin de eliminar las latencias 2 y 3 con la instrucción OP. Veamos en el ejemplo a continuación
cómo se darían estos cortocircuitos o adelantamientos:
Valor actualizado de R1
disponible aquí
R1 se escribe aquí
Valor actualizado de R1
se ocupa aquí
No todos los casos de dependencias de datos en el DLX se pueden resolver con cortocircuitos,
la dependencia LOAD(i) – OP(i+1), por ejemplo, no pueden tratarse con cortocircuitos pues no
hay suficiente tiempo para lograr Salida(MEM) → Entrada(ALU). Hay que buscar otras
técnicas en estos casos.
Valor actualizado
disponible aquí
Valor actualizado
requerido aquí
Página 37
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Para los casos de implementación de DLX en que no se realizaron mejoras de diseño, y para los casos
en que las mejoras no permiten eliminar todas las latencias, se deben parar las inicializaciones del cauce
y esperar hasta que el resultado esté disponible.
Esto puede hacerse por hardware. La unidad de control puede disponer de un órgano de detección de
dependencias de datos que genere una señal cuando la nueva instrucción cargada en IR tiene
dependencia con alguna de las instrucciones en ejecución (comparación de los Rf en IR con los Rd en
IR2, IR3 e IR4). Cuando se dé el caso de dependencia, entonces deberá congelarse la etapa BUS (no
cargar PC+4, pero sí si es destino de salto) e introducir NOP por hardware en IR2 a fin de insertar una
burbuja o ranura de retardo (delay slot) que permita esperar hasta que el resultado esté disponible en el
banco de registros para continuar con la instrucción postergada en IR.
Otro método, propio para compiladores y más eficiente, consiste en reordenar las
instrucciones a fin de evitar las dependencias.
Página 38
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Página 39
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
IR
(offset d) D/L
BR:@Rf1(IR), Read
BR BR:@Rf2(IR), Read
MuxA'(IR, (IR3, IR3, IR4))
MuxA (IR, (IR3, IR3, IR4))
(a, b, c) Rf1 R Rf2 R
(a, b, c) MuxB (IR, (IR3, IR3, IR4))
NOP
(a, b, c) MuxMDR(IR, (IR3, IR3, IR4))
Ld_PC(IR, IR2)
Ld_IR(IR, IR2)
Reloj Reloj Reloj Reloj MuxIR2(IR, IR2)
0 ALU
ALUsel(IR2)
(b) Comp(IR2)
Comp MuxMDRout(IR2, IR3)
ALU
(a)
R/W MEM
@datos
dCache:R/W(IR3)
datos_out MuxPC(IR3,Cond)
dCache
MuxMDRin(IR3)
datos_in
Reloj (b) Reloj
MDRIN IR4
(c) ESC
Rd Write
BR:@Rd(IR4), Write
BR
Nota: Los cambios respecto al DataPath con Dep. Estructurales resueltas se muestran en azul fuerte
Página 40
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Las dependencias de control en los segmentados son introducidas por las instrucciones
de salto, BRx en el caso específico del DLX. Nótese que la instrucción de salto, actualiza el
valor del PC hasta en la etapa MEM, por tanto las instrucciones cargadas en el cauce deben
eliminarse del mismo pues su ejecución sería inválida si la condición resultase verdadera y el
salto se hiciera efectivo. El gran problema consiste en que estas instrucciones podrían cambiar
el estado del procesador generando resultados inesperados, por tanto, el procesador debería
bloquear la carga de nuevas instrucciones hasta que se actualice el valor del PC correctamente,
lo cual genera 3 latencias por cada instrucción de salto:
MEM
BRx i
Consideremos que en un programa típico, los saltos representan entre un 15% y un 30% de las
instrucciones, por tanto, las dependencias de control, deben considerarse muy seriamente
porque degradan el desempeño del segmentado de forma significativa.
Mejorando el diseño, podemos adelantar el salto a la etapa ALU. Esto no implica ningún
requerimiento especial y elimina una latencia.
Página 41
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
PC
ALU
BRx i
Según el k ejemplo
anterior, el ciclo de máquina
real, con el adelantamiento es:
Sin embargo, todavía es una penalización grande. ¿Podemos mejorar? – ¿Qué tal si tratamos
de pasar el salto a la etapa D/L, para tener sólo una latencia?
PC
BRx D/L
i
En este caso el ciclo real de máquina debido a la penalización por saltos viene a ser:
BRx
El salto no puede adelantarse más debido a que Rf1 debe leerse del BR. Las mejoras obtenidas
son equivalentes a las obtenidas con las dependencias de datos. Como conclusión: No siempre
podemos evitar las latencias debido a cierta combinación de instrucciones y éstas implicarán
una merma en el desempeño del DLX.
Página 42
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Los adelantamientos, modifican la estructura de la instrucción BRx y con ello, las posibles
dependencias de datos entre ésta y el resto de instrucciones.
Por otro lado, es necesario que el procesador provea un mecanismo de parada por hardware
para tratar la latencia, o en su defecto, el programador o el compilador deberán introducir un
NOP explícitamente después de cada BRx. El segmentado puede tratar el interbloqueo a nivel
de unidad de control introduciendo NOP en la entrada del IR cuando se ha decodificado un
BRx, de forma tal que en el próximo
ciclo, IR2 = BRx e PC IR=NOP.
D/L
BRx i
i+1 k
If (Rf1 cmp 0) : PC = @Salto
else: PC = PC + 4
@Salto
R/W
@Inst PC
iCache NOP
S
4 Reloj
Inst
IR
Página 43
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Como no podemos eliminar una latencia debido a saltos, podemos implementar técnicas para
tratar de evitarlas en algunos casos. Existen tres técnicas empleadas:
Sin embargo, la elección de las instrucciones de relleno no es trivial pues requiere de un análisis
previo de las dependencias de datos entre instrucciones. La primera opción consiste en buscar
una instrucción anterior como relleno, esta no debe tener ninguna dependencia con las
siguientes del bloque. Si no se logra obtener una instrucción apropiada del bloque básico, se
puede emplear una del bloque de continuación o del de salto, siempre que cumplan ciertas
condiciones de independencia de datos y su ejecución no afecte la lógica del programa (por
ejemplo, que no escriba resultados a memoria y que el registro destino sea un registro temporal
donde no importe el valor actualizado por la instrucción).
Página 44
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Ejemplo:
…
1) MUL R1, R2, R9
2) ADD R7, R1, R9
3) DIV R7, R1, R9
4) SUB R4, R4, R6 Bloque básico
5) BRx R4, d (i)
Continuación Salto
6) MUL R5, R13, R13 (i+1) 9) SUB R12, R7, R1 (k)
7) SUB R15, R7, R8 10) ADD R13, R12, R5
8) SUB R12, R5, R6 11) ADD R6, R5, R6
… …
En este trecho de código, podemos emplear como relleno la instrucción 3 del bloque básico
pero no 1 o 4 porque tienen dependencias R-D ni 2 pues tiene dependencia R-R con 3 (No debe
tener ningún tipo de dependencia con las siguientes de su bloque). Por otro lado, del bloque
de continuación, no debe tener dependencias de ningún tipo con las instrucciones anteriores
de su bloque ni R-D con las del bloque de salto, por tanto solo es elegible 7 (6 tiene R-D con
10 y 11. 8 tiene con 6 y R-R con 7), Finalmente del bloque de salto, la instrucción no debe
tener dependencias con las anteriores de su bloque ni R-D con las del bloque de continuación,
por tanto sólo 9 es apropiada. (10 tiene R-D con 9 y 11 tiene R-D con 8)
Esta técnica es una mejora al simple interlock por hardware mencionado anteriormente,
consiste en definir en el diseño del segmentado que se apueste por una de las dos ramas del
salto y permitir mediante control, evitar cambios en el estado del programa cuando la apuesta
es fallida (inhabilitar las escrituras o abortar la ejecución con NOPs). Esta técnica requiere de
soporte de software para el caso de apuesta por la rama de salto.
Si se apuesta por el bloque de salto, el compilador inserta las instrucciones necesarias del bloque
de salto (1 en el DLX), en caso de fallo, se anula la ejecución (bloqueando las escrituras) o se
Página 45
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
aborta con NOP en IR. Nótese que la responsabilidad del relleno útil descansa sobre el
compilador o el programador en lenguaje de bajo nivel.
Con esta técnica se eliminan las latencias cuando hay aciertos. Una mejora a esta técnica es la
predicción del salto, que resulta muy conveniente por el carácter cíclico de los mismos. Se
requiere almacenar el comportamiento de los saltos para predecir si se toma el salto o no. Se
implementa en firmware y necesita pre-decodificación de las instrucciones de salto. Las
penalizaciones se reducen significativamente.
Esta última técnica también aprovecha el carácter repetitivo de los saltos. Se agrega al
procesador un Branch Target Buffer (BTB) o buffer de destino del salto que es una memoria
asociativa donde se almacenan las últimas direcciones de destino de salto y con un MUX se
selecciona la instrucción correcta (cargada de memoria= i+1, o cargada desde el BTB = k).
El procesador siempre procede por el bloque de continuación. Si el salto se toma, debe buscar
la dirección destino en el BTB. La primera vez, seguramente no estará guardada en el buffer y
se deberá anular la ejecución de la instrucción cargada i+1 mediante NOP en IR.
Página 46
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
IR
PC d
D/L
BR:@Rf1(IR), Read
S
0 (a, b, c) BR @salto BR:@Rf2(IR), Read
@Salto Cmp(IR); S@Salto(IR)
MuxCmp(IR, (IR3, IR3, IR4))
Rf1 R Rf2 R (offset d)
MuxA (IR, (IR3, IR3, IR4))
(a, b, c) NOP MuxB (IR, (IR3, IR3, IR4))
(a, b, c)
MuxMDR(IR, (IR3, IR3, IR4))
Ld_PC(IR, IR2)
Comp Reloj Reloj Ld_IR(IR, IR2)
Reloj MuxIR(IR)
Cond MuxIR2(IR, IR2)
A B MDR IR2
ALU
ALUsel(IR2)
(b) MuxMDRout(IR2, IR3)
ALU
(a)
R/W MEM
@datos
dCache:R/W(IR3)
datos_out MuxMDRin(IR3)
dCache
datos_in
Reloj
Reloj (b)
MDRIN IR4
(c) ESC
Rd Write
BR:@Rd(IR4), Write
BR
Nota: Los cambios respecto al DataPath con Dep. de Datos resueltas se muestran en azul fuerte
Figura 2.8. Datapath del DLX con las dependencias de control resueltas
Página 47
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
2.9 EXCEPCIONES
2.9.1 INTRODUCCION
Las interrupciones son mecanismos que permiten el desvío (o suspensión momentánea) del
flujo en ejecución debido a la necesidad de atención de algún evento. Estas pueden clasificarse en
asíncronas y síncronas.
En el DLX, pueden aparecer excepciones en las etapas BUS, MEM (acceso a caché),
D/L (código de operación ilegal) y ALU (excepciones aritméticas). Las primeras deben ser
recomenzables en tanto las últimas por lo general abortan la ejecución de la instrucción o del
programa y la rutina de tratamiento del sistema o el sistema operativo se encargan de tratarlas.
Forzar una instrucción de trap en la etapa BUS, en el siguiente ciclo. Esta instrucción
se encarga de invocar a la rutina de tratamiento de excepciones del sistema.
Hasta que el trap sea efectivo, se deben inhibir todas las escrituras para la instrucción
que generó la excepción. y las instrucciones posteriores a ellas, evitando así que se
cambie el estado de la ejecución y se obtengan resultados erróneos.
Una vez que el trap comienza a ejecutarse, el DLX debe guardar el valor del PC de la
instrucción que generó el fallo, para poder recomenzarla. En máquinas donde se
implementa el salto retardado, el valor del PC no puede determinarse de forma
secuencial y por tanto es necesario guardar réplicas del PC a lo largo de todo el cauce
para poder recomenzar la ejecución de las instrucciones.
Página 48
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Pero no siempre tenemos un panorama tan limpio, pues pueden surgir mayores complicaciones cuando
se presentan múltiples excepciones. El caso más complicado es cuando instrucciones posteriores
generan sus excepciones antes que las anteriores, de forma tal que tratarlas no es un caso tan trivial como
cuando hay una sola excepción en el cauce. Se aplican dos técnicas:
b) Tratar las excepciones en el orden de aparición, lo cual requiere detener no solo los sucesores
sino los antecesores que puedan cambiar el estado de la máquina. Una vez resuelta la excepción
se inicia en la instrucción más antigua que se detuvo.
in 1 2 3
out 1
T1 T3 T2 T4
T1 T2 T3 T4
in 4
2
Grafo de Precedencia Lineal Grafo de Precedencia No lineal
En la segmentación lineal, representada por el primer gráfo, el flujo de datos o tareas pasa por todas y
cada una de las etapas en el orden de las mismas una sola vez. En la segmentación no lineal, dependiendo
de la función del cauce, las tareas pueden:
Página 49
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Nótese que la segmentación lineal está relacionada con cauces de instrucción y los no lineales o
generales, con cauces del tipo aritmético o de procesamiento de vectores. Los enlaces entre las etapas
del cauce nos permiten identificar si son lineales o no. El diagrama de bloques es un esquema
simplificado del cauce al cual se ha despojado de los detalles de acoplamiento (latch) y temporización.
En en las figuras 8 y 9 pueden apreciarse las diferencias entre los diagramas de bloque de un cauce
lineal y uno no lineal.
S1 S2 S3 S4 S5
S1 S2 S3 S4 S5
Los círculos con signos de conmutación al centro, son multiplexores. Estos permiten seleccionar la
entrada correcta a cada etapa en cada ciclo de reloj. Es obvio que dadas las posibilidades de feedback
del cauce, pueden existir muchos caminos o trayectorias de cada tarea. Esto es particularmente cierto en
cauces con caminos alternativos o reconfigurables ya sea de manera estática o dinámica.
Para que tales operaciones sean implementables en un segmentado, se requeriría que las
instrucciones pudieran ocupar repetidamente la ALU hasta completar la operación y luego
continuar con la ejecución. A simple vista, esto nos causaría tremendas latencias, sin embargo,
dado que la multiplicidad involucra solo una etapa, se suele multiplicar la ALU en diversas
unidades, permitiendo a algunas tener una instrucción repitiéndose en esta etapa varios ciclos
hasta completarse mientras el proceso de ejecución continúa normalmente. A una máquina que
soporte tal dinámica de trabajo se le llama Procesador Multiciclo.
Página 50
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Una modificación del DLX para soporte a operaciones en punto flotante, deberá ser multiciclo.
El esquema de la figura 10 muestra el diagrama a bloques del DLX Multiciclo, con varias
unidades funcionales, básicamente ALUs especializadas en operaciones enteras y/o de punto
flotante.
ALU
E
MUL
E/PF
SUM
PF
DIV
E/PF
Con los procesadores Multiciclo hay que tener en cuenta que pueden aparecer riesgos R-D.
Con resultados de operaciones en punto flotante, también podrían aparecer riesgos de datos del
tipo R-R.
Para controlar el acceso a las etapas de la ALU, es necesario llevar un registro de su uso así
como de los registros involucrados en las instrucciones. Las diferentes unidades funcionales
de la ALU se controlan mediante un Scoreboard o marcador que tiene un bit de ocupado para
cada etapa así como el registro destino de la operación. Esta técnica es clave para la detección
dinámica de dependencias de datos. Cuando se carga una nueva instrucción se debe comprobar
en el marcador que la unidad a utilizar no esté ocupada, caso contrario se inhibe emisión de la
instrucción en la etapa D/L. Para evitar los riesgos R-R, se debe llevar una secuencia de las
escrituras, permitiendo re-expedición interna en registros temporales e inhibiendo la escritura
de los resultados finales hasta que se garantice el orden en la etapa MEM.
Iniciemos con un ejemplo. Usemos el cauce de la figura 9 y definamos su tabla de reserva. En los cauces
generales, necesitamos una tabla para cada función. Por simplificación sólo consideraremos cauces
Página 51
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
monofunción en nuestro curso. La tabla de reserva se conforma por las etapas del cauce vs períodos de
tiempo o ciclos que requiere la función para completarse. Una marca en el cuadrado, en la intercepción
de Sj con Ti, muestra si la etapa Sj es ocupada por la función F en el ciclo Ti.
Sj \Ti 0 1 2 3 4 5 6 7 8
1 X X
2 X X X
3 X
4 X X
5 X X
Figura 2.13. Tabla de reserva del cauce
Así vemos cómo la función F, ocupa en el primer ciclo (0) la etapa 1, pasa a la 2 en el segundo, se
mantiene en esa etapa en el tercero, pasa a la tercera, la cuarta, repite la cuarta, pasa a la quinta, en la
cual dependiendo de alguna condición, puede pasar a la segunda y luego terminar en la primera o repetir
la quinta y pasar a terminar en la primera.
En función de esta tabla, se pueden definir latencia como el número de ciclos de tiempo entre dos
iniciaciones. El fin del procedimiento de planificación por secuenciamiento de trabajos consiste en
elegir una estrategia de control que consiste en una secuencia de latencias, que minimice la latencia
media entre iniciaciones.
Se inicia por determinar la tabla de reserva y la lista de inicializaciones prohibidas F y libres o permitidas
F’. Son inicializaciones prohibidas aquellas que generan colisiones. El procedimiento recomienda
detectar filas con varias marcas (X) y restar el ciclo menor Ti del mayor Tj, el resultado serán las latencias
prohibidas. Las libres son las latencias no prohibidas o conjunto complemento de F. Para nuestro
ejemplo, estas son:
F = { 1, 5, 6, 8 } F’ = { 2, 3, 4, 7 }
El siguiente paso consiste en determinar el vector de colisiones C. Este es un arreglo de bits que tiene
en Ci un 0 si la iniciación es libre y un 1 si es prohibida en el ciclo i ( 0 si i pertenece a F’ y 1 si pertenece
a F). La longitud del vector es n, donde n = máx { Fi } por tanto, Cn = 1 siempre es verdad. Formalmente:
C = (Cn . . . C1) donde Ci = 1 i F Ci = 0 i F’
Para caracterizar la dinámica de las iniciaciones sucesivas en el cauce, se emplea un diagrama de estado
que tiene por estado inicial a C. Para construir dicho diagrama de estados se simula que se inició una
nueva operación en el cauce para cada latencia permitida o libre (para cada latencia libre k, se hace un
Página 52
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
desplazamiento de k posiciones del estado simulando los k ciclos de reloj que han transcurrido, para
obtener el valor del vector de colisiones en ese momento y aplicando un OR binario con el vector de
colisiones original C, a fin de limitar las latencias prohibidas). Si el valor resultante es diferente a los
estados anteriores, se tiene un nuevo estado.
Una vez que se realizan las simulaciones de iniciar una nueva operación para todas las latencias
permitidas de todos estados, se puede construir el diagrama de estados como un grafo, representando
cada estado como nodos de éste. Las transiciones de un estado a otro se representan como arcos cuya
etiqueta muestra cuántas latencias (desplazamientos) se requieren para llegar a ese estado.
▪ Partiendo del vector de colisiones o Estado 1, para las latencias permitidas (2, 3, 4 y 7) simulamos se
inicia una nueva operación. Para la latencia permitida 2: desplazamos 2 posiciones a la derecha y
enmascaramos con C mediante OR:
00101100
(OR) 1 0 1 1 0 0 0 1
▪ Obtuvimos un valor diferente al estado 1 por lo que lo nombramos estado 2. De manera similar, para las
latencias 3 y 4, desplazando 3 y 4 posiciones y aplicamos OR con C, obtenemos nuevos estados 3 y 4.
00010110 00001011
(OR) 1 0 1 1 0 0 0 1 (OR) 10110001
1 0 1 1 0 1 1 1 → Estado 3 1 0 1 1 1 0 1 1 → Estado 4
(con latencia 3) (con latencia 4)
00000001
(OR) 1 0 1 1 0 0 0 1
1 0 1 1 0 1 1 1 → Estado 1 (con latencia 7)
▪ Luego, pasamos al estado 2 y simulamos para cada una de sus latencias permitidas (2 y 7). Para la
latencia 2 se genera el estado 5. Para latencia 7 se retorna al estado 1:
00101111 00000001
(OR) 1 0 1 1 0 0 0 1 (OR) 1 0 1 1 0 0 0 1
1 0 1 1 1 1 1 1 → Estado 5 1 0 1 1 0 0 0 1 → Estado 1
( con latencia 2) ( con latencia 7)
▪ Del estado 3 las latencias permitidas son: 4 y 7. Con latencia 4 se llega al estado 4. Con latencia 7 se
retorna al estado 1:
00001011 00000001
(OR) 1 0 1 1 0 0 0 1 (OR) 1 0 1 1 0 0 0 1
1 0 1 1 1 0 1 1 → Estado 4 1 0 1 1 0 0 0 1 → Estado 1
(con latencia 4) (con latencia 7)
Página 53
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
▪ Del estado 4 las latencias permitidas son: 3 y 7. Con latencia 3 se llega al estado 3. Con latencia 7 se
retorna al estado 1:
00010111 00000001
(OR) 1 0 1 1 0 0 0 1 (OR) 1 0 1 1 0 0 0 1
1 0 1 1 0 1 1 1 → Estado 3 1 0 1 1 0 0 0 1 → Estado 1
(con latencia 3) (con latencia 7)
00000001
(OR) 1 0 1 1 0 0 0 1
1 0 1 1 0 0 0 1 → Estado 1 (con latencia 7)
Habiendo realizado la simulación de todas las inicializaciones de operaciones posibles en el cauce para
todas las latencias permitidas, se obtienen cinco estados y las posibles transiciones entre los mismos con
lo cual se puede construir el diagrama de estados, que se muestra en la figura 2.6.7.
7+
1
7+
10110001 7+
7+
7+ 3 4 2
3 2
10110111 10111101
3 4 4 2
5
10111011 10111111
Los ciclos en el diagrama muestran las secuencias de latencias sostenibles de régimen permanente sin
colisiones.
Se denomina ciclo simple a aquella trayectoria que no repite estado excepto el origen-destino. La
latencia media de un ciclo es la suma de las latencias de un ciclo entre la cantidad de ellas. La máxima
productividad se logra en una secuencia que involucre ciclos con la mínima latencia media (mlm), el
número máximo de repeticiones de etapa (cantidad máxima de x en una fila de la tabla de reserva) es la
cota inferior a la mlm.
Un ciclo simple es avaricioso si cada latencia en el ciclo es la mínima de cada estado por el que pasa
(verificar arcos salientes) y su latencia media es menor o igual al número de latencias prohibidas y mayor
o igual a la mlm. Una buena estrategia de control involucra ciclos avariciosos.
Página 54
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
La mejor estrategia de régimen para este cauce es el ciclo (3, 4), es decir, iniciar una operación, esperar
3 ciclos para iniciar la siguiente, luego esperar 4 ciclos para iniciar la tercera, luego, esperar 3, luego 4
y así en lo sucesivo. De esta forma se obtiene la menor latencia media entre operaciones y por tanto, la
mejor eficiencia del cauce.
Otra opción podría ser alternar con el ciclo (2, 2, 7), que es también avaricioso.
Página 55
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
3 ARQUITECTURAS SIMD
3.1 INTRODUCCIÓN
Un gran inconveniente surgió con los modelos secuenciales de la época, pues las arquitecturas
y lenguajes de programación secuenciales tienen un desempeño muy pobre en este tipo de
operaciones, que regularmente se simulan mediante ciclos, obteniendo tiempos de respuesta
prohibitivos para la mayoría de las aplicaciones requeridas.
Un ejemplo claro es la multiplicación de matrices que involucra tres ciclos anidados con lo cual
cada incremento de las dimensiones multiplica los ciclos por dos factores, lo que nos resulta en
un algoritmo exponencial del orden O(n3):
t FOR I = 1 TO N
FOR J=1 TO M
C [I, J] = 0.0
FOR K=1 TO L
C [I, J] = C [I, J] + A [I, K] * B [K, J]
END FOR
END FOR
ENDFOR
n
Características:
• Colección o arreglo de datos.
• Se almacenan en celdas contiguas en la memoria.
• Independencia de datos (operación en elemento [i, j] no depende de resultado en
[i-1, j-1]).
Página 56
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Exigencias:
Diferentes tipos de operaciones
o f1: V → V (VSQRT, VCOMP –complemento, VSIN, VCOS )
o f2: V → E (VSUM –Sumatoria de elementos, VMAX, VMIN)
o f3: V x V → V (VADD, VMP –Multiplicación de vectores o matrices)
o f4: V x E → V (SMUL – Escalación del vector, SADD –Desplazamiento)
o f5: V x V → E (SMP –Producto punto de vectores)
Las características y exigencias del procesamiento vectorial son propias para la ejecución
segmentada, básicamente porque se eliminan las dificultades de la segmentación (no riesgos
estructurales, de datos o control) permitiendo tener el cauce lleno y generando resultados a par
de elementos por ciclo.
Los procesadores vectoriales son arquitecturas que implementan cauces para procesamiento de
vectores.
Página 57
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Cauces aritméticos.
Supercomputadores Vectoriales / Procesadores vectoriales Asociados
Entradas: Vector –Vector o Vector-Escalar.
Salida a Vector o Escalar.
Requieren registros especiales para control de la longitud del vector.
Formato especial de instrucción
Esquemas o métodos de procesamiento para tratamiento de matrices
o Procesamiento horizontal (filas: izq → der)
o Procesamiento vertical ( columnas: arriba → abajo)
o Procesamiento en bucle ( ciclos de sub-matrices )
Tiempo de retardo de inicialización o preparación del cauce y de paso o flushing.
Entrada de datos/Recepción de salida a alta velocidad.
o Desde Memoria (Requerido acceso rápido)
o Usar registros vectoriales
Página 58
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Página 59
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
CAUCE 1
UNIDAD DE
PROCESAMIENTO DE
INSTRUCCIONES BANCO DE CAUCE 2
(IPU) REGISTROS
ESCALARES
CAUCE n
Procesador
Escalar
CONTROLADOR DE
MEMORIA
INSTRUCCIONES
PRINCIPAL
VECTORIALES
Procesador
Vectorial
CAUCE V1
BANCO DE CAUCE V2
REGISTROS
VECTORIALES
CONTROLADOR DE
ACCESO VECTORIAL
CAUCE Vn
Arreglos de EPs.
Verdaderas máquinas SIMD.
Introducidas en los 70’s, auge en finales de los 80’s.
Requieren gran estructura de EPs para ser eficientes.
Tiempo de ejecución de la instrucción matricial fijo (vs te = n+p+fluss del Vector P. )
Estructuras de interconexión - Comunicación EPs, Memoria y E/S: Topología.
Memoria de alta velocidad para cargar las caches o registros de EPs.
Página 60
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Por otro lado, aunque algunos asumen que el VP es SIMD (punto de vista de la instrucción),
otros los clasifican como simples SISD por cuanto la operación se aplica de forma repetida al
conjunto de datos en diferentes instantes de tiempo.
Los MIMD están todos agrupados en una categoría única que reúne máquinas de muy diferente
potencia de cálculo, complejidad de diseño y coste.
Página 61
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
MEMORIA MEMORIA
P EP EP EP EP
EP EP
EP EP EP
EP EP
EP EP
EP EP EP EP EP EP
EP EP
EP EP EP EP EP EP EP
EP
0 0 0
W2 W1 W0
Z=W*X+Y
Y
W
2 1 0
Página 62
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
A22 A21 0 0
3.7.2 Ejemplares
Primeros: PEPE (Burrogs Corp., 1972) y STARAN (Goodyear, 1972. Construído para la
Marina USA, orientado al procesamiento de objetos de radar). Posteriormente:
procesadores asociativos masivamente paralelos para apoyo en campos y aplicaciones
específicos tales como RDBMS (RAP, Neocore LCC) e Inteligencia Artificial (AM3,
IXM2).
Página 63
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Complejos
Reproducen el comportamiento natural de la estructura de dato
Ganancia significativa sobre homólogo secuencial
Ejemplos:
o Multiplicación de matrices.
▪ Secuencial es O(n3)
▪ Con vectores: O(n2) Carga de vectores, barrer filas por columnas.
- Ganacia es n.
▪ Con SIMD con hipercubos: O(n log2 n)
- Ganacia poco más que n
▪ Con SIMD y Computación VLSI : O(n)
- Ganacia n2
o Clasificación O(n) vs. O( n log2 n) de los secuenciales.
o Transformada rápida de Fourier FFT, ganancia es M2/log2
Página 64
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
4 ARQUITECTURAS MIMD.
4.1. Introducción a los MIMD: Multiprocesadores
Por otro lado, es necesario hacer notar que aunque un sistema común usa un IOP o una FPU
que son en sí procesadores, estos no se consideran Multiprocesador por cuanto cada uno de los
procesadores auxiliares tiene una sola tarea específica y no son capaces de ejecutar programas
del usuario.
Concepto: Sistema que consta de 2 o más CPU interconectadas para permitir la ejecución de
múltiples tareas en paralelo. (n instrucciones en n procesadores ejecutándose a la vez)
Página 65
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Nivel de Aritmética y bits. (Bit Level): En este nivel, el paralelismo se verifica a nivel
aritmético, es decir, tenemos varios procesadores trabajando en paralelo sobre diferentes
secciones de bits de los datos en sí (especie de SIMD a nivel de bits) Este tipo de
procesadores se compone de enlaces de varios bit-slice processors. (Nivel de más fina
granularidad)
Para el caso de los sistemas MP, son comunes los dos primeros niveles de paralelismo. La figura
a continuación ilustra el caso del primer nivel comparando un sistema monoprocesador y uno
MP con procesos:
P P1 P2 P3
Pr
Pr Pr
Pr
Pr
Pr
Pr Pr
Sistema Sistema
Monoprocesador Multiprocesador
- Los primeros son más fáciles de construir y pero presentan limitaciones respecto a la cantidad
de procesadores concurrentes: Problema del ancho de banda de los MP con memoria común:
Implementar memoria local en los “processing environments” o cachés.
Mencionar problemas de diseño con cachés MP: política de escritura (write through
vs write back) y coherencia.
Página 66
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
La manera más sencilla de interconectar varios CPUs con una Memoria común (que puede estar
formada por varios bancos a la vez)
es mediante un Bus común. Esto
permite tener algunos IOPs también. P1 P2 P3 P4
El problema grande de este
acercamiento es eque la memoria se
convierte en cuello de botella,
requiriendo gran ancho de banda en
el acceso a memoria o limitando la
cantidad máxima de contendientes M1 M2 IOP IOP
por el bus. Una medida paliativa
muy eficaz consiste en definir una
jerarquía de memoria de al menos
MIMD con Estructura de interconexión
dos niveles. Muchos MP de
memoria compartida suelen emplear empleando Bus común
pequeñas memorias locales además
de uno o dos niveles de cache.
El uso de una memoria compartida de gran tamaño, organizada en bancos o módulos, también
puede aprovecharse para “paralelizar” el acceso a la memoria mediante entrelazamiento,
permitiendo un acceso “encauzado” a la memoria. Otra solución a la necesidad de ancho de
banda consiste en el ensanchamiento del ancho del bus de datos para permitir mayor velocidad
de transferencia hacia las cachés. También puede crearse puertos a cada banco con lo cual
podría accederse en paralelo a diferentes módulos de la misma Memoria principal o mejor aún,
múltiples accesos al mismo módulo. En los siguiente párrafos veremos cómo se han
aprovechado estas posibilidades mediante nuevas estructuras de interconexión.
Página 67
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
Otra manera de interconectar los CPUs con la memoria, si ésta es modular, consiste en
emplear una estructura de interconexión en forma de una malla de conmutación de circuitos.
La figura muestra un conmutador barra-cruz típico.
Página 68
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
La figura abajo muestra un tipo de red multietapa denominada red delta, por su forma
triangular. Otras redes más complejas permiten caminos alternativos a módulos que no han sido
ocupados. Por ejemplo la red omega. (Investigar la red omega). En cada red multietapa, existen
parámetros que se pueden calcular para poder definir de antemano: cantidad de Conmutadores,
etapas y enlaces necesarios, de acuerdo a la cantidad de CPUs y Módulos de Memoria.
4.2.5 Hipercubo.
Esta red se aplica mayormente a MPs de memoria distribuida y a algunos SIMD. Es una
red de conmutación de paquetes. En este caso, los nodos de la misma no son conmutadores sino
CPUs con su memoria local e inclusive I/O propia. El hipercubo es una red eficiente y escalable.
Presenta algunos retos al diseñador como la asignación de direcciones para los CPUs. Las
direcciones se asignan en forma de cadenas de bits. Un principio establece que dos nodos
contiguos solo diferencian su dirección uno del otro en 1 bit. Esto permite establecer algoritmos
de asignación de direcciones sencillos así como algoritmos de enrutamiento de paquetes o
mensajes. La figura abajo muestra la construcción escalable de hipercubos de 1 a 4 dimensiones.
Página 69
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
La Arquitectura de bus común es muy sencilla y de bajo costo. Requiere acceso exclusivo,
durante un período de tiempo, por tanto se requiere Arbitraje: lógica y controlador que
concede el bus a un dispositivo específico:
Arbitraje fijo: Arbitraje paralelo (Codificador/Decodificador de prioridades)
Arbitraje serial (Cadena de margaritas)
• Otras estructuras de interconexión tienen sus propios esquemas (revisar barra-cruz, red
multietapa, etc)
Página 70
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
En sistemas de bus común, el tráfico y el cuello de botella debido al mismo en el bus, se puede
aliviar significativamente con el uso de cachés. La concurrencia impone altos requisitos a estas
cachés. El principal de ellos es resolver el problema de la coherencia de caché.
Escenario: Varios procesadores ejecutan hilos de un código reentrante que comparte algunas
variables globales. Estas variables son accedidas y actualizadas por todos los procesadores.
Cada vez que un procesador actualice, los demás deben tener noción de ello, pues las copias
quedan incoherentes entre sí.
Página 71
Arquitectura de Máquinas Computadoras III Folleto de apoyo al estudiante
• Uso de un bit de bandera (dirty bit). Cada vez que un procesador va a actualizar su copia,
pone en 1 un bit e interrumpe a los otros para que no actualicen su copia hasta que el
concluya su trabajo, en cuyo caso aquellos sondean el bit periódicamente hasta que el
primero actualiza la M, y el resto refresca su copia. Este esquema se emplea con política
write through y genera bastante tráfico en el bus.
• El segundo esquema, llamado MESI, permite tener perfecto control de los estados de
la caché mediante un diagrama de estados que se va generando dinámicamente en el
funcionamiento de la caché. Revisar en Stallings detalles.
SO para MP debe estar específica y especialmente diseñado para administrar esa arquitectura.
• Administrar la concurrencia
• Manejar la exclusión mutua
• asignación de recursos y tareas
4.6.2 Lenguajes:
Página 72