Integración a muy gran escala y paralelismo VLSI

56
Integración a muy gran escala y paralelismo Ms. Ing. Jairo E. Márquez D. Introducción La tecnología VLSI (Very Large Scale Integration) integración en escala muy grande, ha tenido gran impacto en el diseño de circuitos tolerantes a fallos. Las ventajas introducidas son: Incremento en la densidad de integración, con reducción de tamaño y peso de circuitos. Reducción de la potencia consumida. Reducción de coste en los circuitos integrados (CI). Todo esto ha hecho posible implementar propuestas redundantes en computación tolerante a fallos. “La integración en escala muy grande de sistemas de circuitos basados en transistores en circuitos integrados comenzó en los años 1980, como parte de las tecnologías de semiconductores y comunicación que se estaban desarrollando. Los primeros chips semiconductores contenían sólo un transistor cada uno. A medida que la tecnología de fabricación fue avanzando, se agregaron más y más transistores, y en consecuencia más y más funciones fueron integradas en un mismo chip. El microprocesador es un dispositivo VLSI. La primera generación de computadoras dependía de válvulas de vacío. Luego vinieron los semiconductores discretos, seguidos de circuitos integrados. Los primeros Chips contenían un pequeño número de dispositivos, como diodos, transistores, resistencias y condensadores (aunque no inductores), haciendo posible la fabricación de compuertas lógicas en un solo chip. La cuarta generación (LSI) consistía de sistemas con al menos mil compuertas lógicas. El sucesor natural del LSI fue VLSI (varias decenas de miles de compuertas en un solo chip). Hoy en día, los microprocesadores tienen varios millones de compuertas en el mismo chip.

description

La tecnología VLSI (Very Large Scale Integration) integración en escala muy grande, ha tenido gran impacto en el diseño de circuitos tolerantes a fallos.

Transcript of Integración a muy gran escala y paralelismo VLSI

Page 1: Integración a muy gran escala y paralelismo VLSI

Integración a muy gran escala y paralelismo

Ms. Ing. Jairo E. Márquez D.

Introducción

La tecnología VLSI (VeryLarge Scale Integration)integración en escala muygrande, ha tenido granimpacto en el diseño decircuitos tolerantes a fallos.Las ventajas introducidas son:

Incremento en ladensidad deintegración, conreducción de tamaño ypeso de circuitos.

Reducción de lapotencia consumida.

Reducción de coste enlos circuitos integrados(CI).

Todo esto ha hecho posibleimplementar propuestas redundantes en computación tolerante a fallos.

“La integración en escala muy grande de sistemas de circuitos basadosen transistores en circuitos integrados comenzó en los años 1980, como parte delas tecnologías de semiconductores y comunicación que se estaban desarrollando.

Los primeros chips semiconductores contenían sólo un transistor cada uno. Amedida que la tecnología de fabricación fue avanzando, se agregaron más y mástransistores, y en consecuencia más y más funciones fueron integradas en unmismo chip. El microprocesador es un dispositivo VLSI.

La primera generación de computadoras dependía de válvulas de vacío. Luegovinieron los semiconductores discretos, seguidos de circuitos integrados. Losprimeros Chips contenían un pequeño número de dispositivos,como diodos, transistores, resistencias y condensadores (aunque no inductores),haciendo posible la fabricación de compuertas lógicas en un solo chip. La cuartageneración (LSI) consistía de sistemas con al menos mil compuertas lógicas. Elsucesor natural del LSI fue VLSI (varias decenas de miles de compuertas en unsolo chip). Hoy en día, los microprocesadores tienen varios millones decompuertas en el mismo chip.

Page 2: Integración a muy gran escala y paralelismo VLSI

Hacia principios de 2006 se comercializaban microprocesadores con tecnología dehasta 65 nm, en 2010 se comercializan chipsets con tecnología de 32 nm.” [1] enla actualidad el tamaño se ha reducido en 27 nm aproximadamente.

Sistema VLSI

Actualmente, microprocesadores y otros dispositivos digitales son suficientementecompactos para implementar las técnicas redundantes vistas, incluso integradasen el propio CI [Circuito Integrado].

Sin embargo, existen también algunas desventajas:

Los errores predominantes están en el propio CI y no en los pins o elsoporte como ocurría con SSI, MSI o LSI.

No se pueden asumir fallos simples, ya que una pequeña imperfecciónpuede provocar fallos en una gran área del circuito.

Page 3: Integración a muy gran escala y paralelismo VLSI

Debido a la gran complejidad, se dan fallos de modo común, es decir, dosdispositivos idénticos pueden fallar a la vez y de la misma forma.Ej. Sistemas de duplicación con comparación.

TECNOLOGÍA VLSI

Recordemos que un CI implica que más de un componente se dispone sobre unmaterial semiconductor, implementando las conexiones entre estos componentessobre el propio material.

La clasificación de los CI según la densidad de integración sería:

SSI (Small Scale Integration): Menos de 10 puertas lógicas o 30transistores.

MSI (Medium Scale Integration): Entre 10-100 puertas lógicas o 30-300transistores.

LSI (Large Scale Integration): Entre 100-10000 puertas lógicas o 300-30000transistores.

VLSI (Very Large Scale Integration): Más de 10000 puertas lógicas o 30000transistores.

Las mayores ventajas de usar CI-VLSI son:

Reducción del consumo. La mayoría de las conexiones se hacen en un solochip con lo que se reducen las señales y perdidas por capacitancias parásitas.

Fiabilidad. Al hacer las conexiones internas es más difícil que se rompan odeterioren, por lo que el ratio de averías es más bajo. Los fallos se detectanantes y se evita la propagación de estos.

Reducción de peso y tamaño. Laintegración provoca una reducción detamaño y peso físico en el circuito. Porlo que se puede poner más circuiteríapara implementar redundancia enmenos espacio de manera más fiable ybarata.

Formalización del proceso de diseño.

Se puede formalizar el proceso dediseño tolerante a fallos. Creando unconjunto de reglas y usando un

Page 4: Integración a muy gran escala y paralelismo VLSI

estándar de construcción de bloques basado en VLSI.

TIPOS DE AVERÍAS EN TECNOLOGÍA VLSI

En una primera clasificación, los fallos en CI VLSI pueden dividirse en:

Debidos al proceso de fabricación: partículas extrañas, empaquetamientoinadecuado.

Debidos a perturbaciones externas: Campos electromagnéticos que puedencorromper el metal o romper conexiones.

Se consideran 6 categorías.

1. SISTEMAS DE METAL

Estos sistemas son las finas capas de metal(normalmente aluminio), que hay en los CI parainterconectar los dispositivos que contiene.Debido al incremento en densidad y complejidadde los circuitos, es necesario disponer múltiplescapas de este tipo para realizar las conexiones.

Estas capas se separan mediante materialaislante, con contactos para permitir al metal fluirentre las capas, permitiendo conexiones entreellas.

Las formas más comunes en que se producenfallos en estas son:

Roturas en láminas de metal debido a altas corrientes, que provocanconexiones abiertas.

Uniones de 2 o más líneas adyacentes que provocan resultadoserróneos.

Corrosiones en el metal que degradan la conductividad del material.

2. DIFUSIÓN

Es el proceso por el que ciertos tipos de impurezas se propagan haciadeterminadas regiones. Por ej. En dispositivos MOS hacia el drenaje o surtidor.Este proceso puede introducir fallos en el CI:

Si las cantidades de impurezas no son correctas, puede afectar alcomportamiento del dispositivo.

Si estas son implantadas en zonas erróneas del substrato.

Page 5: Integración a muy gran escala y paralelismo VLSI

Este tipo de fallos puede provocar que la distribución de corrientes no seauniforme a lo largo del conductor.

3. MATERIALES EXTRAÑOS

Aunque en los procesos de fabricación se guardan grandes medidas deseguridad para que no se introduzcan partículas extrañas. Sin embargo, lasaltísimas densidades de integración provocan que sea imposible evitarintrusiones accidentales de partículas que provoquen fallos en la producción.

4. ÓXIDO

Las partículas de óxido se usan en la fabricación de semiconductores comobarrera para los dopantes en el proceso de difusión y como aislante.Posteriormente estas películas se retiran en el proceso de difusión. Tanto alaplicarlo como al retirarlo se pueden producir fallos por la alteración deimpurezas.

5. EMPAQUETAMIENTO

Empaquetar es el proceso de conectarlas líneas del semiconductor con lospines del soporte que aloja eldispositivo. Este soporte suele ser:metálico, cerámico, plástico o devidrio. Debe proteger al semiconductorde humedad y contaminantes, asícomo de golpes y vibraciones. Deigual manera, los fallos que suelendarse son por: rotura de líneas,corrosión o degradación quedegeneran en una pobreconductividad.

6. MONTAJE

Antes de empaquetar el semiconductor, ha de montarse sobre un substratometálico o cerámico para protegerlo. Pueden ocurrir fallos debido a laexpansión del material del montaje por la aplicación de grandes temperaturas.

Otro elemento atener en cuenta, es la DISTRIBUCIÓN DE FALLOS

Mientras en SSI y MSI la mayor parte de los fallos son debidos a:empaquetamiento, montajes defectuosos o uniones del CI, LSI y VLSI losfactores más importantes son el óxido y los fallos eléctricos

Page 6: Integración a muy gran escala y paralelismo VLSI

Tabla 1. Distribución de fallos en MOS LSI.

PROBLEMAS DE LA TECNOLOGÍA VLSI

El principal problema radica en que los fallosson completamente distintos a los de lossistemas SSI, MSI y LSI. Centrándose más enel material semiconductor que en elencapsulado o pines.

Debido a la complejidad se darán más erroresen la etapa de diseño. Por otra parte aldisminuir la tensión de alimentación se reduceel margen de ruido y se incrementan los fallostransitorios.

En concreto los problemas específicos de estatecnología son:

- Averías en modo común: En general, una avería en modo común seproduce cuando 2 o más dispositivos idénticos fallan de la misma forma y en elmismo instante de tiempo. Los fallos de este tipo hacen inoperativos sistemasredundantes o esquemas como sustitución con comparación.

Existen múltiples razones que pueden provocarlo, como: fallos en la alimentacióncomún a la que se conectan, alteraciones electromagnéticas o fallos de diseño.La tecnología VLSI potencia estas averías debido a:

Su complejidad, que provoca muchos errores de diseño.

Page 7: Integración a muy gran escala y paralelismo VLSI

La alta densidad de integración que provoca que módulos que se hallenfísicamente muy cerca, por lo que un mismo fallo puede afectar a variosdispositivos.

La baja tensión de alimentación provoca que pequeñas alteracionesexternas puedan afectar al sistema.

En resumen una avería de modo común es aquellaen la que un fallo simple afecta a 2 o másdispositivos, o distintos fallos afecten a la vez a 2dispositivos de forma que el funcionamientoerróneo no pueda detectarse con métodosredundantes tradicionales.

Más formalmente, si A y B son funcionesimplementadas por 2 módulos idénticos, y Z lafunción que deben producir ambos. Para laentrada I; A(I)=B(I)=Z(I), puede darse que un

mismo fallo afecte a los dos módulos: Af(I)=Bf(I)<>Z(I) o distintos fallos:Af1(I)=Bf2(I)<>Z(I).

- Incremento de los errores de diseño: Recordemos que existen 4causas primarias de fallo:

Errores de implementación. Errores de diseño. Interacciones externas. Defectos aleatorios en componentes.

Hasta ahora habíamos considerado, que los errores de diseño se trataban contécnicas de evitación. Pero esto es factible solo en circuitos simples. Paracircuito VLSI es necesaria la utilización de herramientas específicas de diseño.

- Incremento de susceptibilidad a interferencias externas: Debido a lasreducidas dimensiones de los circuitos VLSI, las líneas adyacentes pueden verseafectadas por el efecto de partículas. Igualmente las bajas tensiones dealimentación provocan que fluctuaciones en esta afecten en gran manera a loscircuitos.

TÉCNICAS REDUNDANTES EN ENTORNOS DE DISEÑO VLSI

Se dividen estás técnicas en 4 categorías principales:

Duplicación con lógica complementaria. Circuitos de autochequeo. Arrays reconfigurables.

Page 8: Integración a muy gran escala y paralelismo VLSI

Aumento de rendimiento.

Duplicación con lógica complementaria

En las técnicas de duplicación con comparación, se duplican los módulos ycomparan resultados. Esto presenta 2 problemas principales:

a. El comparador puede averiarse.b. No podemos asegurar que no sucedan fallos del mismo tipo en el mismo

instante de tiempo.

Una solución a estos problemas puede ser la técnica que nos ocupa. Se basa enla implementación de un módulo con entradas de lógica positiva (es decir nivel alto+5V) y otro con lógica negativa (nivel alto 0V). Por otro lado se basa en la dualidadde las funciones booleanas.

Si tenemos la función: 32'

1321 ),,( xxxxxxf ,

Su función dual será: 32'

1321 )().,( xxxxxxf d .

Es decir, en álgebra booleana, la función dual se calcula intercambiando puertasAND por OR y 1s por 0s. También, se puede obtener fácilmente la funcióncomplementaria fd. Complementando f y sustituyendo cada variable por sucomplementaria Por ejemplo, para la función f: '

32'

1321' )(),,( xxxxxxf y por

tanto:

32'

1'

3'

2'

1'

321 )().,().,( xxxxxxfxxxf d

Esta técnica puede usarse para implementar esquemas como duplicación concomparación, aplicando a un módulo las señales de lógica positiva ycomplementaría las de lógica negativa.

Las ventajas son:

Los módulos son distintos, por lo tanto se reduce la posibilidad de unfallo en modo común.

Las tensiones son opuestas en cada módulo, por lo que un pegado delínea solo afectaría a uno de ellos.

Por ejemplo de implementación, podemos ver la función:

3'

2'

1'

321321 ),,( xxxxxxxxxf

Page 9: Integración a muy gran escala y paralelismo VLSI

Con ))((),,( 3'

2'

1'

321321 xxxxxxxxxf d

Fig. 1. Duplicación con comparación usando lógica complementaria.

Problemas que surgen:

El proceso de conversión de lógica positiva a negativa es muy complejo. La implementación de la función dual dentro del mismo dispositivo

puede ser inviable.

Circuitos de autochequeo

Como se ha visto, en esquemas como duplicación con comparación, un fallo enel comparador provocará que el circuito completo falle. Existen sistemas que nopueden permitir estos fallos. De ahí la importancia de diseñar comparadores ychequeadores de códigos capaces de detectar sus propios fallos sin lanecesidad de estímulos externos.

Conceptos de lógica de autochequeo

Fallo seguro: Son circuitos que ante un fallo simple, producen el códigocorrecto o un código no aceptable.

Page 10: Integración a muy gran escala y paralelismo VLSI

Autochequeable: Son aquellos circuitos que contienen al menos un código deentrada válido, que produciría un código no aceptable a la salida si hay fallo enel circuito.

Totalmente autochequeable: Son aquellos circuitos de fallo seguro yautotesteables. La estructura general de un circuito totalmente autochequeable(TSC) , sería:

Fig. 2. Estructura básica de un circuito totalmente autochequeable.

La función del chequeador es indicar si la salida del circuito es un código válido,además este se autochequea a si mismo. Debe ofrecer salidas complementadasde 2 bits si todo va bien y no complementadas si existe fallo. Esto detectaría losfallos por pegados a línea. Esta forma de salida se dice que posee la propiedad decódigo disjunto. El chequeador TSC más habitual es el de 2 carriles.

Fig. 3. Diagrama de bloques básico de un chequeador de 2 carriles.

Page 11: Integración a muy gran escala y paralelismo VLSI

Las salidas del circuito serán complementarias, si lo son las palabras deentrada y no hay fallos. Un ejemplo, es la implementación para entradas de dosbits sería:

Fig. 4. Chequeador de 2 carriles totalmente autochequeable de 2 bits.

Los códigos de entrada para este circuito deben tener '1100 y yxyx ' .

Es fácil obtener las salidas:

10102

10101

yyxxe

xyyxe

y si suponemos una entrada correcta con '1100 y yxyx ' . Las salidas serán:

'10

'1

'0102

101'

0'

101

)( xxxxxxe

xxxxxxe

Que como puede observarse son complementarias. Con la misma técnica puedecomprobarse, como cuando las entradas no son complementadas, tampoco loserán las salidas.

Comprobemos que es TSC, demostrando que es de fallo seguro yautochequeable. Al estar separados los circuitos que generan las señales de error,cualquier fallo en las entradas provoca que las señales de error no seancomplementarias, por lo que es de fallo seguro.

Page 12: Integración a muy gran escala y paralelismo VLSI

Al ser el circuito no redundante, cualquier fallo en una línea afectará la salida almenos para un código de entrada, por lo que es autochequeable. Estosdispositivos se pueden conectar en cascada para construir comparadores de másbits.

Fig. 5. Chequeador totalmente autochequeable de 8 bits con bloques de 2 bits.

Arrays reconfigurables

El desarrollo de la tecnología VLSI ha permitido la implementación eficiente deestructuras de tipo array para la computación paralela.

Un solo chip puede contener miles de elementos de proceso conectados enforma de array. Sin embargo se plantean 2 problemas que resolver contécnicas de tolerancia fallos:

1. Un chip puede contener elementos erróneos, que necesariamente tienenque poder puentearse, para poder obtener resultados correctos en lasoperaciones paralelas.

2. Existen aplicaciones que necesitan que el array de elementos deproceso, se reconfigure caso de ocurrir un fallo.

Page 13: Integración a muy gran escala y paralelismo VLSI

Existen 3 tipos de reconfiguración:

a. Reconfiguración en tiempo de fabricación.b. Reconfiguración en tiempo de compilación.c. Reconfiguración en tiempo real.

Reconfiguración en tiempo de fabricación y compilación.

Ambas reconfiguraciones tienen atributos similares:

- No requieren la interrupción del sistema para realizarse.- El tiempo de reconfiguración no esta limitado.

La diferencia entre ambos sería elmomento en el que se realizan lasacciones de reconfiguración. Entiempo de fabricación se realizadespués del proceso de fabricacióny en principio es permanente.

En tiempo de compilación serealiza cuando el sistema ya llevaun tiempo funcionando y puederepetirse, al no ser permanente.

Los dispositivos con arrays como memorias, se pueden diseñar con numerosastécnicas de reconfiguración en tiempos de fabricación y compilación.Consideraremos 3 de ellos:

a. El uso de repuestos de columnas o filas simple y la estrategia desustitución en rizo.

b. El uso de repuesto de filas y de columnas y la técnica de robo defallo.

c. El uso de múltiples repuestos de filas y columnas y el algoritmo demáxima reparación.

Estrategia de sustitución en rizo

El procedimiento redundante más simple es añadir una columna al array original.Sirviendo los elementos de este de repuesto para reemplazar los elementos deproceso erróneos del array original.

El proceso consiste en el reemplazo de un elemento erróneo por su vecino.Repitiendo este proceso hasta la fila o columna de repuesto.

Page 14: Integración a muy gran escala y paralelismo VLSI

Fig. 6. Ejemplo de un array de 4x4 reconfigurado con estrategia de sustitución en rizo.

Como puede extraerse del ejemplo, para realizar el proceso de reconfiguración,un elemento (i, j), debe ser capaz de recibir información desde (i,j-2), (i-1,j-1) y(i-1,j+1) y proporcionarla a (i,j+2), (i+1,j-1) y (i+1,j+1).

Page 15: Integración a muy gran escala y paralelismo VLSI

Fig.7. Elemento básico de interconexión para soportar sustitución en rizo.

Una forma de implementar este esquema sería conectar entradas y salidas amultiplexores que puedan configurarse para encaminar la información.

Estrategia de sustitución por robo de fallo

El mayor problema de la estrategia anterior es que no puede manejar más que unfallo por fila o columna. En este caso se añade una fila y una columna derepuesto, luego en un array de NxN se pasaría a dimensiones (N+1)x(N+1).

El algorítmo comienza en la posición (1,1) y rastrea filas de arriba a bajo de lamisma manera que hacia la sustitución en rizo.

Si una fila contiene más de un error, el fallo más a la derecha se reemplazautilizando sustitución en rizo. El resto de fallos se sustituye por los elementosinmediatamente por debajo en el array.

Page 16: Integración a muy gran escala y paralelismo VLSI

Fig. 8. Ejemplo de array 4x4 reconfigurado con robo de fallo.

Estrategia de sustitución con máxima reparación

Esta estrategia requiere disponer de múltiples filas y columnas de sustitutos. Setrata de intentar reemplazar fila y columnas, con elementos erróneos, por completopor las de repuesto. El algoritmo se basa en construir un grafo cuyos nodos sonnúmero de filas y columnas, y cuyas aristas unen columnas y filas que denotenuna posición de elemento erróneo.

Page 17: Integración a muy gran escala y paralelismo VLSI

Fig. 9. Array con elementos erróneos y su grafo.

Se tratará de sustituir el nodo con mayor número de conexiones, es decir lacolumna o fila con más elementos erróneos, por una sustituta y asísucesivamente. La desventaja de este algoritmo es que no siempre es posibleencontrar la solución para reparar el array.

Page 18: Integración a muy gran escala y paralelismo VLSI

Reconfiguración en tiempo real

Es la más complicada de las reconfiguraciones, ya que debe realizarse con elsistema en funcionamiento. Por tanto el tiempo que tarde en realizarse es unfactor crítico.

Hay dos tipos de técnicas:

a. Basadas en eliminación sucesiva de filas y/o columnas, una vezdetectado el fallo.

Eliminación sucesiva de filas. Eliminación sucesiva de columnas Eliminación alternada de filas y columnas.

b. Basados en la corrección de información errónea. Algoritmo basado en Tolerancia a fallos.

Eliminación sucesiva de filas/columnas

La idea básica es eliminar la fila donde se detecte el fallo. Luego el array tendráuna fila o columna de menos. Esta técnica es aplicable en arrays de tamañovariable y se implementa mediante switches programables que realizan el procesode puenteo de filas o columnas.

La ventaja de esta técnica es su simplicidad, por el contrario al eliminar filas ocolumnas enteras se desperdician muchos elementos de proceso útiles. Cuando

Page 19: Integración a muy gran escala y paralelismo VLSI

es necesario que las dimensiones del array permanezcan fijas, puede combinarseesta técnica con la de introducción de filas/columnas de repuesto.

Fig. 10. Reconfiguración de Array 4x4 utilizando eliminación sucesiva de filas.

Page 20: Integración a muy gran escala y paralelismo VLSI

Eliminación alternada de filas y columnas

La idea básica es alternar la eliminación de filas y columnas. Si el fallo anterior sehabía manejado con la eliminación de una fila, en el actual se usará la eliminaciónde columnas y viceversa.

La ventaja sería la tolerancia a múltiples fallos y la desventaja, la complejidad queimplica. Por ejemplo, sea un array de 3x3, que incluye también fila y columna derepuesto.

Fig. 11. Reconfiguración con alternación y sustitutos.

Page 21: Integración a muy gran escala y paralelismo VLSI

Algoritmo basado en Tolerancia a Fallos

Esta técnica es usada en particular, para la comprobación de multiplicacionesde matrices y se basa en el uso de los checksums.

Supóngase el desarrollo de la multiplicación de matrices AB=C con

2221

1211

2221

1211 ybb

bbB

aa

aaA se trataría de añadir una fila con los checksums

de A;221232

211131

aaa

aaa

y una columna a B:222123

121113

bab

bbb

Con lo que A’B’=C’ quedaría:

333231

232221

131211

232221

131211

3231

2221

1211

ccc

ccc

ccc

bbb

bbb

aa

aa

aa

Siendo

2221

1211

cc

ccC la matriz resultado y

323133221232211131222123121113 ,,,, ccccccccccccccc

Por lo que será sencillo detectar un fallo en un elemento de proceso gracias alos checksums.

AUMENTO DE RENDIMIENTO

Una aplicación importante de las técnicas redundantes en el diseño en entornosVLSI es el aumento del rendimiento de estos CI. Definiendo rendimiento comola cantidad de dispositivos fabricados que funcionan bien respecto al total. Enalgunos casos es de solo el 90%.

Debido a este habitual malfuncionamiento de un porcentaje considerable dedispositivos, es importante la inclusión de redundancia en estos. Se handesarrollado múltiples modelos, pero la mayor parte coinciden en:

a. Las averías en CI son el resultado de los llamados defectos puntuales.Estos se localizan en áreas del CI que solo suelen afectar a un módulode este.

b. Un defecto puntual simple hará el chip inoperativo, a menos que seincluya algún tipo de redundancia.

Page 22: Integración a muy gran escala y paralelismo VLSI

c. Los defectos puntuales siguen una distribución aleatoria en sentidofísico. Es decir, el número de defectos en un área del dispositivo es unavariable aleatoria.

Los modelos más simples asumen que la probabilidad p de que un chip este librede defectos es DAep , siendo A el área del chip y D el número de defectosesperado por unidad de área.

Gracias a la modelización puede estudiarse de que forma aumenta el rendimientode los CI la inclusión de determinados tipos de redundancia. Pudiendo así elegir latécnica adecuada.

Computación paralela [2]

La computación paralela es una técnica de programación en la quemuchas instrucciones se ejecutan simultáneamente. [2] Se basa en el principio deque los problemas grandes se pueden dividir en partes más pequeñas que puedenresolverse de forma paralela (no es lo mismo que concurrente). Existen variostipos de computación paralela: paralelismo a nivel de bit, paralelismo a nivel deinstrucción, paralelismo de datos1 y paralelismo de tareas2.

Durante muchos años, la computación paralela se ha aplicado en la computaciónde altas prestaciones, pero el interés en ella ha aumentado en los últimos añosdebido a las restricciones físicas que impiden el escalado en frecuencia. La

1 Paralelismo de datos es un paradigma de la programación concurrente que consiste en subdividir elconjunto de datos de entrada a un programa, de manera que a cada procesador le corresponda un subconjuntode esos datos. Cada procesador efectuará la misma secuencia de operaciones que los otros procesadores sobresu subconjunto de datos asignado. En resumen: se distribuyen los datos y se replican las tareas.

Idealmente, esta ejecución simultánea de operaciones, resulta en una aceleración neta global del cómputo. Elparalelismo de datos es un paradigma suficientemente adecuado para operaciones sobre vectores y matrices,dado que muchas de ellas consisten en aplicar la misma operación sobre cada uno de sus elementos.

2 Paralelismo de tareas es un paradigma de la programación concurrente que consiste en asignar distintastareas a cada uno de los procesadores de un sistema de cómputo. En consecuencia, cada procesador efectuarásu propia secuencia de operaciones.

En su modo más general, el paralelismo de tareas se representa mediante un grafo de tareas, el cual essubdividido en subgrafos que son luego asignados a diferentes procesadores. De la forma como se corte elgrafo, depende la eficiencia de paralelismo resultante. La partición y asignación óptima de un grafo de tareaspara ejecución concurrente es un problema NP-completo, por lo cual en la práctica se dispone de métodosheurísticos aproximados para lograr una asignación cercana a la óptima.

Sin embargo, existen ejemplos de paralelismo de tareas restringido que son de interés en programaciónconcurrente. Tal es el caso del paralelismo encauzado, en el cual el grafo tiene forma de cadena, donde cadanodo recibe datos del nodo previo y sus resultados son enviados al nodo siguiente. El carácter simplificado deeste modelo permite obtener paralelismo de eficiencia óptima. Recuperado el 29 de septiembre de 2012.http://es.wikipedia.org/wiki/Paralelismo_de_

Page 23: Integración a muy gran escala y paralelismo VLSI

computación paralela se ha convertido en el paradigma dominante enla arquitectura de computadores, principalmente en los procesadores multinúcleo.[3] Sin embargo, recientemente, el consumo de energía de los ordenadoresparalelos se ha convertido en una preocupación. [4]

Fig. 12. La supercomputadora Cray-2 fue la más rápida del mundo desde 1985 hasta 1989.

Los ordenadores paralelos se pueden clasificar según el nivel de paralelismo queadmite su hardware: los ordenadores multinúcleo y multiproceso tienen varioselementos de procesamiento en una sola máquina, mientras que los clusters,los MPPy los grids emplean varios ordenadores para trabajar en la misma tarea.

Los programas de ordenador paralelos son más difíciles de escribir que lossecuenciales [5] porque el paralelismo introduce nuevos tipos de errores desoftware, siendo las condiciones de carrera los más comunes. La comunicación yla sincronización entre las diferentes subtareas son típicamente las grandesbarreras para conseguir un buen rendimiento de los programas paralelos.El incremento de velocidad que consigue un programa como resultado de laparalelización viene dado por la ley de Amdahl.[6].

Nota1: La computación concurrente es la simultaneidad en la ejecución demúltiples tareas interactivas. Estas tareas pueden ser un conjuntode procesos o hilos de ejecución creados por un único programa. Las tareas sepueden ejecutar en una sola unidad central de proceso (multiprogramación),en varios procesadores o en una red de computadores distribuidos. La

Page 24: Integración a muy gran escala y paralelismo VLSI

programación concurrente está relacionada con la programación paralela, peroenfatiza más la interacción entre tareas. Así, la correcta secuencia deinteracciones o comunicaciones entre los procesos y el acceso coordinado derecursos que se comparten por todos los procesos o tareas son las claves de estadisciplina.

Nota 2: “En teoría de la complejidad computacional, la clase de complejidad NP-completo [nondeterministic polynomial time ("tiempo polinomial no determinista")]es el subconjunto de los problemas de decisión en NP tal que todo problema enNP se puede reducir en cada uno de los problemas de NP-completo. Se puededecir que los problemas de NP-completo son los problemas más difíciles de NP ymuy probablemente no formen parte de la clase de complejidad P. La razón esque de tenerse una solución polinómica para un problema NP-completo, todos losproblemas de NP tendrían también una solución en tiempo polinómico.

Si se demostrase que un problema NP-completo, llamémoslo A, no se pudieseresolver en tiempo polinómico, el resto de los problemas NP-completos tampocose podrían resolver en tiempo polinómico. Esto se debe a que si uno de losproblemas NP-completos distintos de A, digamos X, se pudiese resolver en tiempopolinómico, entonces A se podría resolver en tiempo polinómico, por definición deNP-completo. Ahora, pueden existir problemas en NP y que no sean NP-completos para los cuales exista solución polinómica aun no existiendo soluciónpara A.

Como ejemplo de un problema NP-completo encontramos el problema de la sumade subconjuntos que se puede enunciar como sigue: dado un conjunto S deenteros, ¿existe un subconjunto no vacío de S cuyos elementos sumen cero? Es

Page 25: Integración a muy gran escala y paralelismo VLSI

fácil verificar si una respuesta es correcta, pero no se conoce mejor solución queexplorar todos los 2n-1 subconjuntos posibles hasta encontrar uno que cumpla conla condición.” [7]

Algoritmo paralelo [8]

En las ciencias de la computación, un algoritmo paralelo, en oposición a losalgoritmos clásicos o algoritmos secuenciales, es un algoritmo que puede serejecutado por partes en el mismo instante de tiempo por varias unidades deprocesamiento, para finalmente unir todas las partes y obtener el resultadocorrecto.

Algunos algoritmos son fácilmente divisibles en partes; como por ejemplo, unalgoritmo que calcule todos los números primos entre 1 y 100, donde se podríadividir los números originales en subconjuntos y calcular los primos para cada unode los subconjuntos de los números originales; al final, uniríamos todos losresultados y tendríamos la solución final del algoritmo. Otro ejemplo, puede serel cálculo de Pi en paralelo.

Por el contrario, a veces los problemas no son tan fácilmente paralelizables, de ahíque estos problemas se conozcan como problemas inherentemente secuenciales.Como ejemplo de estos métodos tendríamos los métodos numéricos iterativoscomo el método de Newton o el problema de los tres cuerpos. Por otro lado,algunos problemas son difícilmente paralelizables, aunque tengan una

Page 26: Integración a muy gran escala y paralelismo VLSI

estructura recursiva. Como ejemplo de esto último tendríamos la búsquedaprimero en profundidad en un grafo.

Los algoritmos paralelos son importantes porque es más rápido tratar grandestareas de computación mediante la paralelización que mediante técnicassecuenciales. Esta es la forma en que se trabaja en el desarrollo de losprocesadores modernos, ya que es más difícil incrementar la capacidad deprocesamiento con un único procesador que aumentar su capacidad de cómputomediante la inclusión de unidades en paralelo, logrando así la ejecución de variosflujos de instrucciones dentro del procesador. Pero hay que ser cauto con laexcesiva paralelización de los algoritmos ya que cada algoritmo paralelo tiene unaparte secuencial y debido a esto, los algoritmos paralelos puedes llegar a un puntode saturación (ver Ley de Amdahl, esta se explica en clase). Por todo esto, a partirde cierto nivel de paralelismo, añadir más unidades de procesamiento puede sóloincrementar el coste y la disipación de calor.

El coste o complejidad de los algoritmos secuenciales se estima en términos delespacio (memoria) y tiempo (ciclos de procesador) que requiera. Los algoritmosparalelos también necesitan optimizar la comunicación entre diferentes unidadesde procesamiento. Esto se consigue mediante la aplicación de dos paradigmas deprogramación y diseño de procesadores distintos: memoria compartida o paso demensajes.

La técnica memoria compartida necesita del uso de cerrojos en los datos paraimpedir que se modifique simultáneamente por dos procesadores, por lo que se

Page 27: Integración a muy gran escala y paralelismo VLSI

produce un coste extra en ciclos de CPU desperdiciados y ciclos de bus. Tambiénobliga a serializar alguna parte del algoritmo.

La técnica paso de mensajes usa canales y mensajes pero esta comunicaciónañade un coste al bus, memoria adicional para las colar y los mensajes y latenciaen el mensaje. Los diseñadores de procesadores paralelos usan buses especialespara que el coste de la comunicación sea pequeño pero siendo el algoritmoparalelo el que decide el volumen del tráfico.

Finalmente, una subclase de los algoritmos paralelos, los algoritmosdistribuidos son algoritmos diseñados para trabajar en entornos tipo clusters yde computación distribuida3, donde se usan otras técnicas, fuera del alcance delos algoritmos paralelos clásicos.

Procesamiento secuencial y paralelo. Tareas, ordenadores y cerebro [9]4

3 La computación distribuida o informática en malla, es un modelo para resolver problemas decomputación masiva utilizando un gran número de ordenadores organizados en racimos incrustados en unainfraestructura de telecomunicaciones distribuida.

Un sistema distribuido se define como: una colección de computadoras separadas físicamente y conectadasentre sí por una red de comunicaciones distribuida; cada máquina posee sus componentes de hardware ysoftware que el usuario percibe como un solo sistema (no necesita saber qué cosas están en qué máquinas). Elusuario accede a los recursos remotos (RPC) de la misma manera en que accede a recursos locales, o un grupode computadores que usan un software para conseguir un objetivo en común.

Los sistemas distribuidos deben ser muy confiables, ya que si un componente del sistema se descompone otrocomponente debe ser capaz de reemplazarlo, esto se denomina tolerancia a fallos.

Características

1. Para cada uno de los usuarios debe ser similar al trabajo en el Sistema Centralizado.2. Seguridad interna en el sistema distribuido.3. Se ejecuta en múltiples Computadoras.4. Tiene varias copias del mismo Sistema Operativo o de diferentes Sistemas Operativos que proveen

los mismos servicios.5. Entorno de trabajo cómodo.6. Dependiente de redes (LAN, MAN, WAN, etc.).7. Compatibilidad entre los dispositivos conectados.8. Transparencia (El uso de múltiples procesadores y el acceso remoto debe ser invisible).2

9. Interacción entre los equipos.10. Diseño de software compatible con varios usuarios y sistemas operativos.

El tamaño de un sistema distribuido puede ser muy variado, ya sean decenas de hosts (red de área local),centenas de hosts (red de área metropolitana), y miles o millones de hosts (Internet); esto sedenomina escalabilidad.

Fuente de consulta. Computación distribuida. http://es.wikipedia.org/wiki/Computaci%C3%B3n_distribuida4 Con permiso del autor para modificación del contenido.

Page 28: Integración a muy gran escala y paralelismo VLSI

El procesamiento secuencial o paralelo tiene una importancia trascendental en laeficiencia de los procesos que se realizan. Esto incluye los procesos realizadospor el cerebro, por los ordenadores o por distintas organizaciones. Pero esimportante fijarse en las tareas. Unas se pueden paralelizar y otras no.

Fig. 13. Representación de tareas en procesamiento.

Se produce un procesamiento secuencial cuando una tarea va después deotra. Es un proceso lento en el que si una tarea se retrasa, el sistema completodebe esperar. La ventaja es que es fácil de entender y de implementar.

En el procesamiento paralelo, varios procesos ocurren al mismotiempo mejorando el rendimiento general del sistema. Su contrapartida es lacomplejidad. No siempre se puede paralelizar una tarea. Aunque se pueda, nosiempre es fácil hacerlo. En principio, cuantos más nodos actúen en paralelo, másrápido ira el sistema. Hasta cierto punto. Lo común es que haya un límite en queañadir más nodos no aumente la eficiencia, sino que incluso la reduzca.Normalmente las tareas en paralelo tienen una fase secuencial al principio en laque se dividen las tareas y otra al final en la que consolidan resultados.

Tareas secuenciales.

Page 29: Integración a muy gran escala y paralelismo VLSI

Leer una novela (obligatoriamente una página detrás de otra, si no, elresultado varía).

Consultar el saldo, dar dinero, actualizar el saldo (en un cajero automático) Ver a alguien, reconocerle, preguntarle por su familia.

Tareas paralelas

Consultar entra varias personas palabras en la enciclopedia (personas enparalelo)

Contar los votos en un proceso electoral (mesas en paralelo). Buscar los “López” en una base de datos. (se divide la base de datos en

trozos y se busca en paralelo). Reconocer a una persona. Se analizan los rasgos faciales, el movimiento,

los gestos, la voz, la entonación en paralelo.

Ordenadores

Haciendo de la necesidad virtud, los ordenadores se han movidodel procesamiento secuencial al paralelo.

Hace tiempo que la miniaturizaciónde los componentes HW estállegando a su fin. Cuanto máspequeños los chips, más rápidos yfiables. Pero también se calientanmás. Si no puedo fabricarprocesadores más rápidos ¿quépuedo hacer? La respuesta es:poner más. Así, los chips actualeshan pasado de ser de 1 corea multicore (procesador se entiendea veces como core o unidad deproceso CPU y a veces como chip opieza de HW visible que con patillasse engancha a la placa base). Losactuales chips son de 2, 4 u 8 cores.

Pero hacer trabajar a 8 cores supone ejecutar tareas en paralelo. Existen dostipos de soluciones: trabajar con varias tareas distintas en paralelo: una busca eninternet, otra dibuja en la pantalla, otra calcula un gráfico… La otra posibilidad esque una tarea se descomponga en pasos paralelos que se ejecutensimultáneamente. Que como se sabe esto es difícil.

La programación paralela puede ser muy compleja, muchas tareas no lo permiteny los resultados no siempre son buenos (no escalan bien, es decir, a partir decierto punto, a más cores, no hay más rendimiento). Así que es muy posible que

Page 30: Integración a muy gran escala y paralelismo VLSI

un flamante chip de 8 procesadores tenga inactivos muchos de ellos la mayorparte del tiempo.Los superordenadores son ordenadores con decenas de miles de procesadoresen paralelo que procesan petaflops y consumen megavatios.

Cerebro

El cerebro es un órgano de procesamiento de información masivamente paralelo.Cientos de miles de millones de neuronas actúan simultáneamente de una formaen la que cualquier producto humano (superordenadores) palidece encomparación.

Cada retina tiene millones de conos y bastoncillos que perciben la luz, la procesany la envían a través del nervio óptico de forma simultánea. La corteza visualprocesa de forma paralela esta información para reconocer puntos, rayas, rayasorientadas, rayas orientadas en movimiento, objetos, caras… Sin perjuicio de queotras áreas y neuronas puedan mantener el equilibrio corporal, escuchar unaconversación.

El cerebro también procesa la información en serie puesto que hay tareas quedeben de procesarse en serie. Así, primero se percibe, luego se decide y luego seejecuta. Es muy notable que somos conscientes algunos milisegundos después dehaber tomado una decisión de modo que un observador con el debido aparatajepuede conocer nuestra decisión antes que nosotros.

Cuando llegamos al pensamiento lógico, este es estrictamente secuencial,convirtiéndose en un cuello de botella. Por ejemplo al realizar una operación

Page 31: Integración a muy gran escala y paralelismo VLSI

matemática. Así mientras podemos reconocer una cara en milisegundos,invertimos muchos segundos en realizar una multiplicación compleja o fracasamospor completo. El proceso secuencial del cerebro es más evidente aún en elparadigma de interferencia de tareas donde una tarea dificulta o impide larealización de otra, porque querámoslo o no, sólo podemos tomar una decisión altiempo.

Arquitectura en pipeline

Unidades centrales de procesamiento (CPU) son impulsadas por un reloj. Cadapulso de reloj no es necesario hacer la misma cosa, sino la lógica de la CPU dirigepulsos sucesivos a diferentes lugares para realizar una secuencia útil. Haymuchas razones que la ejecución completa de una instrucción de máquina nopuede suceder al mismo tiempo. Por ejemplo, si un pulso de reloj gestiona unregistro o comienza un cálculo, será necesario algún tiempo para que el valor seaestable a las salidas del registro o para que el cálculo sea completo. Es importanteanotar, que una instrucción de lectura de una unidad de memoria no puederealizarse al mismo tiempo que una instrucción que se ejecuta en la misma unidadde memoria.

Con base en lo anterior, se establece un número de pasos relacionados a laarquitectura del sistema. Por ejemplo, para un pipeline RISC, comprende:

1. Recuperación de instrucciones2. Instrucción, descifrado y busca de registros3. Ejecutar4. Acceso a la memoria5. Registrarse y escribir de nuevo

Como la tubería se hace "más compleja" (con un mayor número de pasosdependientes), un paso dado puede ser implementado con un circuito simple, quepuede hacer que el reloj del procesador funcione más rápido.

Nota: Un procesador se dice que es de plena conexión si se puede obtener unainstrucción en cada ciclo. En la medida en que algunas instrucciones ocondiciones requieren algunos retrasos que impiden ir a buscar nuevasinstrucciones, el procesador no está totalmente canalizado.

La arquitectura en pipeline (basada en filtros) consiste en ir transformando unflujo de datos en un proceso5 comprendido por varias fases secuenciales, siendola entrada de cada una la salida de la anterior.

5 Un proceso es un programa en ejecución, donde la unidad de actividad se caracteriza por la ejecución deuna secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados.

Page 32: Integración a muy gran escala y paralelismo VLSI

Esta arquitectura es muy común en el desarrollo de programas para el intérpretede comandos, ya que se pueden concatenar comandos fácilmente con tuberías(pipe).

También es una arquitectura muy natural en el paradigma de programaciónfuncional, ya que equivale a la composición de funciones matemáticas.

“Una tubería (pipe, cauce o '|') consiste en una cadena de procesos conectadosde forma tal que la salida de cada elemento de la cadena es la entrada delpróximo. Permiten la comunicación y sincronización entre procesos. Es común eluso de buffer de datos6 entre elementos consecutivos.

6 Un buffer (o búfer), es un espacio de memoria, en el que se almacenan datos para evitar que el programa orecurso que los requiere, ya sea hardware o software, se quede sin datos durante una transferencia.Normalmente los datos se almacenan en un buffer mientras son transferidos desde un dispositivo de entrada(como un ratón) o justo antes de enviarlos a un dispositivo de salida (como unos altavoces). También puedeutilizarse para transferir datos entre procesos, de una forma parecida a los bufferes utilizados entelecomunicaciones. Un ejemplo de esto último ocurre en una comunicación telefónica, en la que al realizaruna llamada esta se almacena, se disminuye su calidad y el número de bytes a ser transferidos, y luego seenvían estos datos modificados al receptor.

Los buffers se utilizan, a menudo, conjuntamente con E/S de hardware, tal como unidades de disco, enviar orecibir datos a/o desde una red, o reproducción de sonido. Una línea a una montaña rusa en un parque deatracciones comparte muchas similitudes. Las personas que viajan en la montaña llegan, a menudo, a un ritmodesconocido y variable, pero la montaña rusa será capaz de cargar personas de golpe (tal como llegan se vanmontando). La zona de la cola actúa como un buffer: un espacio temporal donde los que deseen viajar debenesperar a que el viaje esté disponible. Los buffers utilizan generalmente un método FIFO (primero en entrar,primero en salir), es decir, la salida de datos se produce en el orden en que llegaron...

Diferencias con la caché: Una caché puede ser usada a veces como un buffer, y viceversa. Sin embargo, unacaché opera con el supuesto de que los mismos datos van a ser utilizados múltiples veces, que los datosescritos serán leídos en un periodo corto de tiempo, o teniendo en cuenta la posibilidad de múltiples lecturas oescrituras para formar un único bloque más grande. Su premisa básica es reducir los accesos a losalmacenamientos de nivel más bajo, los cuales son bastante lentos. La caché también es normalmente unacapa de abstracción que está diseñada para ser invisible.

Una caché de disco o archivo de caché guarda las estadísticas de los datos almacenados en él y proporcionadatos con un tiempo máximo de espera en modos de escritura en diferido. Un buffer, por el contrario, no hacenada de esto, sino que es utilizado normalmente en entrada, salida y a veces, almacenamiento temporal dedatos que se enrutan entre distintos dispositivos o que van a ser modificados de manera no secuencial antes deser escritos o leídos de manera secuencial.Ejemplos:

Los buffers comando/orden en CONFIG.SYS de DOS. El buffer entre un puerto serie (UART) y un módem. La velocidad del puerto COM puede ser de

38400 bps, mientras que el módem puede soportar sólo 14400 bps. El buffer integrado en un disco duro, una impresora o cualquier otro dispositivo de hardware. El buffer de una tarjeta de vídeo donde se van almacenando cada fotograma.

Fuente: Buffer. Recuperado el 29 de septiembre de 2012. http://es.wikipedia.org/wiki/Buffer_de_datos

Page 33: Integración a muy gran escala y paralelismo VLSI

Fig. 14. Estructura general de un pipeline. Consiste de cuatro etapas, las cajas de coloresrepresentan instrucciones independientes el uno del otro

La gráfica 14 muestra una tubería genérica con cuatro etapas:

1. Ir a buscar2. Decodificar3. Ejecutar4. Write-back

El cuadro gris de arriba es la lista de instrucciones en espera de ser ejecutado, elcuadro gris de abajo es la lista de instrucciones que se han completado, y la mitadde caja blanca es la tubería.

Ejecución es el siguiente:

Page 34: Integración a muy gran escala y paralelismo VLSI

Tiempo Ejecución

0 Cuatro instrucciones están en espera de ser ejecutado

1 la instrucción verde se recupera de la memoria

2 la instrucción se decodifica verde

la instrucción púrpura se recuperan de la memoria

3 la instrucción se ejecuta verde (operación real se lleva a cabo)

la instrucción se decodifica púrpura

la instrucción azul se recupera

4

los resultados de la instrucción verde se vuelve a escribir en el archivo deregistro o memoria

la instrucción se ejecuta púrpura

la instrucción azul se decodifica

la instrucción rojo se recupera

5

la instrucción verde se completa

la instrucción púrpura se escribe de nuevo

la instrucción azul se ejecuta

la instrucción se decodifica rojo

6 La instrucción púrpura se completa

la instrucción azul se escribe de nuevo

la instrucción rojo se ejecuta

7 la instrucción azul se completa

la instrucción rojo se escribe de nuevo

8 la instrucción rojo se completa

9 Los cuatro instrucciones se ejecutan

La comunicación por medio de tuberías se basa en lainteracción productor/consumidor, los procesos productores (aquellos queenvían datos) se comunican con los procesos consumidores (que reciben datos)

Page 35: Integración a muy gran escala y paralelismo VLSI

siguiendo un orden FIFO. Una vez que el proceso consumidor recibe un dato, estese elimina de la tubería.

Las tuberías (pipes) están implementadas en forma muy eficiente en los sistemasoperativos multitarea, iniciando todos los procesos al mismo tiempo, y atendiendoautomáticamente los requerimientos de lectura de datos para cada procesocuando los datos son escritos por el proceso anterior. De esta manera elplanificador de corto plazo va a dar el uso de la CPU a cada proceso a medida quepueda ejecutarse minimizando los tiempos muertos.

Para mejorar el rendimiento, la mayoría de los sistemas operativos implementanlas tuberías usando buffers, lo que permite al proceso proveedor generar másdatos que lo que el proceso consumidor puede atender inmediatamente.

Podemos distinguir dos tipos de tuberías:

Tubería sin nombre: Las tuberías sin nombre tienen asociado un ficheroen memoria principal, por lo tanto, son temporales y se eliminan cuando noestán siendo usados ni por productores ni por consumidores. Permiten lacomunicación entre el proceso que crea un cauce y procesos hijos tras lascreación de la tubería.

Tubería con nombre: Su diferencia respecto a las tuberías sin nombreradica en que el cauce se crea en el sistema de archivos7, y por lo tanto no

7 Los sistemas de archivos o ficheros (filesystem), estructuran la información guardada en una unidad dealmacenamiento (normalmente un disco duro de una computadora), que luego será representada ya sea textualo gráficamente utilizando un gestor de archivos. La mayoría de los sistemas operativos manejan su propiosistema de archivos.

Lo habitual es utilizar dispositivos de almacenamiento de datos que permiten el acceso a los datos como unacadena de bloques de un mismo tamaño, a veces llamados sectores, usualmente de 512 bytes de longitud (oclústers). El software del sistema de archivos es responsable de la organización de estos sectores en archivos ydirectorios y mantiene un registro de qué sectores pertenecen a qué archivos y cuáles no han sido utilizados.En la práctica, un sistema de archivos también puede ser utilizado para acceder a datos generados

Page 36: Integración a muy gran escala y paralelismo VLSI

tienen carácter temporal. Se mediante llamadas al sistema8

(open , close, read y write) como el resto de ficheros del sistema. Permitenla comunicación entre los procesos que usen dicha tubería, aunque noexista una conexión jerarquica entre ellos.”

Otro aspecto a tener en cuenta de las pipelines, son las arquitecturas Pipeline(Segmentadas), que surgen por la necesidad de aumentar la velocidad deprocesamiento. Es decir, la velocidad, en un sistema secuencial síncrono, estálimitada, entre otros factores, por aspectos de tipo tecnológicos, de consumo, derestricciones algorítmicas y arquitecturales entre otros aspectos.

Fig. 15. Arquitectura segmentada de n segmentos o etapas.

dinámicamente, como los recibidos a través de una conexión de red (sin la intervención de un dispositivo dealmacenamiento).

Los sistemas de archivos tradicionales proveen métodos para crear, mover, renombrar y eliminar tantoarchivos como directorios, pero carecen de métodos para crear, por ejemplo, enlaces adicionales a undirectorio o archivo (enlace duro en Unix) o renombrar enlaces padres (".." en Unix).

8 La llamada al sistema es el mecanismo usado por una aplicación para solicitar un servicio al sistemaoperativo. Comúnmente usan una instrucción especial de la CPU que causa que el procesador transfiera elcontrol a un código privilegiado, previamente especificado por el mismo código. Esto permite al códigoprivilegiado especificar donde va a ser conectado así como el estado del procesador.

Cuando una llamada al sistema es invocada, la ejecución del programa que invoca es interrumpida y sus datosson guardados, normalmente en su PCB (Bloque de Control de Proceso, Process Control Block), para podercontinuar ejecutándose luego. El procesador entonces comienza a ejecutar las instrucciones de código de altonivel de privilegio, para realizar la tarea requerida. Cuando esta finaliza, se retorna al proceso original, ycontinúa su ejecución. El retorno al proceso demandante no obligatoriamente es inmediato, depende deltiempo de ejecución de la llamada al sistema y del algoritmo de planificación de CPU.

Page 37: Integración a muy gran escala y paralelismo VLSI

Segmentar una arquitectura es dividirla en segmentos o etapas, en al que cadauno está definido por un registro que almacena los datos a procesar y otro quealmacena los resultados.

Clasificación

- Lineal: Está formado por un conjunto de etapas conectadas en cascada,sin bucles de realimentación de datos.

- No lineal: Pueden existir bucles hacia delante o hacia atrás (Feedback,feedforward)

Atendiendo a la función que realizan se pueden clasificar en:

- Estáticos: Realizan una función fija sobre un conjunto de datos deentrada.

- Dinámicos: Realizan diferentes funciones sobre un conjunto de datos deentrada.

Se habla de una tabla de reserva de un pipeline lineal estático de K etapas, que sepuede entender fácilmente en la siguiente figura.

Fig. 16. Tiempo de ciclos de Clk

Page 38: Integración a muy gran escala y paralelismo VLSI

Se define el THROUGHPUT como el nº de datos procesados por unidad detiempo:

TH=f ⇒ Siempre que se mantenga un flujo constante de datos de entrada.

SPEEDUP (SK): En un pipeline lineal estático de K etapas y n datos a procesar, elnúmero de ciclos de reloj necesario es:

K+(n-1)

En una arquitectura no pipeline será: n.K

Luego el Speedup (SK), es:

Si el número de datos, n, es muy grande:

Eficiencia:

Throughput (TH ):

Instrucción de Pipeline9

Una tubería de instrucción es una técnica utilizada en el diseño de equipos paraaumentar su rendimiento de instrucción (el número de instrucciones que se puedeejecutar en una unidad de tiempo). El Pipeline no reduce el tiempo para completaruna instrucción, pero aumenta el número de instrucciones que pueden serprocesados a la vez.

9 NA

Page 39: Integración a muy gran escala y paralelismo VLSI

Cada instrucción se divide en una secuencia de pasos dependientes. El primerpaso es siempre ir a buscar la instrucción de memoria, el paso final esgeneralmente escribir los resultados de la instrucción en los registros delprocesador o de memoria. El pipeline busca utilizar cada porción del procesadorocupado con alguna instrucción, donde deja que el ciclo de tiempo del ordenadorsea el tiempo de la etapa más lenta, e idealmente permite una instruccióncompleta en cada ciclo.”

La tubería como tal se deriva del hecho que cada parte del procesador estáhaciendo un trabajo, de manera análoga a lo que hace una tubería de agua encada enlace de ésta.

Fig. 17. Esquema general de un sistema RISC, donde IF =Instrucción principal, ID= Decodificadorde instrucciones, MEM = Acceso a memoria, WB = Registro de nueva escritura. En el cuarto ciclode reloj (columna verde), la primera instrucción está en la etapa MEM, y la última instrucción aún

no ha entrado en la tubería. Fuente. http://en.wikipedia.org/wiki/Instruction_pipeline

El pipeline del núcleo SPARC. [11]

Hay seis etapas en el pipeline del núcleo SPARC:

1. Búsqueda – Etapa F2. Selección de hilo – Etapa S3. De-codificación - Etapa D4. Ejecución – Etapa E5. Memoria – Etapa M6. Contestación – Etapa W

Page 40: Integración a muy gran escala y paralelismo VLSI

El acceso de la caché de Instrucción y el acceso ITLB tienen lugar en la etapa F.La selección del hilo (hardware) se realiza en la etapa S. La decodificación de lainstrucción y el acceso a los registros suceden en la etapa D. La evaluación de larama se hace en la etapa E. El acceso a memoria y la respuesta se realiza en lasetapas M y W. La figura siguiente ilustra el pipeline y las estructuras involucradas.

Fig. 18. Core Pipeline.

La Cola de Llenado de Instrucción (IFQ) alimenta la caché de instrucción. La Listade Instrucciones perdidas (MIL) guarda las direcciones que fallaron la caché deinstrucción (I-Cache) y la ITLB, y la MIL alimenta la Unidad de Almacén de Carga(LSU) para futuros procesamientos.

El búfer de instrucción es de dos niveles de profundidad, e incluye la Unidad deInstrucción de Hilo (TIR) y la de Próxima Instrucción (NIR). La Selección del Hilo yel Planificador (etapa S) resuelve el arbitraje entre el TIR, el NIR, el PC de la rama,el PC de interrupciones para coger un hilo y mandarlo a la etapa de decodificación(D). La siguiente figura muestra la porción del pipeline del hilo:

Page 41: Integración a muy gran escala y paralelismo VLSI

Fig. 19.

2. Búsqueda de Instrucción

La Unidad de Búsqueda de Instrucción (IFU) mantiene los contadores deprograma (PC) y los próximos contadores de programa (NPC) de todas lasinstrucciones vivas ejecutadas en el procesador. Por cada ciclo de reloj del núcleo,dos instrucciones son buscadas por cada instrucción usada. Esta relación de dosbúsquedas por cada uso tiene la intención de reducir el acceso a la I-Cache parallenar la I-Cache de forma oportunista. A cada hilo le está permitido tener un fallode I-Cache pendiente, y el núcleo SPARC permite un total de cuatro fallos de I-cache. Fallos duplicados de I-cache no inducen la carga redundante al nivel 2 decaché (L2-caché).

3. Registros de instrucción y registros de Contador de Programa

En el búfer de instrucción, hay dos registros de instrucción por hilo: el registro deinstrucción del hilo (TIR) y el registro de próxima instrucción del hilo (NIR). El TIRcontiene el la instrucción actual del hilo el la etapa de selección del hilo (etapa S),y el NIR contiene la siguiente instrucción. Un fallo en la carga de la I-cache, evitala I-cache y escribe directamente a la TIR, pero nunca escribe en la NIR.

El planificador de hilos selecciona una instrucción válida del TIR. Después de laselección de una instrucción válida, ésta será movida del NIR al TIR. Si no hayuna instrucción válida en el TIR, una instrucción de No Operación (NOP) esinsertada.

Page 42: Integración a muy gran escala y paralelismo VLSI

Hay un registro de contador de programa (PC) por hilo. El contador de próximoprograma (NPC) puede venir de una de las siguientes fuentes:

1. Rama

2. PC de interrupción

3. NPC de interrupción

4. Rollback (un hilo revertido debido a un fallo de carga)

5. PC + 4

La IFU rastrea el PC y el NPC a través de la etapa W. El último PC retirado esguardado in la unidad lógica de interrupción (TLU), y si ocurre una interrupción,también será guardado en la pila de la interrupción.

4. La caché de instrucción de nivel 1

La caché de instrucción es nombrada comúnmente como caché de instrucción denivel 1 (L1I).

El núcleo o “core” OpenSPARC T1 forma parte del procesador OpenSPARC T1.

El núcleo OpenSPARC contiene el hardware necesario para soportar cuatro hilosde ejecución. Este soporte consiste en un conjunto de todos los registros (conventanas de 8 registros) por hilo, con la mayoría de los identificadores de espaciode direcciones (ASI), registros de estado auxiliares (ASR) y registros privilegiadosreplicados por hilo. Los cuatro hilos comparten las cachés de instrucción y dedatos y los TLBs. Cada caché de instrucción es de 16 Kbytes con un tamaño de32 bits por línea. Los TLB incluyen una funcionalidad de automapeo que permite alos múltiples hilos actualizar la TLB sin bloquear.

Cada núcleo SPARC tiene solo un tipo de pipeline de seis fases o etapas.

También dispone de las siguientes unidades:

1. La unidad Fech-Instruction (lectura de instrucción) (IFU), que incluyeun sistema de cache de instrucción (Se encarga de gestionar loscomputadores de los procesos, la cache L1).

2. La unidad de ejecución (EXU) incluye las fases de ejecución delpipeline.

Page 43: Integración a muy gran escala y paralelismo VLSI

3. La unidad Load/store (LSU) incluye etapas de memoria, write-back, yun sistema de cache de datos.

4. La unidad lógica Trap (TLU).

5. La unidad de procesamiento de flujo (o “stream”) (SPU) es usadapara funciones de aritmética modular para criptografía.

6. La unidad de gestión de memoria (MMU).

7. La unidad frontend Floating- point (FFU).

Fig. 20. Diagrama de bloques de alto nivel del núcleo

Page 44: Integración a muy gran escala y paralelismo VLSI

Aquí se explicará cada una de ellas.

1. IFU – Unidad de búsqueda de instrucción (Instruction Fetch Unit)

La política de selección de hilos (o “threads”) es como sigue: una elección entrelos hilos disponibles cada ciclo siguiendo la prioridad del hilo menos recienteejecutado. Los hilos se vuelven no disponibles debido a las largas latencias deoperaciones como cargas, multiplicaciones, divisiones, ramas, fallos de caché,excepciones y conflictos. Las cargas son estimadas como fallos de caché y loshilos pasan a tener baja prioridad.

La Unidad de búsqueda de instrucción tiene una matriz de la caché de instruccióntiene 16Kb, 4 vías, líneas de 32 bytes de tamaño con un solo tag de instrucciónportado. También tiene un vector dual (1R/ 1W) de bit de validez para mantener lalínea de validez de la caché con su estado (válido / inválido). La invalidaciónaccede a este vector y no al tag de instrucción. Un algoritmo pseudo-aleatorio esel encargado de elegir las instrucciones inválidas para reemplazarlas.

Hay una TLB asociativa total de instrucción con 64 entradas. El buffer soporta lossiguientes tamaños de página: 8K, 64K, 4M y 256M La TLB usa un algoritmo detipo pseudo LRU (primero el menos recientemente usado) para los reemplazos.

Dos instrucciones son buscadas en cada ciclo, aunque sólo una es usada, lo quereduce la actividad en la caché. Sólo puede haber un fallo por hilo y 4 por núcleo.Fallos duplicados no cusan búsquedas en la caché de nivel 2.

El fichero de registros de enteros (IRF – “Integer Register File”) del núcleo, tiene5K con 3 puertos de lectura, 2 de escritura y 1 de transporte. Hay 640 registros de64 bits con código de corrección de errores (ECC). Sólo 32 registros de la ventanaactual pueden ser vistos por el hilo. La ventana cambia en segundo plano mientrasse hace la selección del hilo. El IRF proporciona un acceso de lectura / escriturapor ciclo.

2. EXU – Unidad de Ejecución (Execution Unit)

Esta unidad tiene una unidad aritmética lógica (ALU) simple y un cambiador. LaALU es reutilizada para el cálculo de las direcciones de rama y virtuales. Hay unmultiplicador de enteros por núcleo. El multiplicador de enteros es compartido porel EXU y el SPU basándose en el algoritmo de round-robin. Hay un divisor simple(sin resto) por núcleo. Un hilo usando MUL / DIV será desecha su operación (roll-back) y desactivado si otro hilo está ocupando las unidades de MUL / DIV.

Page 45: Integración a muy gran escala y paralelismo VLSI

3. LSU – Unidad de carga / almacén (Load / Store Unit)

La caché de datos tiene 8K de datos, 4 vías y un tamaño de línea de 16 bits.También se almacena la validación de los datos con un vector dual 1R/1W. Unalgoritmo pseudoaleatorio es usado para el reemplazar los datos. El TLB de datosopera como el TLB de instrucción.

La LSU tiene 8 búferes de entrada para almacén, uniéndose en un array de 32entradas. Sólo una carga es permitida por hilo. Cargas de líneas duplicadas noson enviadas a la caché de nivel 2.

La LSU tiene un interfaz lógico con el crossbar de la caché de la CPU (CCX). Esteinterfaz permite:

priorizar las peticiones de operaciones en coma flotante, de streaming, salvados(stores) e interrupciones.

pedir prioridad ensamblar paquetes provenientes de la caché del procesador (PCX)

La LSU mantiene los retornos de la PCX y el orden de las actualizaciones ylas invalidaciones de la caché.

4. FFU – Unidad frontend de coma flotante (Floating-point Frontend Unit)

Esta unidad decodifica las instrucciones de coma flotante e incluye un fichero deregistros de coma flotante (FRF). Algunas operaciones de coma flotante como“mover”, “valor absoluto” y “negativo” están implementadas aquí, mientras otras loestán en la FPU.

Cuando la FFU detecta una operación de coma flotante (Fpop) hace lo siguiente:

El hilo se desactiva. La Fpop es decodificada y leído el FRF. Se empaqueta la operación y los operandos y se envía a la FPU a través del

crossbar. La computación se termina cuando el resultado es retornado a través del

crossbar. Se actualiza el FRF y se reinicia el hilo.

5. TLU – Unidad Lógica de Interrupcioes (Trap Logic Unit)

Soporta seis niveles de interrupciones. Las interrupciones causan el flush delpipeline y el thread cambia hasta que el contador de programa de interrupción está

Page 46: Integración a muy gran escala y paralelismo VLSI

disponible. La TLU también tiene capacidad hasta 64 interrupciones pendientespor hilo.

6. SPU – Unidad de Procesamiento de Cadenas (Stream Processing Unit)

La SPU incluye una unidad aritmética modular (MAU) para criptografía (una pornúcleo), y soporta criptografía asimétrica (RSA de clave pública) de clave de hasta2048 bytes. Comparte un multiplicador de enteros para las operaciones aritméticasmodulares. La MAU pues ser usada sólo por un hilo a la vez. La operación de laMAU es configurada por lo guardado en el registro de control, y el hilo retorna alprocesamiento normal. La MAU inicia operaciones de lectura y guardado decadenas en la caché de nivel 2 a través del crossbar, y computa operaciones en elmultiplicador. La finalización de la MAU puede ser comprobada por votación ousando una interrupción.

Ventajas de la canalización [12]La principal ventaja de la canalización o tunelización, es que mantiene todas laspartes del procesador ocupado y aumenta la cantidad de trabajo útil que elprocesador puede hacer en un momento dado.

Reducción del tiempo de ciclo del procesador, que por lo general aumenta elrendimiento de instrucciones.

Al hacer que cada paso sea más simple, la canalización puede habilitaroperaciones complejas más económicas que la adición de circuitos complejos,por ejemplo para los cálculos numéricos.

Las ventajas de un procesador segmentado se disminuyen en la medida en que laejecución se encuentra con los peligros que requieren ejecución para retardardebajo de su tasa ideal.

Ventajas del procesador sin pipeline

Un procesador sin pipeline sólo ejecuta una sola instrucción a la vez. Ladisminución de perseguir a mayor velocidad con pipelining puede hacer que eldiseño resultante sea más simple y barato de fabricar.

Un procesador sin pipeline nunca encuentra un peligro. Por ejemplo, nuncahay retrasos derivados. Las consecuencias de esto son las siguientes: Los sistemas de programación son más fáciles. Es más fácil predecir el momento exacto de una determinada secuencia de

instrucciones.

Page 47: Integración a muy gran escala y paralelismo VLSI

Necesita un procesador segmentado de organizar todo su trabajo en pasosmodulares que pueden requerir la duplicación de registros que aumenta lalatencia de algunas instrucciones.

VLIW [13]

Del inglés Very Long Instruction Word. Esta arquitectura de CPU implementa unaforma de paralelismo a nivel de instrucción. Es similar a las arquitecturassuperescalares, ambas usan varias unidades funcionales (por ejemplovarias ALUs, varios multiplicadores, etc) para lograr ese paralelismo.

Los procesadores con arquitecturas VLIW se caracterizan, como su nombreindica, por tener juegos de instrucciones muy simples en cuanto a número deinstrucciones diferentes, pero muy grandes en cuanto al tamaño de cadainstrucción. Esto es así porque en cada instrucción se especifica el estado detodas y cada una de las unidades funcionales del sistema, con el objetivo desimplificar el diseño del hardware al dejar todo el trabajo de planificar el código enmanos del programador/compilador, en oposición a unprocesador superescalar, en el que es el hardware en tiempo de ejecución el queplanifica las instrucciones.

Planificación

Por ejemplo, sea el siguiente programa para una máquina superescalar "normal":

1 Multiplicar R1 por R2 y guardarlo en R3

2 Sumar R3 con R4 y guardarlo en R5

3 Restar R1 de R4 y guardarlo en R6

En este programa, el planificador de código vería que la segunda instruccióndepende de la primera (hasta que no esté calculado R3 no se puede ejecutar lasuma), y que en cambio la tercera instrucción es independiente de las otras dos.Por tanto, probablemente iniciaría simultáneamente la multiplicación y la resta enunidades diferentes y, una vez acabada la multiplicación, ejecutaría la suma. Todoeste trabajo de planificación lo llevaría a cabo la circuitería interna delmicroprocesador.

En una máquina VLIW, toda la planificación anterior la haría el compilador (o elpropio programador si programa en ensamblador), y el código resultante sería algoasí:

1 MULT(R1,R2,R3) - REST(R1,R4,R6)

2 - SUM(R3,R4,R5) -

Page 48: Integración a muy gran escala y paralelismo VLSI

Se puede ver como en cada instrucción se especifica el estado de cada unidadfuncional, de modo que en la primera instrucción se activan el multiplicador y elrestador, dejando el sumador ocioso al no poder calcular aún la suma, y en lasiguiente instrucción se hace la suma que faltaba.

Ventajas

Simplificación de la arquitectura hardware al no tener que planificar elcódigo.

Menor potencia y consumo.

Inconvenientes

Requiere compiladores mucho más complejos. Cualquier mejora en la arquitectura hardware implica un cambio en el juego

de instrucciones (compatibilidad hacia atrás nula).

Aunque los inconvenientes hacen las arquitecturas VLIW poco adecuadas para lacomputación de propósito general, dichos inconvenientes son irrelevantes en lacomputación empotrada. El menor consumo y bajo coste del hardware los hacemuy adecuados para dichos sistemas. Podemos encontrar VLIW en TVs HD,discos duros multimedia, reproductores blueray, etc.

Procesadores Superescalares

Superescalar es el término utilizado para designar un tipo demicroarquitectura de procesador capaz de ejecutar más de una instrucciónpor ciclo de reloj10. El término se emplea por oposición a la microarquitecturaescalar que sólo es capaz de ejecutar una instrucción por ciclo de reloj. En

10 Bajo el término frecuencia de reloj se da a entender el ritmo con el que se tramitan los datos enun ordenador, y se especifica en hercios. Dado que la frecuencia de los procesadores modernos alcanza losmiles de millones de hercios, las cantidades suelen representarse con la ayuda de prefijos como giga (G) paramiles de millones y mega (M) para millones (mientras que para los sistemas embebidos aún es frecuentehablar de kHz). Por ejemplo, una frecuencia de reloj de 1 GHz significa un período de reloj deun nanosegundo. El flujo de datos de un procesador resulta de la frecuencia de reloj y del flujo de datos en suconexión con la memoria principal.

Las prestaciones de cálculo (medidas por ejemplo en MIPS o en FLOPS) no sólo depende de la frecuencia dereloj, sino también de la arquitectura de todo el procesador. Incluso aquellos procesadores que utilizan elmismo conjunto de instrucciones, pueden contar con prestaciones muy diferentes a pesar de tener la mismafrecuencia de reloj, motivadas, por ejemplo, por la cantidad de IPC (instrucciones por ciclo), porcaracterísticas propias del fabricante (por ejemplo, ampliaciones de SIMD) o por el ya mencionado flujo de lamemoria. El flujo de IPC especifica cuantas instrucciones puede ejecutar un procesador gracias a hacerlas enparalelo. Un procesador con un flujo de IPC mayor, consigue por ello más operaciones de cálculo por cadaciclo de reloj y calcula de forma más rápida.

Page 49: Integración a muy gran escala y paralelismo VLSI

la clasificación de Flynn, un procesador (mononúcleo) superescalar es unprocesador de tipo SISD (single instruction single data), en cambio un procesador(multinúcleo) superescalar es un procesador de tipo MIMD (multiple instructionmultiple data).

Es importante anotar tal como se citó en clase, las cuatro clasificaciones definidaspor Flynn se basan en el número de instrucciones concurrentes (control) y en losflujos de datos disponibles en la arquitectura: [14]

- Una instrucción, un dato (SISD, Single Instruction, Single Data):Computador secuencial que no explota el paralelismo en lasinstrucciones ni en flujos de datos. Ejemplos de arquitecturas SISD sonlas máquinas con uni-procesador o monoprocesador tradicionales comoel PC o los antiguos mainframe.

- Múltiples instrucciones, un dato (MISD, Multiple Instruction, Single Data):Poco común debido al hecho de que la efectividad de los múltiples flujosde instrucciones suele precisar de múltiples flujos de datos. Sinembargo, este tipo se usa en situaciones de paralelismo redundante,como por ejemplo en navegación aérea, donde se necesitan variossistemas de respaldo en caso de que uno falle. También se hanpropuesto algunas arquitecturas teóricas que hacen uso de MISD, peroninguna llegó a producirse en masa.

- Una instrucción, múltiples datos (SIMD,Single Instruction, Multiple Data): Un computador que explota variosflujos de datos dentro de un único flujo de instrucciones para realizaroperaciones que pueden ser paralelizadas de manera natural. Porejemplo, un procesador vectorial.

- Múltiples instrucciones, múltiples datos (MIMD, Multiple Instruction,Múltiple Data): Varios procesadores autónomos que ejecutansimultáneamente instrucciones diferentes sobre datos diferentes.Los sistemas distribuidos suelen clasificarse como arquitecturas MIMD;bien sea explotando un único espacio compartido de memoria, o unodistribuido.

Diagrama de comparación de las clasificacionesEsas cuatro arquitecturas son mostradas visualmente a continuación en dondecada "PU" (Processing Unit) es una unidad de procesamiento:

Page 50: Integración a muy gran escala y paralelismo VLSI

SISD MISD

SIMD MIMD

Clasificaciones adicionales

También existe una extensión común a esta taxonomía que es:

Un programa, múltiples datos (SPMD) - múltiples procesadores autónomosque trabajan simultáneamente sobre el mismo conjunto de instrucciones

Page 51: Integración a muy gran escala y paralelismo VLSI

(aunque en puntos independientes) sobre datos diferentes. También se lellama 'un proceso, múltiples datos'.

Múltiples programas, múltiples datos (MPMD) - múltiples procesadoresautónomos que trabajan simultáneamente sobre al menos dos programasindependientes. Normalmente este sistema elige a un nodo para ser el hosto administrador, que corre el programa y otorga los datos a todos losdemás nodos que ejecutan un segundo programa. Esos demás nodosdevuelven sus resultados directamente al administrador. Un ejemplo podríaser la consola de Sony PlayStation 3, que tiene la arquitectura deprocesador SPU/PPU.

Nota: La unidad de proceso o unidad de procesamiento es uno de los tresbloques funcionales principales en los que se divide una unidad central deprocesamiento (CPU). Los otros dos bloques son la unidad de control y el bus deentrada/salida. [15]

La función de la unidad de proceso es ejecutar las tareas que le encomienda launidad de control. Para esto, la unidad de proceso emplea los siguienteselementos:

Unidad aritmético lógica, para llevar a cabo operaciones aritméticas básicascomo suma, resta, multiplicación, cambio de signo, etc, funciones lógicasbitwise [opera sobre números binarios a nivel de sus bits individuales],como NOT, AND, OR, XOR, comparaciones, desplazamientos y rotacionesde bits, y otras.

Unidad de coma flotante, para realizar eficientemente operacionesmatemáticas con números reales que no pueden ser realizadasdirectamente mediante la unidad aritmético lógica, salvo medianteemulación por software.

El registro acumulador, que guarda los operandos y los resultados de lasoperaciones.

El registro de estado, que guarda determinados indicadores acerca delresultado de las operaciones realizadas.

La microarquitectura superescalar utiliza el paralelismo de instrucciones ademásdel paralelismo de flujo, éste último gracias a la estructura en pipeline. Laestructura típica de un procesador superescalar consta de un pipeline con lassiguientes etapas: [16]

Lectura (fetch). Decodificación (decode). Lanzamiento (dispatch). Ejecución (execute). Escritura (writeback). Finalización (retirement).

Page 52: Integración a muy gran escala y paralelismo VLSI

En un procesador superescalar, el procesador maneja más de una instrucción encada etapa. El número máximo de instrucciones en una etapa concreta delpipeline se denomina grado, así un procesador superescalar de grado 4 en lectura(fetch) es capaz de leer como máximo cuatro instrucciones por ciclo. El grado dela etapa de ejecución depende del número y del tipo de las unidades funcionales.

Un procesador superescalar suele tener unidades funcionales independientes delos tipos siguientes:

Unidad aritmético lógica (ALU) Unidad de lectura/escritura en memoria (Load/Store Unit) Unidad de coma flotante (Floating Point Unit) Unidad de salto (Branch unit)

Un procesador superescalar es capaz de ejecutar más de una instrucciónsimultáneamente únicamente si las instrucciones no presentan algún tipo dedependencia (hazard). Los tipos de dependencia entre instrucciones son:

Dependencia estructural, esta ocurre cuando dos instrucciones requieren elmismo tipo unidad funcional y su número no es suficiente.

Dependencia de datos, esta ocurre cuando una instrucción necesita delresultado de otra instrucción para ejecutarse, por ejemplo R1<=R2+R3 yR4<=R1+5.

Dependencia de escritura o falsa dependencia o nombre, esta ocurrecuando dos instrucciones necesitan escribir en la misma memoria, porejemplo R1<=R2+R3 y R1<=R1+5.

Dependencia de control, esta ocurre cuando una instrucción depende deuna estructura de control y no se puede determinar el flujo correcto hasta laevaluación de la estructura de control, por ejemplo, if R1<R2 thenR3<=R4+R5 else R6<=R7+5.

La detección y resolución de las dependencias entre instrucciones puede serestática (durante la compilación) o dinámica, es decir, a medida que se ejecutaun programa, generalmente durante las etapas de codificación y lanzamiento delas instrucciones.

La detección y resolución dinámica de las dependencias entre instrucciones suelerealizarse mediante alguna variante del algoritmo de Tomasulo11 que permite la

11 El algoritmo de Tomasulo es un algoritmo de planificación dinámica desarrollado por Robert Tomasulo,de IBM. Se diseñó para permitir a un procesador ejecutar instrucciones fuera de orden. Este algoritmo difieredel algoritmo de marcador (Scoreboard) en que este último no dispone de renombrado de registros. En sulugar, el algoritmo de Scoreboard (scoreboarding) resuelve los riesgos Escritura Después de Escritura (EDE oWAW) y Escritura Después de Lectura (EDL o WAR) deteniendo la ejecución, mientras que el algoritmo de

Page 53: Integración a muy gran escala y paralelismo VLSI

ejecución de instrucciones en un orden distinto al del programa también llamadaejecución en desorden. La eficacia de un procesador superescalar viene limitadapor un lado por la dificultad en suministrar al procesador suficientes instruccionesque puedan ser ejecutadas en paralelo y por otro lado por las prestaciones de lajerarquía de memorias.

Si las instrucciones de salto son un problema para los procesadores con pipelineen general, en el caso de los procesadores superescalares, el problema semultiplica ya que un parón en el pipeline tiene consecuencias en un número mayorde instrucciones. Por esta razón, los fabricantes de procesadores recurren atécnicas de ejecución especulativa12 y diseñan algoritmos de predicción de saltoscada vez más sofisticados así como sistemas de almacenamiento de instruccionespor trazas (trace caches).

Las arquitecturas superescalares adolecen de una estructura compleja y de unmal aprovechamiento de sus recursos debido en parte a la dificultad en encontrarsuficientes instrucciones paralelizables. Una forma de obtener un mayor númerode instrucciones paralelizables es aumentar la ventana de instrucciones, es decirel conjunto de instrucciones que la unidad de lanzamiento considera comocandidatas a ser lanzadas en un momento dado.

Desafortunadamente la complejidad del procesador superescalar aumentadesproporcionadamente con respecto al tamaño de dicha ventana lo que setraduce por un ralentizamiento general del circuito. Otra forma de obtener másinstrucciones paralelizables es manipulando instrucciones de más de un programaa la vez, lo que se conoce bajo el nombre de multitarea simultáneao multihilo13 simultáneo.

Tomasulo permite el lanzamiento de dichas instrucciones. Además, el algoritmo de Tomasulo utilizaun bus de datos común en el que los valores calculados son enviados a todas las estaciones de reserva que losnecesite. Esto permite mejorar la ejecución paralela de instrucciones en situaciones en las que elscoreboarding fallaría y provocaría la parada.

En la actualidad, gran parte de los procesadores hacen uso de variaciones de este algoritmo para laplanificación dinámica de instrucciones.

12 La ejecución especulativa es la ejecución de código por parte del procesador que no tiene por qué sernecesaria a priori. En la programación funcional, suele usarse el término "evaluación especulativa".

La ejecución especulativa no es más que una optimización. Obviamente, sólo es útil cuando la ejecuciónprevia requiere menos tiempo y espacio que el que requeriría la ejecución posterior, siendo este ahorro losuficientemente importante como para compensar el esfuerzo gastado en caso de que el resultado de laoperación nunca llegue a usarse.

13 Las unidades centrales de procesamiento con capacidad para multithilo (multithreading) tienen soporteen hardware para ejecutar eficientemente múltiples hilos de ejecución. El paradigma de multihilo ha llegado aser más popular a medida que los esfuerzos para llevar más adelante el paralelismo a nivel de instrucción sehan atascado desde finales de los años 1990. Esto permitió que reemergiera a una posición destacada el

Page 54: Integración a muy gran escala y paralelismo VLSI

Mientras las primeras CPUs superescalares disponían de dos ALUs y unasola FPU14, un procesador moderno como el PowerPC 970 incluye cuatro ALUs ydos FPUs, además de dos unidades SIMD. Si el despachador no es eficientehaciendo trabajar lo máximo posible a estas unidades, el rendimiento global delprocesador se verá mermado.

Conclusiones

Los sistemas de computación actuales, maneja una arquitectura bastantecompleja en cuanto a la gestión de información que fluye entre los procesadores ylas memorias, caché y memoria principal.

concepto del computación de rendimiento a partir del más especializado campo del procesamientotransaccional:

Aunque es muy difícil acelerar un solo hilo o un solo programa, la mayoría de los sistemas decomputadores son realmente multitarea entre múltiples hilos o programas.

Las técnicas que permitirían acelerar el rendimiento total del procesamiento del sistema en todas lastareas (tasks) darían como resultado un aumento significativo del rendimiento.

Las dos principales técnicas para computación de rendimiento son el multiproceso y el multihilo.

Una cierta crítica del multihilo incluye:

Los múltiples hilos pueden interferir uno con el otro al compartir recursos de hardwarecomo cachés o Translation Lookaside Buffer (TLB).

Los tiempos de ejecución de un solo hilo no son mejorados, sino por el contrario, pueden serdegradados.

El soporte de hardware para multihilo es más visible al software que el multiprocesamiento, por lotanto requiriendo más cambios tanto a las aplicaciones como el sistema operativo.

Las técnicas de hardware usadas para soportar multihilo a menudo paralelizan las técnicas de software usadaspara la multitarea de los programas de computadora.

14 Una unidad de coma flotante (floating-point unit) o, también conocido como coprocesador matemático,es un componente de la unidad central de procesamiento especializado en el cálculo de operaciones en comaflotante. Las operaciones básicas que toda FPU puede realizar son la suma y multiplicación usuales, si bienalgunos sistemas más complejos son capaces también de realizar cálculos trigonométricos o exponenciales.

No todas las unidades centrales de procesamiento tienen una FPU dedicada. En ausencia de FPU, la CPUpuede utilizar programas en microcódigo para emular una función en coma flotante a través de la unidadaritmético lógica (ALU), la cual reduce el coste del hardwarea cambio de una sensible pérdida de velocidad.

En algunas arquitecturas, las operaciones en coma flotante se tratan de forma completamente distinta a lasoperaciones enteras, con registros dedicados y tiempo de ciclo diferentes. Incluso para operaciones complejas,como la división, podrían tener un circuito dedicado a dicha operación.

Page 55: Integración a muy gran escala y paralelismo VLSI

Las arquitecturas que se manejan son dinámicas y escalares, lo que permite eldesarrollo de sistemas computacionales cada vez más robustos en cuanto aprocesamiento y almacenamiento de información.

Lo que se espera a un futuro no muy lejano es:

- Integración en la planificación del consumo de los hilos.- Sistemas de memoria: Nuevas jerarquías de memoria.- Compiladores que generen código que evite necesidades hardware.- Paralelización automática de aplicaciones secuenciales.- Optimización dinámica del código.

En cuanto a los procesadores superescalares son una extensión de la arquitecturapipeline simple que emiten y pueden ejecutar varias instrucciones a la vez.Producen más peligros y requieren soluciones más sofisticadas que el pipelinesimple.

Referencias

[1] Integración a muy gran escala. Recuperado el 20 de septiembre de 2012.http://es.wikipedia.org/wiki/Integraci%C3%B3n_a_muy_gran_escala

[2] G.S. Almasi and A. Gottlieb. Highly Parallel Computing. Benjamin-Cummingspublishers, Redwood city, CA, 1989.

[3] Krste Asanovic et al. The Landscape of Parallel Computing Research: A Viewfrom Berkeley (PDF). University of California, Berkeley. Technical Report No.UCB/EECS-2006-183. December 18, 2006: "Old [conventional wisdom]: Increasingclock frequency is the primary method of improving processor performance. New[conventional wisdom]: Increasing parallelism is the primary method of improvingprocessor performance ... Even representatives from Intel, a company generallyassociated with the 'higher clock-speed is better' position, warned that traditionalapproaches to maximizing performance through maximizing clock speed havebeen pushed to their limit."

[4] Asanovic et al. Old [conventional wisdom]: Power is free, but transistors areexpensive. New [conventional wisdom] is [that] power is expensive, but transistorsare "free".

[5] Patterson, David A. and John L. Hennessy (1998). Computer Organization andDesign, Second Edition, Morgan Kaufmann Publishers, p. 715. ISBN 1-55860-428-6.

[6] Computación paralela. Recuperado el 29 de septiembre de 2012http://es.wikipedia.org/wiki/Programaci%C3%B3n_paralela

Page 56: Integración a muy gran escala y paralelismo VLSI

[7] NP-completo. Recuperado el 29 de septiembre de 2012.http://es.wikipedia.org/wiki/NP-completo

[8] Algoritmo paralelo. Recuperado el 29 de septiembre de 2012.http://es.wikipedia.org/wiki/Algoritmo_paralelo

[9] Procesamiento secuencial y paralelo. Recuperado el 30 de septiembre de2012. http://sinapsis-aom.blogspot.com/2011/01/procesamiento-secuencial-y-paralelo.html

[10] Tubería. Recuperado el 29 de septiembre de 2012.http://es.wikipedia.org/wiki/Tuber%C3%ADa_(inform%C3%A1tica)

[11] IFU. Unidad de búsqueda y control. Recuperado el 7 de octubre de 2012.http://www.mifergo.es/category/general/

[12] Pipeline Instruction. Recuperado el 9 de octubre de 2012.http://en.wikipedia.org/wiki/Instruction_pipeline

[13] VLIW. Recuperado el 9 de octubre de 2012.http://es.wikipedia.org/wiki/VLIW

[14] Clasificación de Flynn. Recuperado el 9 de octubre de 2012.http://es.wikipedia.org/wiki/Clasificaci%C3%B3n_de_Flynn

[15] Unidad de Proceso. Recuperado el 9 de octubre de 2012.http://es.wikipedia.org/wiki/Unidad_de_proceso

[16] Superescalar. Recuperado el 9 de octubre de 2012.http://es.wikipedia.org/wiki/Unidad_de_proceso