Códigos Operacionales en La Arquitectura Del Computador

Embed Size (px)

DESCRIPTION

Arquitectura

Citation preview

MICROPROGRAMACIN1. CONTROL MICROPROGRAMADOEl trmino "Microprograma" fue utilizado por primera vez por Maurice Wilkes en la dcada del 50, proponiendo un nuevo diseo de la unidad de control que evitara las complejidades del modelo cableado.Aparece por primera vez en la IBM/360, aunque no en los modelos de mayor tamao, luego con la disponibilidad de grandes memorias ROM de semiconductor, se desarroll ampliamente, tanto que en la actualidad es el sistema utilizado por casi todos, en mayor o menor medida.1.1. CONCEPTOS BSICOS:La unidad de control, tal como ha sido descrita anteriormente, parece ser un dispositivo razonablemente simple, pero sin embargo su implementacin es a veces sumamente dificultosa, y sometida a diversos errores, los cuales se advierten al tener que disponer cables adicionales al circuito impreso en la zona correspondiente. microinstruccionesConsideremos nuevamente la ltima tabla, donde se indican las micro-operaciones descritas en notacin simblica. Esta notacin se parece notablemente a un lenguaje de programacin, y de hecho lo es, y es denominado "Lenguaje de Microprogramacin". Cada lnea describe un conjunto de micro-operaciones que debe ser llevada a cabo en un cierto instante de tiempo, y que es conocida como "Microinstruccin".La secuencia de estas microinstrucciones es conocida con el nombre de "Microprograma", o tambin "Firmware", trmino ste que refleja el hecho de que un microprograma es la va intermedia entre el Software y el Hardware. Cmo podemos utilizar esto para disear unidades de control?Consideremos que por cada micro-operacin todo lo que tiene que hacer es generar un conjunto de seales de control. De aqu que por cada micro-operacin, cada lnea de control emergente est en "1" o en "0". Esta condicin puede ser representada por una palabra binaria, que tiene un dgito para cada una de estas lneas.En consecuencia, podemos construir la llamada "palabra de control", en la cual cada bit representa una lnea de control, por tanto cada micro-operacin puede ser representada por una combinacin diferente de unos y ceros en la palabra de control.A continuacin, podemos pensar en un listado de palabras de control, que lgicamente representar una secuencia de micro-operaciones llevadas a cabo por la unidad de control. Por otra parte, debemos reconocer que la secuencia de micro-operaciones no es fija, dado que a veces podemos tener un ciclo indirecto y a veces no.Pongamos ahora la secuencia de palabras de control en una memoria, con cada palabra teniendo una sola y nica direccin. Luego, agreguemos un campo de direccin a cada una, indicando la direccin de la prxima palabra de control a ser ejecutada si se cumple con cierta condicin, para lo cual debern agregarse algunos bits para indicar sta condicin.El resultado es conocido como "microinstruccin horizontal", y es mostrado en la figura 1.a, de donde se desprende el formato siguiente:Hay un bit por cada lnea de control interna y otro por cada lnea de control del bus de control. Tambin hay un campo de condicin y hay un campo con la direccin de la microinstruccin que debe ejecutarse a continuacin. Tal microinstruccin debe interpretarse como sigue:a) Para ejecutar esta microinstruccin, active todas las lneas de control correspondientes al bit "1" y desactive todas las lneas de control correspondientes al bit "0".b) Si la condicin indicada por los bits de condicin es falsa, ejecute la prxima instruccin en la secuencia.c) Si la condicin indicada por los bits de condicin es verdadera, la prxima microinstruccin a ser ejecutada es la indicada en el campo de direccin.Lgicamente este sistema precisa muchas posiciones binarias, por tanto conviene emplear un sistema de codificacin, lo cual nos lleva a una "Microinstruccin vertical", que es la indicada en la figura 1.b.El conjunto de microinstrucciones es almacenado en la memoria de control, el registro de direcciones de control contiene la direccin de la prxima microinstruccin que debe ser leda. Cuando es leda una microinstruccin en la memoria de control, es transferida al registro buffer del control.La parte derecha de dicho registro, se conecta con las lneas de control que salen de la unidad de control, as que leer una microinstruccin en la memoria de control es lo mismo que ejecutarla.

Figura 1 - Formatos tpicos de microinstrucciones.

En la figura 2, se muestra como las palabras de control pueden ser dispuestas en una "memoria de control". Las microinstrucciones de cada rutina deben ser ejecutadas secuencialmente. Cada rutina termina con un una bifurcacin o un salto, indicando donde se debe buscar la prxima.La Memoria de control de la figura 3, puede tomarse como una concisa descripcin de la operacin completa de la Unidad de Control, dado que describe la secuencia de micro-operaciones a ser llevada a cabo durante cada sub-ciclo (bsqueda, indirecto, ejecucin e interrupcin), y adems indica el secuenciamiento de estos. UNIDAD DE CONTROL MICROPROGRAMADA.La memoria de control de la figura 4, contiene un programa que describe el comportamiento de la unidad de control, en consecuencia, podemos intuir que para implementar la unidad de control, simplemente debemos ejecutar el programa

Figura 2 -Organizacin de la Memoria de Control.

Figura 3 - Microarquitectura de la Unidad de Control.

El tercer elemento mostrado en la figura es la unidad de secuenciamiento que alimenta al registro de direcciones de control y distribuye el comando ledo.Esta Unidad de Control funciona de la siguiente manera:a) Para ejecutar una instruccin, la lgica de secuenciamiento entrega un comando de lectura a la memoria de control.b) La palabra cuya direccin es especificada por el registro de direcciones del control, es pasada al registro buffer del control.c) El contenido del registro buffer de control genera las seales de control y la informacin de prxima direccin que necesita la unidad lgica de secuenciamiento.d) La Unidad lgica de secuenciamiento carga una nueva direccin en el registro de direcciones del control, en base a lo indicado por la informacin de nueva direccin proveniente del registro buffer del control y de las banderas de la ULA.Todo esto ocurre durante un SOLO pulso de reloj.El ltimo paso indicado, necesita alguna elaboracin. En el final de cada microinstruccin, la unidad lgica de secuenciamiento carga una nueva direccin en el registro de direcciones del control, dependiendo del valor de las banderas de la ULA y el registro buffer del control, en base al rbol de decisiones realizado de la siguiente manera: Obtener la prxima instruccin: Sumar 1 al registro de direcciones del control. Saltar a una nueva rutina en base a una microinstruccin de salto: Cargar el campo de direccin del registro buffer de control en el registro de direcciones del control. Saltar a una rutina de instruccin de mquina: Carga el registro de direcciones del control de acuerdo al cdigo operativo contenido en el IR. La misma figura 4, muestra dos mdulos denominados decodificador. El dispuesto en la parte superior, traduce el cdigo operativo contenido en el IR a una direccin de memoria de control. El decodificador inferior, no es utilizado con microinstrucciones horizontales, pero si es necesario cuando se emplean microinstrucciones verticales.

Figura 4 - Funcionamiento de la Unidad de Control microprogamada. CONTROL DE WILKES.Tal como hemos citado, Wilkes propuso por vez primera el uso de un control microprogramado, el que diagram segn lo indicado en la figura 5. El corazn del sistema es una matriz de diodos, parcialmente llena. Durante un ciclo de mquina, una fila de la matriz es activada mediante un pulso, lo que genera seales en los puntos donde estn conectados lo diodos (marcados con puntos en el diagrama).La primera parte de la fila genera seales de control, que son las enviadas a controlar la UCP, mientras que la segunda parte genera la direccin de la fila que debe ser pulsada en el prximo ciclo de mquina. En consecuencia, cada lnea de la matriz es una microinstruccin, y la matriz en si misma es la memoria de control.En el inicio de un ciclo, la direccin de la fila a ser pulsada es contenida en el Registro I. Esta direccin es la entrada del decodificador, el que, cuando es activado por el pulso de reloj, activa esa fila de la matriz.De acuerdo con lo que indiquen las seales de control, durante el mismo ciclo, se pasa al Registro II ya sea el cdigo operativo contenido en el registro de instrucciones, o la segunda parte de la fila pulsada, que contiene la direccin de la prxima microinstruccin a ser ejecutada.El contenido del Registro II es pasado al Registro I por un pulso de reloj. En consecuencia, se utilizan pulsos de reloj alternados para activar una fila de la matriz, y para transferir el contenido del Registro II al Registro I.Esta disposicin de dos registros es necesaria por cuanto el decodificador es simplemente un circuito combinacional, y con un solo registro, la salida se vuelve entrada durante el mismo ciclo, provocando una condicin inestable.Este esquema es muy similar a la microprogramacin horizontal descripta anteriormente. La principal diferencia es que en la descripcin previa, el registro de direcciones del control puede ser incrementado en una unidad para entregar la nueva direccin. En el esquema de Wilkes, la prxima direccin es contenida en la misma microinstruccin.Para permitir la bifurcacin, una fila debe contener dos partes direccin, controladas por una seal de condicin, tal como se muestra en la figura.

Figura 5 - Unidad de control microprogramada segn Wilkes.

1.2. VENTAJAS Y DESVENTAJAS DE LA MICROPROGRAMACIN.La principal ventaja es poder implementar una unidad de control en forma bastante sencilla. Adems el microprograma es almacenado en una ROM, al cambiarse la misma es posible cambiar la actuacin de la mquina.Uno de los hechos importantes, es la flexibilidad del sistema y la posibilidad de emular otras mquinas, dado que pueden hacerse que una mquina trabaje con el conjunto de instrucciones de mquina de otra, a travs de la microprogramacin.Como principal desventaja, es que la velocidad de la unidad de control microprogrmada es mucho menor que la del sistema cableado.

2. CDIGOS OPERACIONALESUn cdigo de operacin OPCODE (operation code) es la porcin de una instruccin de leguaje maquina especificada la operacin a ser realizada su especificacin y formato sern determinados por la arquitectura del conjunto de instrucciones (isa) del componente de hardware del computador normalmente un CPU, pero es posiblemente una unidad ms especializada una instruccin completa de lenguaje maquina contiene un OPCODE y , opcionalmente, la especificacin debe actuar. Algunas operaciones tienen operandos implcitos, o de hecho ninguno.Algunas ISAs tienen instrucciones con campos definidos para los OPCODES y operandos, mientras que otras (por ejemplo la arquitectura Intelx86) tienen una estructura ms complicada y de propsito especfico, los operando desde los cuales los OPCODES aplican pueden ser, dependiendo de las arquitectura del CPU, consistir de registros, valores en memoria, valores almacenados en la pila puertos de entrada o salida, bus, etc.2.1. Unidades de controlEs la encargada de buscar y hacer ejecutar las instrucciones. Es entonces una especie de director de operaciones, que manda a todas las restantes partes de la mquina, lo que deben hacer y en que instante de tiempo hacerlo.Es la menos conocida de las unidades que conforman un computador, por cuanto all es donde an persisten algunos secretos, que los diseadores se guardan, pues las diferencias entre los diversos procesadores, que an subsisten, se encuentran en ella.La funcin de la misma, es la de buscar instrucciones y ejecutarlas. La primera parte de ste ciclo, que segn dijera, es el ciclo de mquina, consiste en tomar la direccin de la prxima instruccin, y buscarla en memoria. La segunda, es interpretar (o decodificar) la parte mando de la instruccin, para proceder a emitir las seales de comando a todas las unidades que deben actuar en la ejecucin, en el tiempo adecuado. INSTRUCCIONES:La operacin de la UCP es determinada por la instruccin que est ejecutando. Estas instrucciones son conocidas como instrucciones de mquina, existiendo una gran variedad de ellas. Cada mquina es capaz de ejecutar una cierta cantidad de instrucciones distintas, las que son conocidas como conjunto de instrucciones que es particular para cada mquina.a) ELEMENTOS DE UNA INSTRUCCIN DE MQUINA:Cada instruccin debe contener toda la informacin requerida para que la UCP realice la ejecucin. En la figura I.9, donde se indica el diagrama de estados de un ciclo de instrucciones, se tiene una buena forma de mostrar por implicancia los elementos de una instruccin. Ellos son: Cdigo de Operacin: Especifica la operacin a ser llevada a cabo. Esta es indicada por un cdigo binario, tambin conocido como Cdigo Operativo. Referencia al operando fuente: Esta operacin puede comprender una o ms fuentes de operandos, o sea datos que son las entradas de la operacin. Referencia al operando resultado: La operacin puede generar un resultado. Generalmente donde hay que almacenarlo. Referencia a la prxima instruccin: Lo que indica a la UCP donde buscar la prxima instruccin, luego de haber concluido la ejecucin de la actual.La nueva instruccin a buscar se encuentra alojada en memoria, o en un sistema de memoria virtual, en la principal o en la secundaria (disco). Donde no hay una referencia especfica a la prxima instruccin, ella se encuentra en la casilla siguiente, en cambio cuando se precisa una referencia especfica, se debe adems suministrar la direccin en la memoria principal o en la virtual.Los operandos fuente y resultado, pueden encontrarse en alguna de las siguientes tres reas: Memoria principal o virtual: Como referencia a la prxima instruccin debe entregarse la direccin en la cual se encuentra, tanto sea en la memoria principal como en la virtual. Registro de la UCP: Con raras excepciones, la UCP contiene uno o ms registros que pueden ser referenciados por las instrucciones de mquina. Cuando existe uno solo, la referencia puede ser implcita. Si existen varios, a cada uno se le asigna un nmero, y la instruccin con tendr el nmero del referenciado. Dispositivo de E/S: La instruccin debe especificar cual mdulo y cual dispositivo se utilizarn para la operacin. Si se utiliza un sistema de E/S por memoria mapeada, es necesaria la direccin de memoria principal o virtual a la cual se conecta el dispositivo a emplear.b) REPRESENTACIN DE INSTRUCCIONESEn el interior de la computadora, cada instruccin es representada por una secuencia de bits, divididos en campos especficos, que corresponden a cada elemento de la instruccin. La forma de la instruccin es conocida como formato de la misma, que podra ser tal como el indicado en la figura V.1, en la cual se destacan tres campos: el del cdigo operativo, aqu de cuatro bits, el de la referencia al primer operando aqu de 6 bits y el correspondiente a la referencia al segundo operando, que tambin sera de seis bits.46 6 codigooperativo referencia operando 1 referencia operando 2

16 bits

Figura V.1 - Un formato de instruccin simple de dos direcciones.Dada la dificultad, tanto para el escritor como para el lector, para interpretar las expresiones en cdigo binario de las instrucciones de mquina, se ha convertido en prctica corriente la de utilizar representaciones simblicas, en las cuales los cdigos operativos son reemplazados por abreviaturas nemotcnicas, tales como:ADD = sumaSUB = sustraccinMPY = multiplicacinDIV = divisinLOAD = carga de datos desde la memoriaSTOR = almacenamiento de datos en memoriaPor otra parte, tambin los operandos son representados simblicamente, as por ejemplo la instruccin:ADD R, YPuede significar: Sumar el contenido de la locacin Y al contenido del registro R.En consecuencia es posible escribir un programa en lenguaje mquina de una forma simblica, donde cada cdigo simblico es reemplazable por una secuencia de bits. Asimismo el programador especifica la locacin correspondiente a cada uno de los smbolos, para lo cual al inicio del programa les asigna una posicin de memoria, por ejemplo, en la forma siguiente:X = 513Y = 514Y as sucesivamente.Es posible escribir todo el programa en sta forma simblica, y proveer los medios para que un simple programa, traduzca los smbolos a cdigos binarios. Estos lenguajes simblicos, as como sus traductores son conocidos como ensambladores.c) TIPOS DE INSTRUCCIONESUna computadora tiene un conjunto de instrucciones tal, que le permite al usuario formular cualquier tarea de procesamiento de datos. Otra forma de expresar lo mismo, es tener en cuenta que una mquina debe operar con lenguajes de alto nivel, que son traducidos a lenguaje de mquina para ser ejecutados, de aqu que el conjunto de instrucciones de mquina, debe ser lo suficientemente amplio como para realizar todo lo solicitado por las instrucciones de alto nivel.En general pueden darse cuatro categoras o tipos de instrucciones: De procesamiento de datos: instrucciones aritmticas y lgicas. De almacenamiento de datos: instrucciones con referencia a memoria. De movimiento de datos: instrucciones de E/S. De Control: Instrucciones de prueba y de bifurcacin.Las instrucciones aritmticas proveen la capacidad de procesar datos numricos. Las lgicas operan sobre los bits de una palabra, tratndolos individualmente, por tanto permiten la realizacin de cualquier tipo de operacin lgica que el programador desee ejecutar sobre ellos.Las instrucciones con referencia a memoria, son las encargadas del movimiento de datos entre la memoria y los registros. Las de E/S son necesarias para transferir programas y datos hacia la memoria, as como para que el programador tenga acceso a los resultados.Las instrucciones de prueba son utilizadas para comprobar el contenido de una palabra o para determinar el estado de una ejecucin. Finalmente, las instrucciones de bifurcacin o de ramificacin permiten transferir el control del programa a otro punto del mismo, en funcin de una decisin tomada en base a un cierto clculo.d) CANTIDAD DE DIRECCIONES:Si analizamos la secuencia de operaciones a realizar para la ejecucin de una instruccin aritmtica, vemos que es necesario tener:1) la ubicacin del primer operando2) la ubicacin del segundo operando3) la ubicacin donde guardar el resultado4) la ubicacin de la prxima instruccin.Lo que nos lleva a una instruccin con cuatro direcciones, la cual es la menos encontrada en la prctica, por cuanto precisa procesadores de alta complejidad, con un complicado ciclo de mquina. Son ms utilizados los sistemas de una, dos o tres direcciones. Donde la direccin de la prxima instruccin es implcita (obtenida del contador de programa). La operacin es:Y = (A-B)/(C+D*E)INSTRUCCIN SIGNIFICADOSUB Y,A,BY