Componente básico del computador: Procesador Ing. Juan Pablo Jakymec
Esquema General • • • • •
¿Qué es un Procesador? Organización de un CPU Ejecución de Instrucciones Principios básicos de las computadoras modernas Paralelismo de instrucciones – Filas de Procesamiento – Arquitecturas superescalares
• Paralelismo a nivel de procesador – Computadoras de Matriz – Multiprocesadores – Multicomputadores
¿Qué es un Procesador? • El CPU (Central Processing Unit, por sus siglas en Ingles) es el “Cerebro” de la computadora. Su funciòn es ejecutar programas almacenados en la memoria Principal, buscando las instrucciones y examina para despuès ejecutarlas en secuencia • Los componentes están unidos por un Bus, por el cual pasan direcciones, datos y señales de control • Los buses pueden ser internos o externos (cuando conectan a la memoria y a los dispositivos de E/S).
¿Qué es un Procesador? (Cont.) • Una CPU se compone de las siguientes partes: – Unidad de Control: Busca instrucciones de la memoria principal – ALU (Unidad Aritmética Lógica, por sus siglas en ingles) Ejecuta las instrucciones – Memoria: Guarda resultados temporales o información de control. Funciona a alta velocidad porque está dentro de la CPU
Componentes del Procesador
Procesador de Von Neumann
¿Qué es un Procesador? (Cont.) • Dentro de la memoria los dos registros mas importantes son: – Contador de Programa: Apunta a la siguiente instrucción a ejecutar – Registro de Instrucción: contiene la instrucción que se está ejecutando en el momento
• Los demás registros son de propósito general o de propósito específico
Organización de un CPU • Estructuralmente un procesador es un camino de datos y consiste en los registros, la ALU y varios buses que interconectan los componentes • LA ALU hace las operaciones básicas aritméticas y lógicas con sus entradas y produce el resultado en el registro de salida • Ese contenido se envía a un registro para ser guardado (escrito) en la memoria.
Organización de un CPU (Cont.) • Las instrucciones se pueden dividir en dos tipos: registro-registro y registro-memoria. • Registro-memoria: busca en la memoria palabras (datos) para los registros, para usarse como entrada de la ALU para operaciones subsiguientes o para almacenar el contenido de un registro en la memoria • Registro-Registro: busca los operandos en los registros, los coloca en la ALU, y coloca el resultado de la operación en otro registro
Organización de un CPU (Cont.) • Ciclo de camino de datos: Es el núcleo de todas la CPU. Este ciclo define lo que puede hacer la máquina. Mientras más corto sea, más eficiente es la máquina
Ejecución de Instrucciones • Los pasos cíclicos para ejecutar una instrucción en un CPU son los siguientes: – Busca la instrucción en memoria y la coloca en el registro de instrucciones – Modifica el contador de programa para que apunte a la siguiente instrucción – Determinar el tipo de instrucción – Si se necesita una palabra de memoria, buscarla – Coloca la palabra buscada en el registro del CPU – Ejecuta la instrucción
Ejecución de Instrucciones (Cont.) • Los pasos anteriormente descritos se conocen como búsqueda-decodificación-ejecución • Las instrucciones se pueden ejecutar en hardware o en un intérprete • Este último punto es importante porque se puede decidir entre correr un programa en hardware directamente o escribir el intérprete de los programas en lenguaje de máquina • Una construcción híbrida se refiere a usar parte hardware y parte software para ejecutar instrucciones
Ejecución de Instrucciones (Cont.) • El intérprete descompone las instrucciones en pasos pequeños. • Se puede hacer un hardware más sencillo que un procesador en hardware netamente. • En las primeras computadoras las instrucciones eran pequeñas y sencillas. La evolución hizo que las instrucciones fueran individuales y mas potentes. • Se descubrió que con instrucciones mas complejas se ejecutaban más rápido los programas, aunque se tardara mas individualmente cada instrucción
Ejecución de Instrucciones (Cont.) • El Término Arquitectura en la computadora se acuñó cuando IBM sacó una familia de máquinas que podían ejecutar las mismas instrucciones de manera compatible • Los intérpretes hicieron posible bajar los costos de las computadoras, además de explorar las posibilidades de hacer más complejas las instrucciones
Ventajas de las instrucciones Interpretadas • Capacidad de corregir las instrucciones mal implementadas o subsanar las deficiencias en el diseño del hardware • Añade nuevas instrucciones a bajo costo • Diseño que permite crear, probar y documentar instrucciones complejas de manera eficiente
Ejecución de Instrucciones (Cont.) • Los microprocesadores de los años setenta eran de 8 bits, con instrucciones muy sencillas • Las máquinas de esta época tenían unas memorias de solo lectura llamadas almacenes de control, para contener los intérpretes. Las instrucciones que requiriera ese intérprete se llamaban micro instrucciones
Principios básicos de las computadoras modernas • Todas las instrucciones se ejecutan directamente en el hardware del equipo – Eliminando el nivel de interpretación hace que la mayor parte de las instrucciones sean rápidas. – Las instrucciones más complejas se pueden dividir en partes discretas que luego pueden ejecutarse como una sucesión de micro instrucciones. Puede hacer funcionar más lento la máquina, pero si las instrucciones no ocurren con frecuencia, es aceptable
Principios básicos de las computadoras modernas (Cont.) • Hay que Maximizar el ritmo con el que se emiten instrucciones – Hay que emitir el máximo número de instrucciones posibles por segundo, sin importar el tiempo real de ejecución – La eficiencia de los procesadores se mide en MIPS (Millones de Instrucciones por Segundo) – El paralelismo es parte importante en la mejora del rendimiento de los equipos – El orden en que se escriben las instrucciones no necesariamente es el orden de ejecución, porque los recursos necesarios pudieran estar ocupados.
Principios básicos de las computadoras modernas (Cont.) • Las instrucciones deben ser fácil de decodificar – No solo es importante emitir las instrucciones, sino también decodificarlas para determinar los recursos necesarios – Cuanto menos tipo de formato de instrucciones exista, mejor
• Incluir abundantes registros: – Es bueno tener como mínimo 32 registros para tener donde almacenar temporalmente información hasta que no se necesite. – Si se queda la máquina sin registros habrá que escribir en memoria y volver a cargar ese resultado
Principios básicos de las computadoras modernas (Cont.) • Sólo las operaciones de carga y almacenamiento deben hacer referencia a la memoria: – Para desglosar la operaciones en pasos individuales es que casi todas las instrucciones provengan y regresen a registros en lugar de la memoria. – Las instrucciones registro-memoria pueden realizarse con instrucciones diferentes – Las instrucciones LOAD y STORE son las únicas que deben hacer referencia a la memoria.
Paralelismo de instrucciones • Hay dos maneras básicas de aumentar el rendimiento de un computador: Aumentar la velocidad del reloj de los chip (tiene un límite físico finito) o aumentar el número de instrucciones por ciclo de reloj (ejecución en paralelo de instrucciones) • Con el paralelismo hay dos maneras más de hacerlo: Paralelismo a nivel de instrucciones (filas de procesamiento), o paralelismo a nivel de procesadores (arquitecturas superescalares).
Filas de Procesamiento • La obtención de instrucciones de la memoria es un proceso lento y con tendencia a cuellos de botella • Desde 1959, IBM contó con la capacidad de buscar instrucciones en memoria de adelantado, para tenerlas disponibles en el momento adecuado • Esas instrucciones de adelantado se guardaban en un buffer de prebúsqueda. Con eso se lograba que la instrucción estaba en el buffer de prebúsqueda cuando se necesitaba en lugar de esperar la lectura desde la memoria
Filas de Procesamiento (Cont.) • Con ese proceso de prebúsqueda la ejecución de instrucciones se divide en dos partes: Búsqueda y ejecución. Esto dio lugar al concepto de pipeline, o fila de procesamiento • Este pipeline divide la ejecución de instrucciones en más de dos partes, cada una de ellas se maneja con un hardware dedicado y los componentes pueden operar en paralelo • Las partes en que se divide una fila de procesamiento se llaman etapas.
Ejemplo de Fila de Procesamiento
Filas de Procesamiento (Cont.) • Como ejemplo: si tienen 5 etapas, la primera busca la instrucción, la segunda la decodifica, la tercera busca los operandos, la cuarta ejecuta la instrucción y la quinta escribe el resultado de la operación, llega un momento en el que se ejecutan cinco instrucciones en simultanea en el ejemplo anterior. • Funciona muy parecido a lo que es una línea de montaje de Henry Ford para armar un carro • Las filas de procesamiento permiten balancear la latencia del procesador (cuánto se tarda por instrucción) y su ancho de banda (Cuántas instrucciones ejecutan)
Arquitecturas superescalares • Se logra mediante el uso de un CPU que posea una fila de procesamiento dual • Lo que quiere decir es lo siguiente: Se tiene una sola unidad de búsqueda de instrucciones y ésta lleva a dos o mas filas de procesamiento, cada una con su propia ALU, etc. • Se puede realizar siempre y cuando las instrucciones a ejecutar en paralelo no compitan por el acceso a los recursos o que una operación no dependa de la otra
Arquitectura Superescalar
Arquitecturas superescalares (Cont.) • El compilador debe hacer cumplir las condiciones anteriores, o los conflictos se detectan y corrigen usando hardware adicional • El 486 fue el primer modelo en usar fila de procesamiento, y el Pentium en usar de a dos filas de procesamiento de 5 etapas. • Por medio de reglas complejas se determinaba si un par de instrucciones eran compatibles o no. Si no lo eran, o eran instrucciones complejas, se ejecutaba la primera, y la segunda se apareaba con la siguiente. Por eso, los compiladores Pentium eran más rápidos que los de modelos anteriores
Arquitecturas superescalares (Cont.) • Como cada fila de procesamiento requería de duplicación de hardware, entonces para mejorar el rendimiento se usaron otras maneras. • El término arquitectura superescalar se refiere a tener una sola fila de procesamiento, pero con varias unidades funcionales. El primer procesador moderno superescalar fue el del Pentium II, aunque sus raíces venían de tiempos anteriores. • El procesador superescalar se basa en el principio de que la etapa 3 genera instrucciones más rápido de la que puede procesar la etapa 4 para poder tener varias instrucciones ejecutadas en un momento dado
Procesador SuperEscalar
Paralelismo a nivel de procesador • La demanda de computadoras mas rápidas es cada vez mayor. Las personas quieren hacer más y mas aplicaciones de alto consumo y velocidad • El límite físico de los procesadores va a venir dado por dos factores: La velocidad de la luz y la capacidad de disipación de calor del CPU. • Con el paralelismo a nivel de instrucciones se logra ganar un factor de hasta 10. Para ganancias superiores se requiere el uso de varios CPU en conjunto
Computadoras de Matriz • Se basan en el principio de que algunos programas tienen una estructura bastante regular en su forma de instrucciones, es decir, se hacen el mismo tipo de instrucciones con datos diferentes. • Existen dos maneras de pensar este tipo de solución de matriz: El arreglo de procesadores, o los procesadores vectoriales
Computador de Matriz
Computadoras de Matriz (Cont.) • El arreglo de procesadores consiste en un número de procesadores iguales que ejecutan instrucciones iguales sobre conjuntos de datos diferentes. • La primera computadora de este estilo fue la ILLIACIV de la universidad de Illinois • Consistiría en 4 cuadrantes, que tenían una matriz de 8 x 8 procesadores/ memoria. Una única unidad de control por cuadrante ordenaba las instrucciones que ejecutaban todos los procesadores • Para su época no existía suficiente presupuesto, asì que se hizo un solo cuadrante
Computadoras de Matriz (Cont.) • Con todo y falta de presupuesto, esa máquina alcanzó los 50 Megaflops (50 millones de operaciones de punto flotante por segundo) • Los procesadores vectoriales funcionan parecido al arreglo de procesadores, con la diferencia de que es un sólo hardware con muchas filas de procesamiento • Cray research realizó los primeros procesadores de ese estilo.
Computadoras de Matriz (Cont.) • El procesador vectorial tiene el concepto de registro vectorial, que consiste en un conjunto de registros que se cargan desde la memoria con una sola instrucción • Una instrucción de suma vectorial realiza la suma por par de elementos de dos vectores, alimentándolos a un sumador con filas de procesamiento. El resultado se carga a un registro vectorial o se usa como operando de otra operación. • De los dos tipos, el procesador vectorial es el que lleva la delantera por los costos asociados al arreglo de procesadores. • Los procesadores vectoriales se pueden añadir a uno convencional, para mayor eficiencia.
Multiprocesadores • El multiprocesador consiste en tener varios CPU que comparten una memoria común. • Se deben coordinar dichos procesadores para evitar que interfieran entre ellos • Hay dos maneras básicas para implementar los múltiples procesadores: Un bus común entre los procesadores y la memoria o que cada procesador tenga una memoria “privada” para ejecutar ciertas instrucciones
Multiprocesadores (Cont.) • El bus común tiene limitaciones, porque todos los procesadores tratan de acceder a una única memoria y se causan los conflictos. • El sistema con un poco de memoria “privada” aligera el tràfico en el bus, por lo cual se logra ser màs eficiente • Otro método planteado para hacer multiprocesadores es el uso de caches • Con los multiprocesadores es más fácil trabajar que con otros tipos de computadores paralelos
Multiprocesadores
Multiprocesadores (Cont.) • Los multiprocesadores pueden tomar una parte particular de la memoria común para analizar asuntos complejos, como una foto digitalizada. • Este modelo tiene limitantes en cuanto al número de procesadores que se pueden usar (hasta 64)
Multicomputadores • El modelo de multiprocesadores es problemático cuando muchos procesadores se deben conectar a la memoria común • El modelo de Multicomputadores elimina ese problema, porque es un número de computadores conectados, pero cada quien con su propia memoria, sin memoria común • Los CPU se comunican entre ellos enviándose mensajes a una gran velocidad.
Multicomputadores (Cont.) • Los Multicomputadores se conectan en topología árbol ,anillo o arreglos bi o tridimensionales. • A pesar de que pudiera ser necesario que el mensaje de una computadora a otra traspase varias computadoras, se han logrado tiempos de llegada de mensajes de micro segundos, con más de 10.000 procesadores en simultanea