viernes, 24 de febrero de 2017

Arquitectura clásica, segmentada, multi-proceso.

Modelo de arquitectura de una computadora: clásica
Este describe una arquitectura de diseño para un computador digital electrónico con partes que constan de una unidad de procesamiento que contiene una unidad aritmético lógica y registros del procesador, una unidad de control que contiene un registro de instrucciones y un contador de programa, una memoria para almacenar tanto datos como instrucciones, almacenamiento masivo externo, y mecanismos de entrada y salida. El significado ha evolucionado hasta ser cualquier computador de programa almacenado en el cual no pueden ocurrir una extracción de instrucción y una operación de datos al mismo tiempo, ya que comparten un bus en común. Esto se conoce como el cuello de botella Von Neumann y muchas veces limita el rendimiento del sistema.
Las computadoras son máquinas de arquitectura Von Neumann cuando:
·         Tanto los programas como los datos se almacenan en una memoria en común. Esto hace posible la ejecución de comandos de la misma forma que los datos.
·         Cada celda de memoria de la máquina se identifica con un número único, llamado dirección.
·         Las diferentes partes de la información (los comandos y los datos) tienen diferente modos de uso, pero la estructura no se representa en memoria de manera codificada.
·         Cada programa se ejecuta de forma secuencial que, en el caso de que no haya instrucciones especiales, comienza con la primera instrucción. Para cambiar esta secuencia se utiliza el comando de control de transferencia.
Arquitectura de computadoras segmentadas
PIPE-LINE
Consiste en la segmentación del procesador, a lo que llamamos "pipe-line", descomponiéndolo en etapas para poder procesar una instrucción diferente en cada una de ellas y trabajar con varias a la vez. La arquitectura en pipeline (basada en filtros) consiste en ir transformando un flujo de datos en un proceso comprendido por varias fases secuenciales, siendo la entrada de cada una la salida.
Estas arquitecturas surgen por la necesidad de aumentar la velocidad de procesamiento. En ellas, lo que se buscaba era mejorar el desempeño realizando paralelamente varias etapas del ciclo de instrucción al mismo tiempo. Esto se logra, debido a que el procesador se divide en varias unidades funcionales e independientes las cuales se dividen entre ellas el procesamiento de las instrucciones.
Y entonces, ir transformando un flujo de datos en un proceso comprendido por varias fases secuenciales, siendo la entrada de cada una de las salidas de la anterior.

Así como la anterior, las pipe-lines, tienen diversas aplicaciones en informática, tales como:
Pipe-lines gráficos: por lo general encontrados en tarjetas gráficas, consiste en múltiples unidades aritméticas o CPUs completas, que implementan variados escenarios de operaciones típicas de renderizado. Ejemplo: cálculos de luz y colores, renderizado, proyección de perspectiva, etc...
Pipe-lines de software o tuberías: consiste en múltiples procesos ordenados de tal forma que el flujo de salida de un proceso alimenta la entrada del siguiente proceso. Ejemplo: los pipelines de Unix.
Es importante tener en cuenta que la arquitectura pipe-line se aplica en DOS LUGARES de la maquina en la CPU y en la ALU.
¿Cómo funciona un PIPE-LINE?
Supongamos que un procesador simple tiene un ciclo de instrucción sencillo, consistente solamente en una etapa de búsqueda del código de instrucción y en la otra etapa de ejecución de la instrucción
.


La arquitectura SMP (Multi-procesamiento simétrico, también llamada UMA, de “Uniform Memory Access”), se caracteriza por el hecho de que varios microprocesadores comparten el acceso a la memoria. Todos los microprocesadores compiten en igualdad de condiciones por dicho acceso, de ahí la denominación “simétrico”.
Los sistemas SMP permiten que cualquier procesador trabaje en cualquier tarea sin importar su localización en memoria; con un propicio soporte del sistema operativo, estos sistemas pueden mover fácilmente tareas entre los procesadores para garantizar eficientemente el trabajo.
Una computadora SMP se compone de microprocesadores independientes que se comunican con la memoria a través de un bus compartido. Dicho bus es un recurso de uso común. Por tanto, debe ser arbitrado para que solamente un microprocesador lo use en cada instante de tiempo. Si las computadoras con un solo microprocesador tienden a gastar considerable tiempo esperando a que lleguen los datos desde la memoria, SMP empeora esta situación, ya que hay varios parados en espera de datos.
Conceptos relacionados
Arquitectura NUMA
Multiproceso simétrico Una de las formas más fáciles y baratas de aumentar el rendimiento del hardware es poner más de una CPU en la placa. Esto se puede realizar haciendo que CPUs diferentes tengan trabajos diferentes (multiproceso asimétrico) o haciendo que todos se ejecuten en paralelo, realizando el mismo trabajo (multiproceso simétrico o SMP). El hacer multiproceso asimétrico requiere un conocimiento especializado sobre las tareas que la computadora debe ejecutar, lo que no está a nuestro alcance en un sistema operativo de propósito general como Linux. En cambio el multiproceso simétrico es relativamente fácil de implementar.
Por relativamente fácil, quiero decir exactamente eso; no que sea realmente fácil. En un entorno de multiproceso simétrico, las CPUs comparten la misma memoria, y como resultado, el código que corre en una CPU puede afectar a la memoria usada por otra. Ya no puedes estar seguro de que una variable que has establecido a un cierto valor en la línea anterior todavía tenga el mismo valor; la otra CPU quizás haya estado jugando con ella mientras no mirábamos. Obviamente, es imposible programar algo de esta manera.
En el caso de la programación de procesos esto no suele ser un problema, porque un proceso normalmente sólo se ejecutará en una CPU a la vez12.1. El núcleo, sin embargo, podría ser llamado por diferentes procesos ejecutándose en CPUs diferentes.

8 comentarios: