INTRODUCCIÒN
El presente trabajo tiene como finalidad el mostrar a grandes razgos el funcionamiento interno de una computadora en otras palabras informaciòn relacionada a la arquitectura de computadoras, màs especificamente a una arquitectura paralela que hace uso de la segmentaciòn o pipiline Para ello es importante considerar la siguiente definiciòn como punto de :
La arquitectura de computadoras es el diseño conceptual y la estructura operacional fundamental de un sistema de computadora. Es decir, es un modelo y una descripción funcional de los requerimientos y las implementaciones de diseño para varias partes de una computadora, con especial interés en la forma en que la unidad central de proceso (CPU) trabaja internamente y accede a las direcciones de memoria.
Durante mucho tiempo los equipos de còmputo contaron con una arquitectura basada en el modelo de Von Neumann, pero con el tiempo fueron evidentes las limitaciones técnicas en cuanto a la velocidad de proceso que pueden alcanzar. Por ello actualmente se esta haciendo uso de arquitecturas alternativas que utilizan varias unidades de procesamiento, este tipo de computadoras tienen lo que se conoce como arquitecturas paralelas, las cuales de acuerdo al tipo de paralelismo que llevan a cabo se pueden clasificar de la siguiente manera:
Paralelismo interno (con una única CPU)
- Segmentació
- División funcional
Paralelismo explícito (con varias CPUs )
- SIMD, un solo flujo de instrucciones y múltiples datos
- MISD, varios flujos de instrucciones y uno solo de datos
- MIMD, arquitectura multiprocesador con varios flujos tanto de instrucciones como de datos
PROCESADORES SEGMENTADOS
La segmentación (pipelining) es una técnica de implementación de procesadores que desarrolla el paralelismo a nivel intrainstrucción. Mediante la segmentación se puede solapar la ejecución de múltiples instrucciones. El procesamiento segmentado aprovecha la misma filosofía de trabajo de la fabricación en cadena: cada etapa de la segmentación (o Segmento) completa una parte (subtarea) de la tarea total. Los segmentos están conectados cada uno con el siguiente de forma que la salida de uno pasa a ser la entrada del siguiente. Así, los segmentos configuran un cauce a través del que se va procesando la tarea deseada (por ello, en algunas ocasiones, a los procesadores segmentados también se les llama procesadores encauzados o simplemente, cauces). Lo más interesante de la segmentación es que las diferentes subtareas pueden procesarse de forma simultánea, aunque sea sobre diferentes datos.
Una contribución clave de la segmentación es la posibilidad de comenzar una nueva tarea sin necesidad de que la anterior se haya terminado. La medida de la eficacia de un procesador segmentado no es el tiempo total transcurrido desde que se comienza una determinada tarea hasta que se termina (tiempo de latencia del procesador), sino el tiempo máximo que puede pasar entre la finalización de dos tareas consecutivas.
Evidentemente, la segmentación no es posible sin incrementar los recursos de proceso, de la misma manera que la fabricación en cadena no es posible sin aumentar el número de operarios. Por ello, los procesadores segmentados necesitan redundancia de muchos recursos: registros, circuitos aritméticos, etc.
Considérese una tarea, compuesta por n subtareas. Si estas subtareas se procesan de forma totalmente secuencial, el tiempo necesario para procesar la tarea total será la suma de los tiempos necesarios para la terminación de cada una de las subtareas. Por otra parte, para comenzar el tratamiento de una nueva tarea será necesario esperar ese mismo tiempo. Esto se debe a que habrá algunas unidades funcionales que serán necesarias para llevar a cabo varias de las subtareas y, por ello, esas subtareas no podrán superponerse en el tiempo.
Si, para procesar esa misma tarea, se emplea un procesador segmentado, basta que se haya terminado la primera subtarea para poder empezar a procesar una nueva tarea (véase la figura 2.2). En la citada figura puede verse el continuo flujo de tareas que se van procesando a través de los n segmentos encargados de procesar cada una de las subtareas. Puede observarse que el tiempo total de procesamiento de una tarea completa puede ser el mismo, aunque frecuentemente será mayor, que el tiempo empleado para el procesamiento secuencial de la misma tarea mostrado en la figura 2.1. Esto, sin embargo, carece de importancia, ya que lo verdaderamente importante es el ritmo al que las tareas van saliendo del procesador (velocidad de emisión de tareas). Al número de segmentos del procesador, n, se le llama, en muchas Al número de segmentos del procesador, profundidad de la segmentación.
Para que el tiempo de latencia
del procesador segmentado sea el mínimo posible, es necesario que el procesador
esté equilibrado, es decir, que todas las subtareas en que se ha dividido la
tarea total tarden en procesarse el mismo tiempo. Esto es debido a que las
tareas no podrán evolucionar al segmento siguiente hasta que no se haya terminado
la subtarea más lenta. Por ello, si el procesador no está equilibrado, los
segmentos más rápidos estarán cierto tiempo sin hacer trabajo alguno, lo que
disminuirá el rendimiento del procesador.
RIESGOS DE LA SEGMENTACIÔN
Hay circunstancias que pueden disminuir el rendimiento de un procesador segmentado debido a que provocan la detención del cauce. Estas circunstancias se denominan riesgos o conflictos. Existen tres clases de conflictos (Hennessy & Patterson, 2003):
Conflictos estructurales: son detenciones producidas en el procesador por insuficiencia del hardware, debido a que una etapa no puede avanzar porque el hardware necesario está siendo utilizado por otra.
Conflictos por dependencia de datos: surgen, principalmente, cuando una instrucción necesita los resultados de otra anterior, que todavía no los tiene disponibles, por no haberse terminado de ejecutar completamente.
Conflictos de control: se deben a las instrucciones de control de flujo, en que no se puede leerla instrucción siguiente hasta que no se conozca su dirección.
CONCLUSIONES
Las demandas actuales en cuanto a procesamiento de informaciòn, optimizaciòn de procesos y minimizaciòn en su tiempo de ejecuciòn han permitido el desarrollo de nuevas tecnologìas para hacer frente a este tipo de problemas, en el àrea de la còmputaciòn nos encontramos con el uso de multiples procesadores simultàneamente (arquitecturas paralelas), que mejoran en gran medida los resultados en compraciòn con los obtenidos al hacer uso de equipos con otro tipo de arquitecturas.
Es por ello que actualmente nos encontramos en una constante mejora y aumento en nùmero de procesadores y su capacidad para trabajar simltaneamente entre ellos dentro de cualquier equipo, la implementaciòn de esta tecnologìa se ve en todo tipo de dispositivos, ya sean mòviles o en equipos de còmputo en nuestros hogares y lugares de trabajo.
Como desarrollador de software es importante tener en cuenta las complicaciones implicadas en el còmputo paralelo, ya que existen distintos tipos de problemas que aun persisten relacionados a la concurrencia e integridad de los datos o a la perdida de control de las etapas dentro de los procesos, todo ello con la finalidad de llevar a cabo un mejor uso de los recursos y ofrecer mejores resultados.
REFERENCIAS
1.- Bastida Ibàñez J. PROCESADORES SEGMENTADOS. [archivo PDF]. Disponible en http://www.infor.uva.es/~bastida/Arquitecturas%20Avanzadas/Segment.pdf
2.- Silva Bijit L. Segmentaciòn.[archivo PDF]. Disponible en http://www2.elo.utfsm.cl/~lsb/elo311/clases/c14.pdf