Está en la página 1de 15

1 - Introduccin El diagrama en bloques de la figura presenta los bloques constitutivos bsicos de cualquier sistema basado en un microprocesador.

La explicacin que sigue es totalmente general y bsica no hacindose referencia a ningn procesador en particular.

Bus de Datos Registros Unidad Aritmtica Y Lgica Unidad de Control MEMORIA UNIDAD CENTRAL DE PROCESO ENTRADA / SALIDA Bus de Control RWM Bus de Direcciones ROM

Entrada Mundo exterior

Salida

Entrada/Salida

Perifricos

Entrada

Salida

Entrada/Salida

1.1 - Memoria: Se encarga de almacenar los datos y el programa que utiliza esos datos, as como tambin los resultados que el mismo genere. Est constituida por un nmero determinado de celdas de almacenamiento, las cuales pueden guardar 8 bits cada una (1 byte). Estn dispuestas e interconectadas de manera que cada una tiene asignado un nmero nico que las identifica llamado su direccin. En todo sistema con microprocesador encontraremos dos tipos de memorias: ROM y RWM (llamada RAM en casi todos los dems textos), la primera es un tipo de memoria que solo puede ser leda (Read only memory) y escrita bajo condiciones especiales (usando un programador) y que no pierde su informacin al apagarse el equipo. La informacin almacenada en la memoria ROM presente en el sistema viene generalmente grabada desde el momento de la fabricacin del equipo. Normalmente en esta memoria

se encuentra almacenado el programa de arranque del equipo y una serie de rutinas estrechamente ligadas al hardware del sistema conocidas como ROM BIOS (Basic Input Output System) en los computadores personales, por citar un ejemplo. Por otro lado la memoria RWM (Read Write Memory) puede ser leda y escrita pero cuenta con la desventaja de que una vez apagado el equipo la informacin en ella presente se pierde (es voltil). Es en esta memoria en la cual se almacenan el Sistema Operativo y los programas del usuario as como los datos que maneje (citando nuevamente como ejemplo a las computadoras personales). Para el caso de un sistema menor, en la ROM encontraramos todo el cdigo y tanta RWM como sea necesaria para las variables que el cdigo necesite, en este caso las cantidades de una y otra no superan los pocos cientos o miles. Para el caso de los computadores personales, hablamos de millones (tpicamente mas de 32Mbytes de RWM).

1.2 - Entrada/Salida: Adems de las celdas de memoria, existen los llamados puertos de entrada o salida del sistema, en los cuales, el dato enviado al mismo queda disponible hacia los dispositivos electrnicos conectados en la periferia del sistema (conocidos como dispositivos perifricos). Por otro lado el dato ledo desde un puerto de entrada tiene que haber sido puesto por un dispositivo perifrico desde afuera. De este modo a travs de los puertos, el sistema puede intercambiar informacin con el mundo exterior. Por ejemplo leer el teclado y hacer eco de la lectura en el monitor (en un PC), o leer un teclado matricial de 16 teclas y enviar informacin a un visualizador de 4 dgitos (de 7 segmentos) o un visualizador de cuarzo lquido (LCD) en un sistema menor. Del mismo modo que con la memoria, cada puerto conectado al sistema tiene una direccin nica que lo identifica a la que llamamos nmero de puerto. Los perifricos se catalogan en: perifricos de entrada, de salida o de entrada/salida de acuerdo a su funcin en el sistema. La misin de un perifrico de entrada es convertir eventos externos al sistema y codificarlos en binario para que puedan ser procesados. Estos eventos pueden ser por ej, una temperatura la cual luego de sensada y conformada adecuadamente mediante un ADC (conversor de analgico a digital) puede ser leda mediante un puerto de entrada y procesada por el programa. Los eventos externos con los que se trabaja normalmente son: Pulsaciones de teclas (teclado), movimiento en un plano (ratn), sonidos (tarjeta de sonido), video (cmaras digitales, tarjetas de captura de video), imgenes (scanner), etc. La misin de un perifrico de salida es convertir informacin binaria, enviada al mismo a travs de un puerto de salida a otro estado, el cual pueda ser interpretado por los usuarios de una forma ms natural. Por ej., indicadores luminosos, sonidos, imgenes, copias impresas, etc. Los perifricos de e/s intercambian informacin en ambos sentidos, tal es el caso de los dispositivos de almacenamiento masivo (discos, disquetes, cintas), modems, interfaces serie Rs232 o similares, tarjetas de red, etc.

Independientemente del tipo de perifrico, existe un intercambio de entrada/salida entre el sistema y el perifrico (salvo casos particulares) y se realiza mediante varios puertos algunos de entrada, otros de salida y algunos bidireccionales. El sistema tiene que tener la posibilidad de enviar informacin de control (que sale del sistema hacia el perifrico) aunque este sea de entrada. Del mismo modo, el sistema debe recibir informacin de estado desde el perifrico aunque este sea de salida. As que adems de los datos que el perifrico recibe o enva (segn sea el sentido de stos, ser catalogado el perifrico), el sistema normalmente enva y recibe informacin adicional, as que la comunicacin con los perifricos normalmente es en ambos sentidos. Si no fuera as, los programas no podran saber si la impresora tiene o no tiene papel, tinta etc. o si el monitor est o no conectado, por citar algunos ejemplos sencillos. 1.3 - Buses Los buses del sistema: son ni ms ni menos que las conexiones elctricas entre los componentes, que por el tipo de tarea asociada a los mismos se pueden agrupar en: Datos, Direcciones y Control. El bus de DATOS (Data Bus: dBus) est constituido por un grupo de lneas elctricas que llevan un dato desde la CPU hacia el resto del sistema o en direccin contraria (es bidireccional, indicado en el dibujo por una flecha en ambos sentidos). La cantidad de lneas que conforman este bus depende del microprocesador con el que se trabaje, pero como los datos estn almacenados en unidades llamadas bytes (agrupaciones de 8 bits), este bus suele estar compuesto por 8 lneas o un nmero mltiplo de este, de modo que a la vez (en paralelo) un dato de un byte (dos o cuatro, etc) pueda ser escrito o ledo por la CPU en o desde Memoria o Puertos. El bus de DIRECCIONES (Address Bus: aBus) por otra parte contiene el nmero de la celda de memoria o del puerto que ser ledo o escrito por la CPU. La cantidad de lneas que conforman este bus determina el espacio de direccionamiento de la CPU, ya que la cantidad de celdas que la misma puede direccionar es igual a 2n, siendo n la cantidad de lneas presentes en este bus. S por ejemplo el bus de direcciones se compone de 16 lneas, el espacio de direccionamiento del procesador es de 216 = 65536 o 64Kbytes ya que 216=210x26 = 1Kb x 64. Este es un bus unidireccional (de salida) ya que la CPU indica a travs de este bus cual es el elemento al que desea hacer referencia. Por ltimo tenemos el bus de CONTROL, el cual contiene diferentes seales que salen o entran de la CPU, entre ellas las lneas que identifican el sentido de la transferencia de datos, o sea, las que indican si la CPU lee o escribe, y normalmente una lnea adicional que indica si la referencia es en Memoria o en Puertos. El bus de control incluye varias seales adicionales que realizan otras tareas que no son presentadas ahora por ser esta una breve introduccin al tema. Como podemos ver, los dispositivos externos a la C.P.U. son celdas de memoria o puertos, cada uno de los cuales tiene un nmero que los identifica, podemos decir que la misma cuenta con dos espacios de direccionamiento separados, el espacio de direcciones de memoria y el de puertos. Sobre una celda de memoria particular o sobre un puerto hay solamente dos acciones permitidas: Leer o Escribir. En un determinado momento, el bus de datos puede enviar

un dato hacia afuera de la C.P.U. o hacia adentro, pero no en ambos sentidos simultneamente. Resumiendo: el bus de datos, provee el canal de comunicacin por el cual la informacin es transportada, a su vez, el bus de direcciones identifica al nmero del elemento sobre el cual la C.P.U. esta trabajando y el bus de control completa el resto de la informacin, indicando si la C.P.U. esta trabajando sobre el espacio de Memoria o Puertos y, adems, si est leyendo o escribiendo sobre el elemento direccionado. En un determinado momento, la C.P.U. puede realizar una: a) Lectura de Memoria b) Escritura de Memoria c) Lectura de Puertos d) Escritura de Puertos e) Ninguna de las anteriores. La memoria y los puertos son sistemas digitales, la C.P.U. provee lneas de salida suficientes (va bus de control) para especificar sus intenciones, como tenemos 5 casos posibles, al menos necesitaramos 3 bits en el bus de control para codificarlos. Una C.P.U. puede tener 3 lneas nombradas y definidas de la siguiente manera: RD : Read: RD = 1 Se intenta realizar una lectura RD = 0 No se intenta realizar una lectura

WR : Write: WR = 1 Se intenta realizar una escritura WR = 0 No se intenta realizar una escritura IO/M: Define si el acceso (lectura o escritura) es sobre el espacio de entrada salida (IO) o sobre memoria (M) IO/M = 1 Acceso a Puertos IO/M = 0 Acceso a Memoria En funcin de estas lneas podemos crear la siguiente tabla de verdad: IO/M 0 0 0 0 1 1 1 1 RD 0 0 1 1 0 0 1 1 WR 0 1 0 1 0 1 0 1 Caso No hay lectura ni escritura en Memoria Escritura en Memoria Lectura de Memoria Imposible (No se puede leer y simultneamente) No hay lectura ni escritura en Puertos Escritura en Puertos Lectura de Puertos Imposible (No se puede leer y simultneamente)

escribir

escribir

Estas lneas (salidas de la C.P.U.) son tomadas como entradas por los sistemas de memoria y entrada/salida, cada uno de los cuales contiene internamente la lgica necesaria para actuar acorde a esta tabla. Las lneas del bus de direcciones son tomadas como entradas de un decodificador interno a cada sistema que selecciona una celda o puerto y lo conecta adecuadamente al bus de datos segn sea el estado del bus de control. Como hay 2 casos imposibles y 2 casos iguales, podemos reordenar la tabla de la siguiente manera: RD 0 0 1 1 WR 0 1 0 1 IO/M Caso X 0 1 0 1 X Inactivo Escritura en Memoria Escritura en Puertos Lectura de Memoria Lectura de Puertos Imposible Accin Ni lee ni escribe dBus Memoria[aBus] dBus Puertos[aBus] dbus Memoria[aBus] dBus Puertos[aBus] No se puede leer y simultneamente

escribir

Para completar el panorama, hemos incluido la columna Accin, en la cual utilizando cierta notacin se ha tomado en cuenta al bus de datos (dBus) y al bus de direcciones (aBus). La expresin: dBus Memoria[aBus] se lee: el contenido del bus de datos, se transfiere a la celda de memoria indicada por el bus de direcciones. Esta notacin es similar a la usada para hacer referencia a los elementos particulares de un Vector o Array en los programas de alto nivel, y usa una flecha en lugar del signo clsico de asignacin (=). La flecha indica en que sentido se realiza la transferencia.

Diagrama interno simplificado de la memoria 8 bits Selector/decodificador De direcciones n (mxima) n-1 n-2 n-3

aBus

303 302 301 300

cBus IO/M WR RD

MEMRD

3 2 1 0

(Mnima)

Datos ledos o escritos dBus MEMWR

Las seales MEMRD y MEMWR (lectura de memoria y escritura de memoria) se derivan fcilmente de las lneas del bus de control usando un poco de lgica: MEMRD = RD and not(IO/M) MEMRD = WR and not(IO/M) 1.4 - Unidad Central de Proceso La CPU (Unidad Central de Proceso): Tiene como cometido realizar en forma repetida desde que se enciende hasta que se apague las siguientes tareas: Buscar, Decodificar y Ejecutar instrucciones. Estas tareas se realizan cclicamente una tras otra constituyendo las fases elementales de lo que se conoce como ciclo de instruccin. Ciclo de Instruccin

Reset

Bsqueda

Decodificacin Ejecucin

Dependiendo de la instruccin particular a ejecutar, seguramente la C.P.U. deba obtener los operandos requeridos por la instruccin y una vez realizada la operacin indicada en la instruccin el resultado de la misma deba ser almacenado, muchos autores dividen el ciclo de instruccin en solamente 2 fases: Bsqueda y Ejecucin, asumindose que para poder ejecutar, hay que decodificar, y para poder realizar la operacin hay que obtener los operandos y escribir los resultados. Otros autores, dividen al ciclo de instruccin incluyendo estas otras tareas explcitamente dentro del mismo y en algunos casos los diagramas expresados son bastante complejos y normalmente dependen del procesador particular que se est usando como modelo. a) b) c) d) e) Bsqueda Decodificacin Lectura de los operandos Operacin Escritura del resultado

Ms adelante veremos que en general, todas las instrucciones necesitan operandos, el tema es la manera en que los obtienen, incluir estas variantes en el ciclo de instruccin, no solo lo complica, sino que al entrar en estos niveles de detalle, debemos definir un procesador en particular. As que he optado por representar el ciclo de instruccin como formado por 3 fases, al menos inicialmente. 1.4.1 - Reset Como toda tarea a llevar a cabo, debe necesariamente comenzar por algn punto, el comienzo se da desde la fase nombrada Reset. Al encenderse el equipo, se entra en la fase de Reset, y luego se pasa a la primer bsqueda. Casi todos los equipos que incluyen un procesador, tienen un botn pulsador nombrado Reset, el cual fuerza al procesador a este estado o fase inicial. Reset bsicamente deja al procesador en un estado inicial conocido y siempre igual (Mas sobre reset luego). El diagrama en bloques mostrado al inicio muestra a la CPU constituda por 3 componentes: Registros, Unidad Aritmtico Lgica (ALU) y Unidad de Control (CU). 1.4.2 - Registros Un registro es una celda de almacenamiento interna a la C.P.U. Los mismos pueden catalogarse en dos grandes grupos, los de propsito general y los dedicados. Los de propsito general, son aquellos utilizados como operandos en las instrucciones, o como almacenamiento temporal. Los registros dedicados tienen especial importancia en el funcionamiento del procesador y sern introducidos a medida que transcurra este texto. Un puerto o una celda de memoria tambin suelen ser operandos en las instrucciones. Normalmente las instrucciones que operan sobre registros se ejecutan ms rpidamente que aquellas que tengan operandos en memoria o puertos, ya que al ser internos, la C.P.U. accede a los mismos ms velozmente y como los registros suelen ser pocos, los

campos numricos utilizados en la codificacin de las instrucciones constan de pocos bits, dando como resultados instrucciones mas compactas, las cuales se leen ms velozmente desde la memoria. Cuando la CPU lee memoria o puertos, el dato ledo, que viaja por el bus de datos, al ingresar a la CPU, es escrito en un registro. Del mismo modo cuando la CPU escribe memoria o puertos, el dato escrito, que viaja por el bus de datos, es aportado por un registro.

1.4.3 - Unidad de Control (CU) El ciclo de instruccin es llevado a cabo por la Unidad de Control. La cul posee toda la electrnica necesaria para controlar a las restantes partes del sistema. A travs de la bsqueda (OPCODE FETCH), la CPU obtiene una instruccin desde la memoria, la cual una vez decodificada le indicar que es lo que debe hacer. La CPU busca y ejecuta instrucciones desde memoria en forma secuencial, de modo que en la ubicacin de memoria siguiente a donde termina la instruccin actual, se encuentra la instruccin siguiente. Para que el procesador sepa en que celda de memoria se encuentra la siguiente instruccin del programa, cuenta con un registro dedicado llamado CONTADOR de PROGRAMA (PC) Una secuencia de instrucciones lgicamente concatenadas que tengan como cometido el cumplimiento de una tarea determinada, es lo que se conoce como PROGRAMA. De modo que la CPU gua sus acciones de acuerdo a lo que dicte el programa almacenado en memoria, cuya siguiente instruccin es apuntada por el CONTADOR de PROGRAMA. 1.4.3.1 - La secuencialidad Como la siguiente instruccin del programa se encuentra en la siguiente celda de memoria, al PC se le suma uno en la fase de bsqueda de modo que quede apuntando a la celda donde en memoria debe estar la siguiente instruccin. Si la ejecucin de la instruccin actual no altera al PC, se sigue ejecutando en secuencia. La posibilidad de alterar al PC por medio de instrucciones especficas, dota al programador de la capacidad de controlar el curso del programa, pudiendo indicar cul debe ser la instruccin siguiente, aunque no sea la siguiente en secuencia y, por tanto, se encuentre ms adelante o atrs en memoria. Esto permite que secuencias de instrucciones puedan ser repetidas, o salteadas acorde con las necesidades del momento. La modificacin puede ser condicional: alterar al PC si se satisface cierta condicin y si no se satisface, no alterarlo y continuar con la secuencia. Ver ms adelante: Instrucciones de control de programa.

1.4.3.2 - Las instrucciones Hasta ahora, he considerado que una instruccin ocupa una celda de memoria, esto es cierto en muchos procesadores, ya que una celda de memoria, no necesariamente

almacena un solo byte. De acuerdo al procesador se construye la memoria, la cual puede estar organizada en palabras de 32 bits por ej. Este tamao de celda suele ser suficiente para acomodar todas las cosas necesarias para especificar completamente una instruccin. La expresin todas las cosas es poco acadmica y muy vaga, debera leerse: todos los campos que constituyen una instruccin. Bsicamente podemos decir que, un procesador o tiene instrucciones de largo fijo, o tiene instrucciones de largo variable. De acuerdo con este criterio de diseo, se condiciona la flexibilidad del repertorio de instrucciones y la manera de especificar los operandos a codificar etc. Una instruccin debe indicar: a) la operacin a llevar a cabo: sumar, copiar, restar, operar lgicamente, leer/escribir memoria/puertos, etc. b) los operandos: quienes sumar, quienes copiar, quienes restar, con quienes operar logicamente, quien leer/escribir con el dato que viene/va de memoria o puertos. Los operandos suelen indicarse por medio de su direccin (direccin de memoria, direccin de puerto, nmero de registro). Al momento de codificar las instrucciones y para indicar la operacin a realizar, se utiliza un cdigo llamado cdigo de operacin (operative code = opcode). De modo general, una instruccin se compone de por lo menos 2 campos, pudiendo ser necesario indicar ms de un operando indicado por medio de su direccin, dependiendo de la instruccin, o del procesador.

OPCODE

Direccin/Direcciones

Como la cantidad de operaciones diferentes de un procesador no suele ser muy grande, un byte suele ser suficiente (y sobrar) para especificar el OPCODE. En algunos casos, los bits no usados para el opcode, suelen usarse para indicar operandos, cuando estos son registros, de modo que en el primer byte de la instruccin, aveces entra toda la instruccin, en otros casos, es necesario adicionar 1, 2 o ms bytes para poder especificar los operandos. Por lo tanto al entrar en la fase de bsqueda el PC apunta al primer byte de la siguiente instruccin, el cul contiene al cdigo de operacin de la misma. El cdigo de operacin ledo en la fase de bsqueda es almacenado internamente en un registro especial de la C.P.U. llamado registro de instruccin: IR (instruction register). La decodificacin, en funcin del cdigo de operacin se encarga de determinar: a) la operacin a realizar con los operandos y como vienen codificados. b) si hay ms bytes que leer desde memoria (apuntados por PC) para obtener operandos adicionales. Una de las tareas de la fase de Reset, es inicializar al PC de modo que el procesador siempre valla a la misma celda de memoria a buscar la primer

instruccin del programa, de aqu en ms, todo lo que la C.P.U. realiza depende de lo que el programa dicte. Ciclo de Instruccin IR = Memoria(PC) = OPCODE PC = PC + 1 Bsqueda

Reset

PC = Valor Inicial Ejecucin

Decodificacin

He incluido en este esquema, algunos conceptos manejados anteriormente, agregando el hecho de que el Reset inicializa al PC, y que la bsqueda simplemente es una lectura de memoria, en la que, la celda leda es aquella indicada por PC, cuyo contenido se almacena en el registro IR y que luego se incrementa el PC para que apunte a la siguiente celda de memoria. Si la ejecucin no modific al PC, la siguiente instruccin se extrae desde la siguiente celda de memoria en forma secuencial, si la instruccin modific al PC, la siguiente instruccin estar en la celda de memoria indicada por la instruccin que lo modific. Como vimos, hay bsicamente 2 tipos de memoria, una voltil y otra no. Al encender el equipo, la nica informacin fiable del sistema, es aquella almacenada en forma permanente en la memoria ROM. El diseador del sistema debe almacenar en esta memoria, el programa que ejecutar el procesador al encendido o luego del Reset. Asegurndose que la direccin inicial del programa coincida con el valor asignado por Reset al PC. Para el caso de las computadoras personales, el procesador luego del Reset, ubica el contador de programa en el valor 0xFFFF0 All se encuentra el inicio del programa de chequeo del equipo conocido como POST (Power on Self Test) luego del cual se contina con el cargador. Este es responsable de intercambiar informacin con los perifricos de almacenamiento masivo (disquetes/discos) en busca de cierto cdigo almacenado siempre en el mismo lugar: primer sector fsico del disco o disquete. El contenido del mismo es un pequeo programa, el cul se encargar de ubicar y cargar en memoria el resto de los programas y datos que una vez en memoria tomarn el control del sistema y lo dejarn operativo. 1.5 - Unidad Aritmtico Lgica (ALU) La CPU dispone adems de una ALU (Unidad Aritmtica y Lgica) a travs de la cual se realizan los clculos indicados en las instrucciones del programa. La simple tarea de sumar uno a un dato significa obtener un dato nuevo. Sin la ALU, las capacidades de una CPU se limitaran a simplemente transportar datos de un lado al otro.

Registro de Instruccin IR WrOp1

WrOp2 Operando1 Operando2

Unidad De Control

Banderas Operacin ALU

WrResultado

Resultado

Diagrama simplificado de una A.L.U y registros asociados El transporte, aunque necesario, simplemente encarece el precio de los productos que llegan a nuestra mesa, no les aporta absolutamente nada. Del mismo modo, el transporte de los datos de un lado a otro dentro del sistema, simplemente enlentece las acciones, pues el objetivo de cualquier programa es procesar la informacin, y esto, normalmente y casi obligadamente, requiere operar con los datos para obtener datos nuevos. La nica posibilidad de que esto ocurra, es dentro de la CPU, ya que es en el nico lugar del sistema en donde existe la nica unidad capacitada para alterar, mediante operaciones, los datos de entrada del programa y as generar los datos de salida del mismo. As que el transporte es necesario, para poder alimentar a la ALU con los operandos sobre los que trabajar y luego para poder almacenar los resultados intermedios o finales. El transporte, tambin es necesario para poder obtener desde memoria las instrucciones. El transporte es necesario, pero desde todo punto de vista, es un sobrepeso que tiene un impacto muy grande en la velocidad de proceso. La Unidad Aritmtico Lgica es un circuito electrnico digital, el cual tiene, 3 entradas y 2 salidas. Dos de estas entradas son entradas de datos, por las cuales ingresan los operandos, sobre los cuales se debe operar, dependiendo del diseo, estas pueden ser cantidades de 8, 16, 32 o ms bits. La tercer entrada, es de control, la cul indica la operacin a realizar. Las dos salidas son el Resultado obtenido luego de la operacin y un registro adicional llamado registro de Banderas en el que se almacenan ciertas caractersticas resaltables del resultado. Cada bit de este registro denota cierta particularidad, y se actualiza cada vez que la ALU opera. Los operandos, marcados como rectngulos, pueden ser registros adicionales a la periferia de la ALU, para almacenar los datos sobre los que operar, para que dichos datos se mantengan estables, durante el tiempo que dura la operacin. El resultado, puede almacenarse en otro registro, tambin satlite de la ALU, para que el resultado

pueda ser ledo con posterioridad, aunque la ALU ya se encuentre operando sobre otros datos. Los operandos, sobre los que trabajar, pueden provenir de alguno de los registros internos de la CPU, o del contenido de alguna celda de memoria, la UC transporta el dato hasta los mismos y ordena su almacenamiento mediante las lneas marcadas como WrOp1 y WrOp2. El resultado, es almacenado en el registro Resultado, mediante la orden WrResultado, luego, es transferido a un registro interno de la CPU, o a memoria. Supongamos que la ALU opera con cantidades de 4 bits, para simplificar los ejemplos. Con 4 bits, los nmeros naturales representables son 16, del 0 al 15 (0000 .. 1111 en binario). Al sumar 10+9 (1010 + 1001) el resultado debera ser 19, pero 19 no puede representarse con 4 bits, por tanto, los 4 bits del resultado, no representan un resultado correcto. Al realizar la suma, vemos que se escapa un bit (un acarreo, o me llevo 1) hacia fuera. Este acarreo indica que el resultado no es correcto, pues el verdadero resultado necesitara 1 bit adicional (en este caso se precisan 5 bits, para representar el 19 en binario: 10011). El hecho de que se genere o no dicho acarreo, es una caracterstica resaltable del resultado, ya que indica que el resultado est fuera de rango (no es representable) y que los bits que quedaron en el resultado, no pueden tomarse como un resultado vlido. Uno de los bits del registro de banderas, almacenar el valor del acarreo luego de una suma (bandera de acarreo: CF = Carry Flag), de modo que luego de una suma, si este bit es 0, el resultado es correcto, y si este bit es 1, el resultado es incorrecto. Normalmente, en este registro, aparece una bandera, llamada Bandera de Cero (ZF = Zero Flag), la cual indica si el resultado es cero: si todos los bits que quedan en el registro del resultado son 0. Supongamos que esta ALU puede realizar 4 operaciones: a) b) c) d) La suma del Operando1 y el Operando2 La negacin del Operando1 (Not lgico) La funcin lgica And del Operando1 y el Operando2 Transferir el Operando1 al Resultado sin cambiarlo

2 bits son suficientes para indicar la operacin a realizar, el estado de estos bits, controlan el funcionamiento de la ALU, por ej. podra haber sido diseada para operar de acuerdo a esta tabla: Operacin Suma Negacin Y lgico Transferir Codificacin Resultado 00 01 10 11 Opeando1 + Operando2 Not(Operando1) Operando1 And Operando2 Operando1

Todas las operaciones realizadas por la ALU, incluso la ltima que no es una operacin, ajustan las banderas al valor correcto, acorde al resultado. Por ejemplo, al transferir el Operando1 al resultado sin modificarlo, la bandera de cero ZF estara indicando si dicho operando es 0 o no.

La Unidad de Control, es la que, en funcin de la instruccin a ejecutar: a) Carga los valores adecuados en los registros Operando1 y Operando2 con los datos provenientes de los operandos indicados en la instruccin. b) Indica que operacin debe realizarse. c) Toma el valor del resultado y lo transfiere al destinatario, tambin indicado en la instruccin. El registro de banderas, a su vez, enva su contenido a la Unidad de Control, la cul utiliza esta informacin para condicionar la ejecucin del programa mediante instrucciones especficas (ver saltos condicionales ms adelante). 1.6 - Diagrama interno simplificado de una CPU Bus de datos interno MBR

WrOp2 IR WrOp1 Operando1 Operando2 B C

dBus A

Unidad De Control

Banderas Operacin ALU +1 0

SP WrResultado Resultado PC

Seleccin de registro aBus Lneas de Lectura y Escritura del registro seleccionado MAR RD WR IO/M Reset Este es un ejemplo, simplemente. Una de muchas maneras de interconectar los distintos componentes dentro de una CPU. Aparecen varios bloques nuevos, a parte de los ya descriptos en el esquema brindado al comentar el funcionamiento de la ALU

Bus de datos interno (iBus): Es el encargado de comunicar un dato entre los distintos registros del procesador MBR (Memory Buffer Register): es un registro que permite la conexin del iBus con el bus de datos (dBus) que comunica a la CPU con el resto del sistema (memoria y puertos). Bsicamente es una puerta que se abre y permite que un dato presente en el iBus perteneciente a algn registro interno, salga de la CPU hacia memoria o puertos. Ademas permite que un dato proveniente desde la memoria o desde los puertos ingrese al iBus y desde este hacia algn registro interno. MAR (Memory Address Register): es un registro cuyo contenido indica la direccin de memoria que transporta el aBus. Puede ser cargado con el contenido de alguno de los registros internos, entre ellos el PC. En la bsqueda del cdigo de operacin, el contenido del PC, se carga en este registro y se da la orden de lectura de memoria. Por lo tanto, la celda de memoria que contiene el OpCode de la siguiente instruccin es leda, el MBR se abre, para poder conectar el OpCode al iBus y desde este ltimo el OpCode es cargado en el IR. El valor presente en el IR, es utilizado por la UC, para decodificar la instruccin que debe ejecutarse. Banco de registros internos: Recuadrado en verde, contiene los registros internos de la CPU, algunos dedicados como el PC y el SP (ms adelante explicado), y los registros de propsito general A, B, C, etc. Internamente, cada registro se reconoce por el nmero que ocupa dentro de este banco. La UC, direcciona a cada uno de ellos mediante lneas de seleccin internas (marcadas en verde) y, adems, el registro seleccionado puede ser ledo y su contenido enviado al MAR o al iBus, o escrito con el contenido del iBus.

Como el cableado sera excesivo si se desearan conectar cada componente a todos los dems, generalmente se utiliza un bus (o varios) interno, de modo de que slo un componente se conecta al bus, aportando su contenido, y otro lee el contenido del bus y lo almacena. Por ejemplo, una transferencia interna tpica, sera: Operando1 A

En la cual, se indica que el contenido del registro A, sea transferido al registro Operando1. Esta transferencia, se realiza, mediante la siguiente secuencia de rdenes desde la UC: Se selecciona el registro A, por medio de su nmero (lineas de control de color verde) dentro del banco de registros (marcado por el recuadro verde) b) Se indica la lectura del registro A y su conexin al bus de datos interno (ya que puede conectarse al registro MAR adems de al iBus) c) Se enva la orden WrOp1, para que el dato presente en el bus interno sea cargado en el registro Operando1, que alimenta a la ALU
a)

Una operacin relativamente sencilla de suma, por ejemplo: A = A + B, desencadena una serie de transferencias internas (llamadas micro operaciones), para este caso: Operando1 A

Operando2 B Operacin = Suma (00 segn la tabla indicada al describir la ALU) A Resultado Recordemos que la transferencia de un registro a otro, se realiza mediante la lectura del registro fuente, cuyo contenido se transfiere al iBus, y la escritura del registro destino con el dato presente en el iBus.La tercer lnea especifica que la ALU debe realizar una suma. Desde el punto de vista de la CU, todos los registros son direccionables, leibles y escribibles. Operando1, Operando2, Resultado, IR, MAR, MBR adems de los presentes en el banco de registros interno. Dentro de la CPU, suelen implementarse una serie de registros adicionales, no mostrados aqu para almacenar datos intermedios en clculos, o necesarios para leer completamente una instruccin. El ciclo de instruccin lo realiza la CU, la cual genera en tiempo y forma la secuencia de rdenes de lectura y escritura de los registros adecuados para: a) b) c) d) Realizar la bsqueda del cdigo de operacin. Incrementar en una unidad al contador de programa. Decodificar el contenido de IR. Ejecutar la tarea indicada por la instruccin decodificada.

Para realizar la bsqueda del cdigo de operacin, se debe realizar una lectura en memoria, la lectura de la celda que el PC indique, y su contenido, debe ser almacenado en el registro IR, esto es resumido con la siguiente sentencia de asignacin: IR = Memoria(PC). La secuencia de transferencias internas o micro operaciones sera la siguiente, segn el procesador del ejemplo: MAR = PC RD = 1, WR = 0, IO/M = 0 IR = MBR PC = PC + 1 ;transferir el contenido del PC al registro MAR ;indicar una lectura de memoria ;transferir el dato que proviene de la memoria al IR ;sumar 1 al PC

Recuerde que hay un registro sin nombre en el banco de registros, cuyo contenido est marcado con un +1, el valor de este registro siempre es 1 y su utilidad queda clara en este ejemplo. Ya que la ALU puede sumar dos registros, sumar 1 al PC lo puede realizar la ALU (ya que la tenemos) si en el banco de registros hay un registro cuyo contenido es constante.

También podría gustarte