unidad 1 arquitectura

14

Click here to load reader

Upload: cynthia-ramirez

Post on 13-Jun-2015

2.444 views

Category:

Documents


0 download

TRANSCRIPT

  • 1. Apuntes de arquitectura de computadorasUnidad 1 Modelo de arquitecturas de cmputo.1.1 Modelos de arquitecturas de cmputo.1.1.1 Arquitecturas Clsicas.Estas arquitecturas se desarrollaron en las primeras computadoras electromecnicas y de tubos devaco. Aun son usadas en procesadores empotrados de gama baja y son la base de la mayora de lasarquitecturas modernasArquitectura Mauchly-Eckert (Von Newman)Esta arquitectura fue utilizada en la computadora ENIAC. Consiste en una unidad central de procesoque se comunica a travs de un solo bus con un banco de memoria en donde se almacenan tanto loscdigos de instruccin del programa, como los datos que sern procesados por este.Esta arquitectura es la ms empleada en la actualidad ya, que es muy verstil. Ejemplo de estaversatilidad es el funcionamiento de los compiladores, los cuales son programas que toman comoentrada un archivo de texto conteniendo cdigo fuente y generan como datos de salida, el cdigomaquina que corresponde a dicho cdigo fuente (Son programas que crean o modifican otrosprogramas). Estos datos de salida pueden ejecutarse como un programa posteriormente ya que se usa lamisma memoria para datos y para el cdigo del programa. Bus principalMemoria PrincipalProcesador AlmacenaUnidad deel programa y Controllos datos ALURegistros Entrada y salidaFigura 1.1.1.2 Diagrama a bloques de la arquitectura Von Newman.La principal desventaja de esta arquitectura, es que el bus de datos y direcciones nico se convierte enun cuello de botella por el cual debe pasar toda la informacin que se lee de o se escribe a la memoria,obligando a que todos los accesos a esta sean secuenciales. Esto limita el grado de paralelismo(acciones que se pueden realizar al mismo tiempo) y por lo tanto, el desempeo de la computadora.Este efecto se conoce como el cuello de botella de Von NewmanEn esta arquitectura apareci por primera vez el concepto de programa almacenado. Anteriormente la

2. secuencia de las operaciones era dictada por el alambrado de la unidad de control, e cambiarlaimplicaba un proceso de recableado laborioso, lento(hasta tres semanas) y propenso a errores. En estaarquitectura se asigna un cdigo numrico a cada instruccin. Dichos cdigos se almacenan en lamisma unidad de memoria que los datos que van a procesarse, para ser ejecutados en el orden en que seencuentran almacenados en memoria. Esto permite cambiar rpidamente la aplicacin de lacomputadora y dio origen a las computadoras de propsito generalMas a detalle, el procesador se subdivide en una unidad de control (C.U.), una unidad lgica aritmtica(A.L.U.) y una serie de registros. Los registros sirven para almacenar internamente datos y estado delprocesador. La unidad aritmtica lgica proporciona la capacidad de realizar operaciones aritmticas ylgicas. La unidad de control genera las seales de control para leer el cdigo de las instrucciones,decodificarlas y hacer que la ALU las ejecute.Arquitectura HarvardEsta arquitectura surgi en la universidad del mismo nombre, poco despus de que la arquitectura VonNewman apareciera en la universidad de Princeton. Al igual que en la arquitectura Von Newman, elprograma se almacena como un cdigo numrico en la memoria, pero no en el mismo espacio dememoria ni en el mismo formato que los datos. Por ejemplo, se pueden almacenar las instrucciones endoce bits en la memoria de programa, mientras los datos de almacenan en 8 bits en una memoria aparte. Bus deBus deprogramaProcesador datos Memoria de datos Unidad de Memoria de Control programaALU RegistrosEntrada y salida Figura 1.1.1.2 Diagrama a bloques de la arquitectura HarvardEl hecho de tener un bus separado para el programa y otro para los datos permite que se lea el cdigode operacin de una instruccin, al mismo tiempo se lee de la memoria de datos los operados de lainstruccin previa. As se evita el problema del cuello de botella de Von Newman y se obtiene un mejordesempeo.En la actualidad la mayora de los procesadores modernos se conectan al exterior de manera similar a ala arquitectura Von Newman, con un banco de memoria masivo nico, pero internamente incluyenvarios niveles de memoria cache con bancos separados en cache de programa y cache de datos,buscando un mejor desempeo sin perder la versatilidad.1.1.2 Arquitecturas Segmentadas.Las arquitecturas segmentadas o con segmentacin del cauce buscan mejorar el desempeo realizandoparalelamente varias etapas del ciclo de instruccin al mismo tiempo. El procesador se divide en varias 3. unidades funcionales independientes y se dividen entre ellas el procesamiento de las instrucciones. Paracomprender mejor esto, supongamos que un procesador simple tiene un ciclo de instruccin sencilloconsistente solamente en una etapa de bsqueda del cdigo de instruccin y en otra etapa de ejecucinde la instruccin. En un procesador sin segmentacin del cauce, las dos etapas se realizaran de manerasecuencial para cada una de la instrucciones, como lo muestra la siguiente figura. B1 E1 B2 E2 B3 E3 Figura 1.1.2.1 Bsqueda y ejecucin en secuencia de tres instrucciones en unprocesador sin segmentacin del causeEn un procesador con segmentacin del cause, cada una de estas etapas se asigna a una unidadfuncional diferente, la bsqueda a la unidad de bsqueda y la ejecucin a la unidad de ejecucin. Estasunidades pueden trabajar en forma paralela en instrucciones diferentes. Estas unidades se comunicanpor medio de una cola de instrucciones en la que la unidad de bsqueda coloca los cdigos deinstruccin que ley para que la unidad de ejecucin los tome de la cola y los ejecute. Esta cola separece a un tubo donde las instrucciones entran por un extremo y salen por el otro. De esta analogaproviene el nombre en ingles: Pipelining o entubamiento. En general se divide al procesadorsegmentado en una unidad independiente por cada etapa del ciclo de instruccin.Unidad deUnidad de Cola de InstruccionesBsqueda ejecucinFigura 1.1.2.3 Comunicacin entre las unidades en un procesador con segmentacin de cauce.Completando el ejemplo anterior, en un procesador con segmentacin, la unidad de bsquedacomenzara buscando el cdigo de la primera instruccin en el primer ciclo de reloj. Durante elsegundo ciclo de reloj, la unidad de bsqueda obtendra el cdigo de la instruccin 2, mientras que launidad de ejecucin ejecuta la instruccin 1 y as sucesivamente. La siguiente figura muestra esteproceso.B1 B2 B3 B3 Unidad de bsquedaE1 E2 E3Unidad de ejecucin Figura 1.1.2.3 Bsqueda y ejecucin en secuencia de tres instrucciones en un 4. procesador con segmentacin del causeEn este esquema sigue tomando el mismo numero de ciclos de reloj (el mismo tiempo), pero como setrabaja en varias instrucciones al mismo tiempo, el nmero promedio de instrucciones por segundo semultiplica. En teora, el rendimiento de un procesador segmentado mejora con respecto a uno nosegmentado en un factor igual al numero de etapas independientes. Sin embargo, la mejora en elrendimiento no es proporcional al numero de segmentos en el cauce debido a que cada etapa no toma elmismo tiempo en realizarse, adems de que se puede presentar competencia por el uso de algunosrecursos como la memoria principal. Otra razn por la que las ventajas de este esquema se pierden escuando se encuentra un salto en el programa y todas las instrucciones que ya se buscaron y seencuentran en la cola, deben descartarse y comenzar a buscar las instrucciones desde cero a partir de ladireccin a la que se salto. Esto reduce el desempeo del procesador y an se investigan maneras depredecir los saltos para evitar este problema. Espera Espera BsquedaEjecucinFigura 1.1.2.4 Consecuencias de la competencia por un recurso1.1.3 Arquitecturas de multiprocesamiento.Cuando se desea incrementar el desempeo ms aya de lo que permite la tcnica de segmentacin delcauce (limite terico de una instruccin por ciclo de reloj), se requiere utilizar ms de un procesadorpara la ejecucin del programa de aplicacin.Las CPU de multiprocesamiento se clasifican de la siguiente manera: SISO (Single Instruction, Single Operand ) computadoras independientes SIMO (Single Instruction, Multiple Operand ) procesadores vectoriales MISO (Multiple Instruction, Single Operand ) No implementado MIMO (Multiple Instruction, Multiple Operand ) sistemas SMP, ClustersProcesadores vectoriales Son computadoras pensadas para aplicar un mismo algoritmo numrico auna serie de datos matriciales, en especial en la simulacin de sistemas fsicos complejos, tales comosimuladores para predecir el clima, explosiones atmicas, reacciones qumicas complejas, etc., dondelos datos son representados como grandes nmeros de datos en forma matricial sobr los que se deben seaplicar el mismo algoritmo numrico.En los sistemas SMP (Simetric Multiprocesesors), varios procesadores comparten la misma memoriaprincipal y perifricos de I/O, Normalmente conectados por un bus comn. Se conocen comosimtricos, ya que ningn procesador toma el papel de maestro y los dems de esclavos, sino que todostienen derechos similares en cuanto al acceso a la memoria y perifricos y ambos son administrados porel sistema operativo. 5. Los Clusters son conjuntos de computadoras independientes conectadas en una red de rea local o porun bis de interconexin y que trabajan cooperativamente para resolver un problema. Es clave en sufuncionamiento contar con un sistema operativo y programas de aplicacin capaces de distribuir eltrabajo entre las computadoras de la red.1.2 Anlisis de los componentes.1.2.1 CPU.1.2.1.1 Arquitecturas.Ademas de las arquitecturas clsicas mencionadas anteriormente, en la actualidad han aparecidoarquitecturas hbridas entre la Von Newman y la Harvard, buscando conservar la flexibilidad, peromejorando el rendimiento.El cambio ms importante de los ltimos aos en diseo de las computadoras de los ltimos aos se diodurante los aos 1980, con la aparicin de la corriente de diseo conocida como computadoras deconjunto reducido de instrucciones (RISC, por sus siglas en ingles). Esta escuela pretende aplicar unenfoque totalmente distinto al tradicional hasta entonces, que paso a conocerse como computadoras deconjunto complejo de instrucciones (CISC) para diferenciarla de la nueva tendencia.La tendencia tradional, representada por las arquitecturas CISC (Complex Instruction Set Computers)se caracterizan por tener un nmero amplio de instrucciones y modos de direccionamiento. Seimplementan instrucciones especiales que realizan funciones complejas, de manera que unprogramador puede encontrar con seguridad, una instruccin especial que realiza en hardware lafuncin que el necesita. El nmero de registros del CPU es limitado, ya que las compuertas lgicas delcircuito integrado se emplean para implementar las secuencias de control de estas instruccionesespeciales.Al investigar las tendencias en la escritura de software cientfico y comercial al inicio de los 80, ya sepudo observar que en general ya no se programaba mucho en ensamblador, sino en lenguajes de altonivel, tales como C. Los compiladores de lenguajes de alto nivel no hacan uso de las instruccionesespeciales implementadas en los procesadores CISC, por lo que resultaba un desperdicio de recursosemplear las compuertas del circuito de esta forma. Por lo anterior, se decidi que era mejor emplearestos recursos en hacer que las pocas instrucciones que realmente empleaban los compiladores seejecutaran lo ms rpidamente posible. As surgi la escuela de diseo RISC (Reduced Instruction SetComputers) donde solo se cuenta con unas pocas instrucciones y modos de direccionamiento, pero sebusca implementarlos de forma muy eficiente y que todas las instrucciones trabajen con todos losmodos de direccionamiento. Ademas, se observo que una de las tareas que tomaban ms tiempo enejecutarse en lenguajes de alto nivel, era el pasar los parmetros a las subrutinas a travs de la pila.Como la forma ms rpida de hacer este paso es por medio de registros del CPU, se busco dotarlo conun amplio nmero de registros, a travs de los cuales se pueden pasar dichos parmetros.1.2.1.2 Tipos.Los CPUs modernos pueden clasificarse de acuerdo a varias caractersticas, tales como: el tamao delALU o del Bus de conexin al exterior (8, 16, 32, 64 bits),si tienen cauce segmentado o nosegmentado, si con tipo CISC o RISC, Von Newan o Harvard y si solo tienen instrucciones enteras oimplementan tambin instrucciones de punto flotante 6. 1.2.1.3 Caractersticas.Las caractersticas ms importantes a considerar al escoger un CPU para usarlo en una aplicacin, son:Modelo del programador (Conjunto de registros que el programador puede utilizar), forman el modelomental del CPU que el programador utiliza al programar en ensamblador.Conjunto de instrucciones que puede ejecutar el CPUModosde direccionamiento que pueden usarse para obtener los operandos de las instrucciones.Ciclo de instruccin (el conjunto de pasos que realiza el CPU para procesar cada instruccin)Buses de interconexin, usados para que el CPU lea y escriba a la memoria y a los dispositivos deentrada y salida.1.2.1.4 Funcionamiento.Debido a la gran variedad de CPU disponibles comercialmente, se explicara el funcionamiento de ununidad central de proceso imaginaria muy simple, pero que resume el funcionamiento bsico de lamayora de los CPUs. Este CPU es similar a las primeras computadoras existentes en los aos 1950s.Esta computadora contara con una memoria de 4096 palabras de 16 bits cada una. Esto corresponde aun bus de direcciones de 12 bits y un bus de datos de 16 bits). En cada localidad de memoria se podralmacenar un entero de 16 bits o el cdigo de una instruccin, tambin de 16 bits.Todos los CPU tienen como funcin principal la ejecucin de un programa acorde a la aplicacin delmismo. Un programa es un conjunto de instrucciones almacenadas de acuerdo al orden en que debenejecutarse. Por lo tanto, toda computadora debe ser capaz de procesar las instrucciones de su programaen un ciclo de instruccin, consistente en un nmero de etapas que varia con cada CPU, pero quetradicionalmente han sido tres:1-Bsqueda del cdigo de Instruccin. Esta consiste en leer de la memoria cual ser la siguienteinstruccin a ejecutar, la cual esta almacenada en forma de un cdigo numrico que indica cual detodas las operaciones que puede realizar el CPU sera la siguiente y con que operandos se ejecutara.2- Decodificacin. Consiste en tomar el cdigo numrico e identificar a cual de las operaciones quepuede realizar el CPU corresponde dicho cdigo. El proceso contrario, la codificacin, consiste enconociendo la instruccin, determinar el nmero que la va a representar. Esta etapa usualmente serealiza con un decodificador binario.3- Ejecucin. En esta etapa se lleva a cabo la operacin sobre los datos que se vallan a procesar. Engeneral, la unidad de control (CU) genera las seales de control necesarias para llevar los datos a lasentradas de la Unidad Aritmtica Lgica, la cual efectuar las operaciones aritmticas y lgicas.Posteriormente, la unidad de control generara las seales de control necesarias para transferir la salidade la Unidad Aritmtica Lgica al registro donde sern almacenados los resultados para su usoposterior. 7. Bsqueda de la Instruccin Decodificacin de la Instruccin Ejecucin de la InstruccinFigura 1.2.1.4.1 Ciclo de instruccinEs importante recordar que cada instruccin del programa se almacena en memoria como un nmerobinario. Este nmero se conoce como cdigo de instruccin, y usualmente se divide en al menos doscampos: un cdigo de operacin (Opcode) y un nmero que representa al operando u operandos de lainstruccin. En el caso de la computadora imaginaria que estamos estudiando, se almacena cadainstruccin en una de las 4096 palabras de memoria de 16 bits cada una. Se utiliza un formato de unsolo operando, con un segundo operando en el acumulador cuando es necesario. Los cuatro bits mssignificativos de los diecisis bits de la palabra se dedican a almacenar el cdigo de operacin. Losdoce bits menos significativos se dedican a almacenar la direccin del operando.Cdigo de Instruccin Operacin Operando 1Operando 2 Operando nicoCodigo de OperacinFigura 1.2.1.4.2 Codificacin de las instruccionesLa siguiente tabla resume los cdigos de operacin de la computadora de ejemplo.Cdigo de Operacin Instruccin Operacin0h LOAD (Carga)ACC