


                     -+-| DisidentS Hack Journal #3 |-+-









  _________________________________________________________________________
 |                                                                         |
 | -+- Titulo_____: Que pasa dentro de tu pc  [023.txt]                    |
 | -+- Autor______: RandomLoG                                              |
 | -+- E-Mail_____: <alternateos@disidents.hacker.net.ar>                  |
 | -+- Team_______: DisidentS Argentina - http://www.disidents.int-ltd.com |
 | -+- KB_________: 22.5                                                   |
 | -+- Tema_______: Hardware                                               |
 |_________________________________________________________________________|







.==========================================================================.
|===========~ INDICE ~======================================================
|===========================================================================
|=~ 1.0  Notas del Autor                                                   |
|=~ 2.0  Procesamiento Paralelo                                            |
|=~ 2.1  Introduccion a las arquitecturas paralelas                        |
|=~ 3.0  Clasificacion de Arquitecturas segun Flynn                        |
|=~ 4.0  Arquitecturas SISD                                                |
|=~ 5.0  Arquitecturas SIMD                                                |
|=~ 6.0  Arquitecturas MISD                                                |
|=~ 7.0  Arquitecturas MIMD                                                |
|=~ 8.0  WSBS                                                              |
|=~ 9.0  WSBP                                                              |
|=~ 10.0 WPBS                                                              |
|=~ 11.0 WPBP                                                              |
|=~ 12.0 Ancho de Banda  ( Bandwidth )                                     |
|=~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=.
======================================================~ INDICE ~============
============================================================================




.==========================================================================.
|===========~ 1.0 Notas del Autor ~=========================================
|===========================================================================

Todos usamos computadoras (o por lo menos los que estan leyendo este articu-
lo xDDDDD) , pero cuantos de uds sabe como funciona la misma ?????, o que es
el famoso ancho de banda , como se procesan las instrucciones y etc...
Bueno este articulo les ayudara a entender la mayoria,no puedo quitarles to-
das sus dudas con un solo  articulo,ya que a mi me tomo 6  aos de mi  larga
vida aprender, Algo de como funciona una PC, este articulo es sacado  de  la
Universidad Buenos Aires (U.B.A) de la carrera de Ingenieria en Sistemas,  y
de la Secundaria E.E.T Numero 7, de a poco ire pasando  mas textos con  esta
informacion ya que me parece muy  interesante, son temas muy complejos, pero
vale la pena LEERLOS!!!!!
Espero que les guste ya que aun no he terminado de pasar y resumir estas fo-
tocopias y me duelen todos los dedos!!!!!!!!!!
PD: si quieren que siga mandando articulos de este tipo,  no duden en entrar
en el canal oficial del Team en el IRC Hispano

IRC.IRC-HISPANO.ORG 6667
canal #disidents
y hacerme saber que les han gustado los articulos,  como tambien que no  les
haya gustado o que me digan sobre que quieren que escriba!!!!
Muchas Acias :))))))
                           By nmlg Miembro de DisidentS ArgentinA






.==========================================================================.
|===========~ 2.0 Procesamiento Paralelo ( PIPELINE ) ~=====================
|===========================================================================


2.1 =~ Introduccion a las arquitecturas paralelas: ~=

Muchos de los antiguos computadores y minicomputadores son monoprocesadores,
lo cual no debe sorprendernos,  ya que es la maquina  mas elemental para di-
sear y construir.

Por otro lado, nos encontramos  con los computadores digitales  modernos  de
gran escala, los cuales utilizan  frecuentemente el procesamiento simultaneo
( Concurrencia ),  en distintos puntos del sistema a los cuales se los deno-
mina procesamiento en paralelo.

La concurrencia implica : Simultaneidad , paralelismo y pipelining.

Simultaneidad: cuando los procesos son ejecutados en el mismo instante.
Paralelos: Ocurren en multiples recursos durante el mismo intervalo de tiem-
po.
Pipeline: Ocurren en lapsos superpuestos.






.==========================================================================.
|===========~ 4.0 Clasificacion de Arquitecturas segun Flynn ~==============
|===========================================================================


La ejecucion de una instruccion puede verse en 4 etapas distintas que se rea-
lizan :

Busqueda de la instruccion
Decodificacion de la instruccion
Busqueda de operandos
Ejecucion de la instruccion

Las instrucciones pueden verse como un flujo de instrucciones que se despla-
zan de memoria al procesador,  y los operandos como un flujo de datos que se
desplaza entre memoria y el procesador


FIG 1

                    Flujo de Instruccion
   ****************                      *************
   ** Procesador **  <=================  ** Memoria **
   **            **  <================>  **         **
   ****************                      *************
                    Flujo de Datos

 Analizando el ciclo de una instruccion se puede diferenciar a un procesador
en 2 unidades funcionales:

La unidad de Control (CU):decodifica las instrucciones y envia seales a una
unidad de procesamiento

La unidad de Procesamiento (PU):  Ejecuta las instrucciones decodificadas, y
envia los resultados a la unidad funcional de memoria.



.==========================================================================.
|===========~ 5.0  Arquitecturas SISD ~=====================================
|===========================================================================


FLYNN realizo una clasificacion del paralelismo presentada en un procesador,
basado en el numero de Flujos de Instrucciones y Datos simultaneos;   combi-
nando el flujo de instrucciones y flujos de datos, surgen 4 grupos de proce-
samiento posibles:

FIG 2              Computador SISD ( simple instruccion - simple dato )
                           IS
    |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
 *********      IS         ********    DS       ********
 ** CU  ** ==============> ** PU ** <=========> ** MM **
 *********                 ********             ********
IS : flujo de instruccion
DS : Flujo de datos
MM : Modulo de Memoria
PU : Unidad de procesamiento
CU : Unidad de Control

EL computador SISD , solo puede ejecutar una instruccion , un solo dato a la
vez !!!!


POR EJEMPLO:
un programa con la siguientes caracteristicas :

 DO 20 i=1,10
 A(i) = A(i) ^ 3
20 Continue
La 10 veces que pasa por la asignacion, seran 10 instrucciones, 10 ejecucio-
nes completamente independientes una de la otra.

  Si tomamos el ejemplo anterior y lo tranformamos en arquitectura paralela,
ejecutaremos 10 instrucciones en forma simultaneas,  con  lo cual  ahorramos
 tiempo!!!!!!!!



.==========================================================================.
|===========~ 6.0  Arquitecturas SIMD ~=====================================
|===========================================================================


FIG 3           Computador SIMD ( Simple Instruccion - Multiple Dato )



                                                              SM

                                    *********     DS1    |---------|
                     |------------> ** PU1 ** <--------> |   *MM1  |
                     |              *********            |         |
                     |                                   |         |
    ********   IS    |              *********     DS2    |         |
 |=>** CU **  ------>|------------> ** PU2 ** <--------> |   *MM2  |
 |  ********         |              *********            |         |
 |                   |                                   |         |
 |                   |              *********     DSn    |   *MMn  |
 |                   |------------> ** PUn ** <--------> |---------|
 |            IS                     *********                |
 |------------------------------------------------------------|

SM : Memoria Compartida

La n representa una determinada cantidad de procesadores u otra cosa....

Esta figura representa tener 1 memoria ,  1 CU ,  y de dicha CU tener varias
unidades de ejecucion que depositan sus datos en memoria.

Las arquitecturas SIMD, ejecutan una sola instruccion que ataca a muchos da-
tos, este esquema ( FIG 3 ), representa lo mas basico, lo que se conoce tam-
bien como un procesador VECTORIAL !!!!;  el cual es capaz de tomar un vector
o una matriz , y simultaneamente hacer muchas operaciones sobre el.




.==========================================================================.
|===========~ 7.0  Arquitecturas MISD ~=====================================
|===========================================================================

Obviamente ahora viene algo mucho mejor,la arquitectura MISD, aqui se tienen
varias CU, con varias unidades de ejecucion, existen distintos IS y un unico
DS, o sea que tienen multiples instrucciones en un unico dato!

FIG 4
                         Computador MISD ( Multiple Instruccion - Simple Dato )

   IS1  *********   IS1   *********       DS1
 |----> ** CU1 ** ------> ** PU1 ** <----------------|
 |      *********         *********                  |
 |                            |                      |
 | IS2  *********   IS2   *********                  |                  SM
 | |--> ** CU2 ** ------> ** PU2 **                  ******************************************
 | |    *********         *********                  **  MM              MM2         MMn     **
 | |                          |                      ******************************************
 | |    *********   ISn   *********      DS          |    |               |            |
 | |    ** CUn ** ------> ** PUn ** -----------------|    | DS            | ISn        | IS1
 | |    ********* ISn     *********                       |               |            |
 | |         |--------------------------------------------|               |            |
 | |----------------------------------------------------------------------|            |
 |-------------------------------------------------------------------------------------|


FIG 5
                        Computador MIMD ( Multiple Instruccion - Multiple Dato )

Esta es una figura totalmente teorica ya que no existe ningun procesador que
este implementando esta arquitectura.

                                                                 SM
   IS1  *********   IS1   *********       DS1        |=================================|
 |----> ** CU1 ** ------> ** PU1 ** <--------------->|       ** MM1 **                 |
 |      *********         *********                  |                                 |
 |                                                   |                                 |
 | IS2  *********   IS2   *********                  |                                 |
 | |--> ** CU2 ** ------> ** PU2 ** <--------------->|       ** MM2 **                 |
 | |    *********         *********                  |                                 |
 | |                          |                      |                                 |
 | |                          |                      |       ** MMn **                 |
 | |    *********   ISn   *********      DS          |    |               |            |
 | |    ** CUn ** ------> ** PUn ** <--------------->|====|=DS============|=ISn========| IS1
 | |    ********* ISn     *********                       |               |            |
 | |         |-----------------------<--------------------|               |            |
 | |-----------------------------------------------------------<----------|            |
 |------------------------------------<------------------------------------------------|

Esta arquitectura posee varias CU,con varias PU,es decir se ejecutan instru-
cciones con mucho mas datos.




.==========================================================================.
|===========~ 9.0 WSBS ~====================================================
|===========================================================================

WSBS :  Procesamiento en serie de Bits , se procesa un Bit por ves ( n = m = 1 ),
        Es el procesamiento mas lento, y solo existio en la 1ras computadoras




.==========================================================================.
|===========~ 10.0 WPBS ~===================================================
|===========================================================================

WPBS :  ( n = 1 , m > 1 ) , procesamiento Bis ( de Bit - Slice ) , ya que procesa
        una porcion de m BITS a la vez



.==========================================================================.
|===========~ 11.0 WSBP ~===================================================
|===========================================================================

WSBP :  ( n > 1 , m = 1 ) , Procesamiento de porciones de palabra , ya que procesa
        una palabra de n Bits a la vez.




.==========================================================================.
|===========~ 12.0 WPBP ~===================================================
|===========================================================================

WPBP :  ( n > 1 , m > 1 ) , Procesamiento Paralelo Total , en el cual se procesa por
        vez un array de n * m Bits, siendo el mas veloz de todos los procesos vistos.








.==========================================================================.
|===========~ 13.0 Balance Ancho de banda del subsistema ( BANDWIDTH ) ~====
|===========================================================================

La estructura de bus comun tiene el inconveniente que ofrece una comunicaci-
on en cuello de botella.  Cada acceso a memoria de un ordenador desaprovecha
accesos a  millones de bits  cuando escoge unos pocos para enviar atrves del
bus desde la memoria a la CU.

Esto se debe a las siguientes dos razones:
1) porque simplifica nuestro concepto de la maquina , y se adapta  a nuestra
   inclinacion natural de hacer las cosas una a una.
2) nos  suministra una sola y simple interconeccion entre las distintan par-
   tes de las maquinas.

En general la CPU es la unidad mas veloz dentro de una computadora , medire-
mos su ciclo de tiempo en Tp dado en decenas de nanosegundos, el de la memo-
ria en Tm dado en cientos de nanosegundos y el del subsistema en E/S, que es
el mas lento en Td , dado unos pocos milisegundos entonces :

Td > Tm > Tp
ej: en la IBM 370/168 , Td = ms (discos) ; Tm = 320 hs y TP = 50 ns

  Se define al ancho de banda como la cantidad de operaciones realizadas por
unidad de tiempo. Cuando se mide el ancho de banda de la memoria (o el equi-
valente a una operacion de E/S) , lo que se mide es la cantidad  de informa-
cion ( Bytes , palabras , instrucciones, etc ) que la memoria puede transmi-
tir en una cierta unidad de tiempo.

el ancho de banda del procesador se mide como el maximo porcentaje de compu-
tos de la CPU , por ejemplo : 160 megaflops   ( millones de instrucciones de
punto flotante por segundo )

En cambio hablar del ancho de banda de una CPU que es un dispositivo activo,
se mide deacuerdo a la cantidad de instrucciones que puede ejecutar por uni-
dad de tiempo .

Si quieremos comparar los anchos de banda de la memoria y  la CPU haremos lo
siguiente:
Bp >= Bpu , y Bpu >= Bd

Esto significa que la memoria principal tiene mayor ancho de banda , ya  que
debe ser accedida tanto por la CPU como por los dispositivos de E/S.

Balance entre CPU y Memoria :

La diferencia de velocidad entre la CPU y la memoria puede achicarse mediante
el uso de memoria CACHE de alta velocidad. La CACHE tiene un tiempo de acceso
Tc = Tp . Un bloque de palabras de memoria es movido a la CACHE, de tal mane-
ra que los datos e instrucciones estan disponibles inmediatamente para su uso
tambien puede servir como un BUFFER para instrucciones.


Balance entre Dispositivos de E/S y Memoria :

Pueden utilizarce  canales de diferentes velocidades  entre los  dispositivos
lentos y la memoria. Estos canales de E/S realizan funciones de bufferizacion
y multiplexamiento para la  tranferencia de  datos  desde  muchos discos y la
memoria principal  mediante el robo de ciclos a la CPU. Incluso pueden utili-
zarse  controladores de discos inteligentes para  filtrar informacion irrele-
vante de las pistas del disco, lo cual alivia la saturacion de los canales de
E/S.

En el caso ideal desearemos alcanzar un balance total del sistema, en el cual
el ancho de banda de la memoria coincida con la suma del  ancho de banda  del
procesador y los dispositivos de E/S es decir:

Bpu + Bd = Bmu

Donde Bmu = Bp y Bmu = Bm , los cuales han sido maximizados.

Paralelismo con una sola CPU:

Para  lograr concurrencia en un sistema  monoprocesador se utilizan  tecnicas
de paralelismo que se consiguen multiplicando los componentes  del HARDWARE o
tecnicas de pipelining.

Un computador Pipiline hace operaciones superpuestas para explotar el parale-
lismo temporal. Un Procesador ARRAY  usa ALU  ( unidades aritmetico logicas )
multiples sincronizadas para lograr el paralelismo espacial . Un sistema mul-
tiprocesador logra  paralelismo asincronico a traves de un conjunto de proce-
sadores que interactuan y comparten recursos.

Ejemplo de un pipeline de cuatro etapas :
1) levantar la instruccion de memoria
2) identificar la operacion que se debe efectuar
3) levantar los operandos que son necesarios para la ejecucion
4) Ejecutar la operacion Aritmetica logica que ha sido decodificada.

FIG 6

         S1             S2                 S3              S4                    (Etapas)
     ********        ********          ********         ********
---->** IF ** -----> ** ID ** -------> ** DF ** ------> ** EX **=================>>>>
     ********        ********          ********         ********


Las instrucciones susesivas se ejecutan de forma superpuesta . La diferencia
entre la ejecucion superpuesta de instrucciones y la ejecucion no superpues-
ta secuencial se muentra en los diagramas Espacio / Tiempo de las siguientes
Figuras:

FIG 7

Etapas Pipeline ^              O/p  O/p  O/p  O/p  O/p
                |********************************************>
                |   |    |    | i1 | i2 | i3 | i4 | i5 |
                |********************************************>
                |   |    | i1 | i3 | i3 | i4 | i5 |
                |********************************************>
                |   | i1 | i2 | i3 | i4 | i5 |    |
                |********************************************>
                |i1 | i2 | i3 | i4 | i5 |    |    |
                |============================================> Tiempo ( ciclos del pipeline )


  Cada columna representa un ciclo del pipeline que es aproximadamente igual
al tiempo que tarda la etapa mas lenta. Al computador sin pipeline le toma 4
ciclos completar una instruccion, en cambio un pipeline produce un resultado
de salida por cada ciclo . luego de cargado el pipeline. El ciclo de instru-
ccion  ha sido reducido  efectivamente a un cuarto  del tiempo  de ejecucion
original, por medio de las ejecuciones superpuestas.

FIG 8


                       O/P                   O/P                 O/P                  O/P
Etapas  ^                 |                   |                   |                    |
        |*********************************************************************************** >>>>
        |    |    |    | i1 |    |    |    | i2 |    |    |    | i3 |     |    |    | i4 |
        |*********************************************************************************** >>>>
        |    |    | i1 |    |    |    | i2 |    |    |    | i3 |    |     |    | i4 |    |
        |*********************************************************************************** >>>>
        |    | i1 |    |    |    | i2 |    |    |    | i3 |    |    |     | i4 |    |    |
        |*********************************************************************************** >>>>
        | i1 |    |    |    | i2 |    |    |    | i3 |    |    |    | i4  |    |    |    |
        |=================================================================================== >>>> Tiempo

La maxima velocidad a la cual pueden ingresar  las instrucciones al pipeline
depende exlusivamente de ltiempo maximo requerido para atravesar una etapa y
del numero de ellas.

Como medir la eficiencia de un pipeline ??????

  Utilizaremos el siguiente concepto para medir la performance del pipeline:
llamaremos la eficiencia de un pipeline al porcentaje de lapsos de espacio-
tiempo ocupados sobre el total de lapsos de espacio-tiempo ( libres mas ocu-
pados). Sea n el numero de tareas k el numero  de etapas de un  pipeline y T
el periodo de reloj de un pipeline lineal.  entonces la eficiencia de define
como:

 Eficiencia = ( n * k * T) / ( k * ( k*T + (n-1) * T ))
            = ( n / ( k + (n-1))




                      *************************************************
                      *************************************************
                      ********** ________________________________ *****
                      **********/|/|*****
                      *********/|RnmLG/|*****
                      ********|__|____________________________||*****
                      ********||||*****
                      ********||nt||*****
                      ********||____________________________|__|*****
                      ********|/|/*****
                      ********|/gntnᤤ|/******
                      ********/_______________________________|/*******
                      *************************************************
                      *************************************************
