Arquitectura de Una Computadora

ARQUITECTURA DE UNA COMPUTADORA EL MICROPROCESADOR El microprocesador (M/P) es el alma del ordenador. Se compone en la m

Views 148 Downloads 0 File size 337KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

ARQUITECTURA DE UNA COMPUTADORA EL MICROPROCESADOR El microprocesador (M/P) es el alma del ordenador. Se compone en la mayoría de los casos por un único circuito integrado, denominado vulgarmente "chip", en cuyo interior se encuentra la Unidad Central de Proceso o CPU (del inglés Central Processing Unit). La CPU, operando siempre bajo el control de un programa, es capaz de realizar diferentes tipos de operaciones sobre los datos de entrada, es decir aquellos que entran en ella, produciendo unos resultados o datos de salida. Las operaciones que realiza pueden clasificarse en los siguientes grupos:   

Operaciones de tipo aritmético. Operaciones de tipo lógico. Operaciones de control de los dispositivos de entrada y salida.



Operaciones de control de las funciones internas del M/P.

Las operaciones aritméticas se basan en la operación suma, facilitando el conjunto de operaciones aritméticas conocidas (suma, resta, multiplicación,...) mediante la combinación de sumas normales y sumas en complemento a dos. Las operaciones lógicas proveen la facultad de trabajar en el álgebra booleana. Para ello suministran los operadores lógicos clásicos: AND, OR, NOT OR-exclusivo, etc. La operación AND (&) es equivalente al "Y" lógico, el OR (v) es equivalente al "O" lógico y la operación NOT se representa por () y equivale a la negación.

Los dos conjuntos de operaciones anteriormente mencionadas son realizados por la unidad aritmético-lógica (que como se verá más adelante es uno de los elementos integrantes de la CPU). Las operaciones de control de los dispositivos de entrada y salida posibilitan la lectura y escritura de información en la memoria, utilizando ésta como un mecanismo de comunicación con los dispositivos externos o bien accediendo directamente hacia ellos. Las operaciones de control de las funciones internas se encargan de gestionar el procesamiento de la información, tanto a nivel interno como externo. Para ello utiliza los registros que indican el estado de funcionamiento de cada una de las operaciones elementales. Un ejemplo es la validación de los datos de entrada a través del bit indicador de paridad; cuando la paridad es par (la cantidad de unos del dato de entrada es par) este registro se pone a 1 indicando que el valor es correcto, siendo admitido por la CPU. Estos dos últimos conjuntos de operaciones son provistos por otra parte fundamental del microprocesador, la unidad de control.

MICROPROCESADORES (ESPECIFICA)

DEDICADOS

A

TAREA

En este apartado se hará una breve mención a un tipo de procesadores específicos, sin pretender analizarlo en profundidad. Nos referimos a los procesadores de señal. Una de las aplicaciones principales de los microprocesadores de propósito específico es la de controlar el funcionamiento de las centrales telefónicas digitales

Los procesadores de señal han surgido debido al cada vez mayor empuje de las técnicas digitales frente a las técnicas analógicas. Estos procesadores presentan como principal ventaja la sencillez de su implementación, ya que se reducen

notablemente los cálculos a la hora de diseñar filtros que son implementados con ellos. Mediante el uso de esas técnicas pueden desarrollarse fácilmente filtros FIR (Finite Impulse Response) y filtros IIR (Infinite Impulse Response). Mediante estos filtros pueden desarrollarse de una forma rápida y sencilla las comunicaciones telefónicas digitales. La principal característica de estos microprocesadores es su capacidad de procesar una misma instrucción un número elevado de veces, todas ellas al mismo tiempo con diferentes datos de entrada, o también la de procesar una misma entrada de datos de un conjunto elevado de diferentes procesos al mismo tiempo. Los microprocesadores dedicados a tarea específica en suma, han hecho posible e auge de la técnica de conmutación digital frente a la analógica. Hoy día, las centrales de este tipo se van imponiendo frente a las anteriores. No va a comentarse nada más sobre estos microprocesadores, salvo mencionar que este tipo de dispositivos son la base fundamental de los microprocesadores de propósito específico.

ESTRUCTURA INTERNA DE UN MICROPROCESADOR Los elementos que componen un microprocesador son: Detalle de un microprocesador     

Unidad Aritmético-Lógica (UAL). Unidad de Control (UC). Decodificador de instrucción (ID). Contador de Programa (PC). Registros:  Registro Acumulador (A).  Registro de Instrucción (IR).  Registros internos de trabajo (AR1, AR2....).  Registros de Stack o Pila.  Registros Indicadores (F).

Todos estos elementos están interconectados dentro del microprocesador por medio de varios buses de datos internos.

EL CEREBRO DE LA MAQUINA Si se compara un ordenador con el ser humano, sólo a nivel de elementos, se llega fácilmente a la conclusión de que lo que para el ser humano es el cerebro, para el ordenador lo es el microprocesador. Se trata de una comparación a título ilustrativo, pues ningún microprocesador tiene las capacidades del cerebro humano, pero la función es la misma. Este minúsculo elemento es el que procesa toda la información y reparte el trabajo entre los demás elementos que componen el ordenador. Es, por tanto, el gestor y planificador de todas las operaciones que vayan a realizarse. Vamos a ilustrar con un ejemplo el funcionamiento de la unidad aritmético-lógica.

La UAL (Unidad Aritmético-Lógica) y la UC (Unidad de Control) trabajan a la par. Cuando el usuario ingresa un dato, a la UAL le llega, procedente de la UC, la orden de sumar dos números procedentes de memoria, uno proveniente del registro acumulador y otro del registro de datos. El valor almacenado en el registro de datos es el dato ingresado y el valor almacenado en el registro acumulador es el resultado de alguna operación previa. La operación que debe realizar la UAL es sumar el dato ingresado con el resultado de la operación previa. Esta suma la pondrá la UAL en el registro acumulador e indicará a la UC que está listo para realizar otra operación. Si es la última operación que debe realizar, devolverá el valor depositado en el acumulador para que sea guardado en memoria. Aunque los resultados que se ven son más complejos, el pequeño cerebro electrónico solamente realiza cuatro tipos de operaciones: operaciones aritméticas, operaciones lógicas, operaciones de control de los demás elementos integrantes y operaciones de control de funciones internas. Estas operaciones de control las realiza la unidad de control. Al ingresarse un dato, este es guardado en memoria. Los bloques de la memoria se identifican por un número referente a su posición. Supóngase que la posición de memoria donde se almacena el dato es, por ejemplo, la "C3". En otra posición, por ejemplo, la "B8", se guarda la operación que hay que realizar: "ADD C3, A5". Por último, se deposita el número de la posición de memoria en que se almacena la operación a realizar en el registro de instrucciones de la UC. La UC recibe el dato almacenado en el registro de instrucciones que contiene la posición de memoria donde se encuentra la operación a realizar ("B8") se dirige a esa posición y recoge las instrucciones que debe ejecutar. La UC decodifica del dato de la posición “B8” para determinar la instrucción. Después de determinar dicha instrucción, llega a la conclusión de que lo que tiene que hacer es sumar el número que está en la posición "C3" al resultado de la operación previa que está en la posición "A5" y que el resultado debe guardarlo

de nuevo en la posición "A5". Una vez determinada la instrucción, da las órdenes necesarias para que el número de la posición "C3" sea trasladado al registro acumulador de la UAL y el número de la posición "A5" sea trasladado al registro de datos. Una vez que la UAL ha realizado sus operaciones, el resultado final lo deposita en el acumulador y avisa a la UC de que la operación ya ha sido realizada. Entonces la UC ordena que este resultado sea trasladado nuevamente del registro acumulador a la posición de memoria A5.

MICROPROCESADORES DE PROPOSITO GENERAL A la hora de tratar este tema, se seguirá un enfoque histórico. Como puede suponer, los modelos estándares se realizan después del desarrollo, y en el caso de la informática no cabía la posibilidad de esperar lo contrario. A lo largo de la breve historia de la informática, un grupo numeroso de compañías lanzó al mercado un conjunto considerable de microprocesadores, desde aquellos que funcionaban con 4 bits de palabra hasta los más modernos que aspiran a funcionar con palabras de 256 bits. Sin embargo, hoy día existen dos metodologías perfectamente contrastadas y con filosofías muy diferentes, presentes en la compañía Motorola y en la compañía Intel respectivamente. Si bien es cierto que ambas compañías producen microprocesadores de propósito específico, sus productos más comercializados son de propósito general. La compañía Intel presenta al mercado un abanico de posibilidades desde el 8086 hasta el Pentium en sus últimas versiones. Los ordenadores Macintosh utilizaban la familia de microprocesadores creada por la empresa Motorota

La principal característica de estos microprocesadores es la estructuración determinística, impuesta por la casa fabricante, de las posiciones de memoria RAM que utiliza cada dispositivo y bloque funcional del sistema computador completo. Esto supone como contrapartida la posibilidad de unos mayores modos de direccionamiento y la seguridad al ingeniero de sistemas de que cada cosa está en una posición determinada de memoria. Sin embargo, a su vez, esta característica limita mucho la libre decisión del ingeniero software a la hora de programar una aplicación. Es importante mencionar también que el desarrollo del sistema operativo DOS al igual que el desarrollo y evolución de los ordenadores personales se debe, en gran medida, a la arquitectura estática y perfectamente definida de Intel. Con respecto a la compañía Motorola, hay que remontarse al microprocesador 6502 hasta llegar al 68030. Estos microprocesadores presentan una estructura completamente opuesta a los fabricados por Intel. En todo momento permiten al usuario hacer lo que quiera con la memoria RAM de su ordenador, situando la RAM de vídeo en cualquier parte de la memoria del ordenador. Además otra importante ventaja es que presentan una sencilla, pero a su vez completa, metodología de programación en lenguaje ensamblador, por esta razón la mayoría de los videojuegos (que están programados en código ensamblador) se ejecutan bajo microprocesadores Motorola. Como ejemplo de esto se puede citar el famoso ordenador AMIGA de la casa Commodore que utiliza un microprocesador 68000. Otro aspecto de interés es que la mayoría de los sistemas, (miniordenadores, "workstation" -estaciones de trabajo-, "mainframe" -ordenadores centrales-, "hosts" ordenadores conectados a redes de comunicación-) están implementados con microprocesadores 68000-68020; y es más, el desarrollo de sistemas operativos

como Unix System V, Unix 4.2Berkeley, sobre estos mismos microprocesadores.

VMS, etc,

funcionan

LA UNIDAD ARITMETICO-LOGICA (UAL) También denominada unidad de cálculo, es la encargada de efectuar el conjunto de operaciones aritméticas y operaciones lógicas con que está dotado el ordenador. El tipo de información que procesa esta unidad son datos tanto de entrada como de salida, siendo estos últimos resultados parciales o finales de una determinada operación. Estos datos proceden o se destinan a la memoria interna (RAM) del sistema. Un ordenador procesa los datos de forma automática para obtener así los resultados que se buscan. Se puede observar que un ordenador es la unión de tres elementos: Esquema operativo de una unidad central de proceso   

Dispositivos de entrada Unidad de proceso Dispositivos de salida

Se puede decir que la Unidad Central de Proceso dirige y supervisa el conjunto del ordenador, es decir, ejecuta operaciones aritméticas y lógicas con los datos. La Unidad de Proceso ha de tener dos características bien definidas: 1. Ha de ser capaz de reconocer y ejecutar una serie de instrucciones (programa) elementales en base a las cuales se puede realizar cualquier proceso de datos deseado, por complejo que sea éste.

2. Ha de tener separadas dos estados diferentes. En una primera fase ha de poder recibir y memorizar las instrucciones que configuran el proceso pedido (introducción del programa) y en segunda fase debe ejecutar en secuencia las instrucciones recibidas (ejecución del programa). Al realizar esta ejecución se leerán los datos que se necesiten a través de un dispositivo de entrada de datos en el momento en que sean requeridos, realizándose las operaciones que forman el proceso hasta la obtención de los resultados, los cuales serán enviados al usuario a través de un dispositivo de salida. A través de estas características, se puede observar que la Unidad Central de Proceso está compuesta por tres partes fundamentales:   

Unidad de Control Unidad Aritmético-Lógica Memoria Central

La unidad de proceso dirige y supervisa el conjunto del ordenador, es decir, ejecuta operaciones aritméticas y lógicas con los datos.

La unidad aritmético-lógica (UAL) se compone de los siguientes elementos: uno o varios registros acumuladores y un conjunto de circuitos lógicos u "operadores" encargados de realizar las operaciones lógicas y aritméticas En el caso que se utilice un microprocesador para una aplicación determinada. eldiseñador del sistema requerirá al fabricante un conjunto de operaciones de cálculo especiales que deberán ser suministradas junto con las de propósito general existentes en cualquier microprocesador. Esta unidad dispone, como mínimo, de dos entradas de datos (operandos) que provienen una del registro acumulador y

otra del registro de datos y una salida, que normalmente se envía al acumulador. La UAL recibe dos números de 8, 16 bits, etcétera, denominados operandos, uno que viene del registro acumulador y otro que viene del registro de datos. Estos dos operandos son sometidos la operación definida por las órdenes de control y el resultado se almacena de nuevo en el acumulador desapareciendo la información antigua. Si este resultado es final, se enviará a la memoria principal para ser almacenado, pero si el resultado parcial, será introducido de nuevo en la UAL como operando de una nueva operación aritmética o lógica. En ordenadores evolucionados, los registros existentes en la UAL son varios, incluso a veces es una pequeña memoria de lectura y escritura la que sustituye a este bloque de registros (memoria caché). Además de los operandos y los registros acumuladores y de datos, existen unos registros denominados indicadores o flags cuyo estado es detectado por la unidad de control para supervisará los resultados de ciertas operaciones, por ejemplo el registro de estado. Algunos de estos indicadores son: 

Indicador de desbordamiento ("overflow") que adopta el valor 1 cuando, al realizar una operación, el resultado no "cabe" en el acumulador.  Indicador de paridad que pasará a un estado (cero o uno) indicando si la condición preestablecida entre el número de ceros y unos es ó no satisfecha.  Indicador de cero, cuyo estado indica si el resultado de la última operación efectuada fue o no igual a cero.

LA UNIDAD DE CONTROL

Es el elemento que regula el flujo de información (instrucciones y datos) dentro del sistema, es decir, es la unidad encargada de gobernar el funcionamiento del microprocesador. Básicamente, las funciones de una unidad de control son:  

Búsqueda de instrucciones en la memoria. Decodificación, interpretación y ejecución de las instrucciones.  Control de la secuencia de ejecución (determinación de la siguiente instrucción a ejecutar).  Reconocimiento de interrupciones, petición de acceso directo a memoria, órdenes de paro, espera, etc. Esta unidad recibe la información, la transforma, la interpreta y envía las órdenes precisas a los elementos que las requieren para la adecuada ejecución del proceso a realizar. Es la que dirige todas las actividades del ordenador, o sea, es responsable del correcto funcionamiento de los restantes componentes de la Unidad Central de Proceso. Su función es la de posibilitar la actuación coordinada de todos los elementos que, en cada momento, hayan de intervenir en un proceso concreto. Cabe decir, en este sentido, que la Unidad de Control debe gobernar el funcionamiento de los periféricos de entrada, salida y almacenamiento, al tiempo que las actuaciones de la Memoria Central y la Unidad Aritmético-Lógica. Por esta razón es la encargada de interpretar el programa del que recibe las instrucciones, codificadas convenientemente, así como de enviar las órdenes oportunas a las unidades periféricas implicadas. La Unidad de Control utiliza una señal generada por un reloj interno con objeto de sincronizar el funcionamiento operativo de cada elemento. Esta tarea es de carácter

fundamental, ya que, en caso contrario, no podría establecerse un ritmo de operación adecuado que controlara la velocidad de trabajo de cada componente en particular. Se comprende fácilmente que de la mayor o menor frecuencia del reloj interno, dependerá la capacidad de hacer un número mayor o menor de instrucciones por segundo. No todas las instrucciones que tenga que ejecutar la Unidad de Control consumen el mismo número de señales generadas por el reloj, sino que las instrucciones complejas necesitarán más ciclos que una instrucción simple. En cualquier caso, la Unidad de Control se encargará de las siguientes funciones: 

Fijar si el ordenador está en fase de introducción del programa o en fase de ejecución del mismo.  Decodificar la instrucción en curso y, según sea el código de operación de la misma, mandar señal para que actúe la Unidad Aritmético Lógica a una Unidad de Entrada o a una Unidad de Salida.  Verificar de que se efectúan los traspases de información entre los registros y la memoria principal y viceversa.  Llevar el control de cuál es la instrucción que en cada momento se está ejecutando y cuál es la instrucción que deberá de seguirle a continuación. En la etapa de introducción del programa, la Unidad de Control activa la unidad de entrada de datos y controla que las sucesivas instrucciones que componen el programa vayan siendo almacenadas en posiciones contiguas de memoria. En la fase de ejecución del programa, la Unidad de Control decodifica la primera instrucción del programa y según sea la naturaleza de dicha instrucción encarga su ejecución al dispositivo adecuado: las entradas y salidas a los periféricos o al

canal (gestiona la unidad de control de cada periférico) y las operaciones aritméticas y lógicas al procesador. Los elementos que componen la unidad de control son el registro de instrucción, decodificador de instrucción, el secuenciador y el registro contador de programa. El registro de instrucción es el receptor de la información dirigida a la unidad de control. Esta información es siempre una instrucción procedente de la memoria principal a través del bus de datos. Para que la instrucción pueda acceder al registro, primero debe activarse una señal de control que permita la transferencia en paralelo de los bits contenidos en los hilos del bus a las respectivas células del registro. La información contenida en el registro de instrucción es interpretada por la unidad de control mediante la división en tres campos independientes entre sí. Estos campos son genéricamente: 

Código de operación (CO): este campo siempre existe. El número de bits que lo componen deberá ser suficiente para que cada instrucción esté definida perfectamente y varía según el juego de instrucciones de cada tipo de microprocesador.  Campo(s) de direccionamiento(s) CD: también  existe siempre aunque a veces es ignorado por algunos códigos de operación. El contenido de este campo es la dirección de la posición de la memoria principal para acceder a un operando o para acceder a la siguiente instrucción a ejecutar.  Modo(s) de direccionamiento: generalmente existe pero puede no existir. Su contenido indica a la unidad de control el modo en que está direccionada la instrucción en la memoria.

El decodificador de instrucción es el elemento encargado de transformar el contenido del código de operación almacenado en el registro de instrucción en una información más amplia e inteligible por el secuenciador. El secuenciador es un autómata (máquina de Mealy o Moore) que, tras analizar e interpretar la información de entrada (salida del decodificador, registro de estado, reloj), envía un conjunto de señales a las unidades que las precisen para proceder a la ejecución de la instrucción y para llevar a cabo el inicio de la siguiente. Estas señales que envía el secuenciador se conocen con el nombre de "micro órdenes". El registro contador de programa es un indicador que apunta siempre a la próxima instrucción que se debe ejecutar, es decir. el registro contador contiene la información de la dirección de la memoria en la que se encuentra la siguiente instrucción a ejecutar. Cada vez que se ejecuta una instrucción. elcontador se incrementa dando la dirección de la próxima instrucción. Sin embargo, dentro de las instrucciones hay algunas que permiten modificar directamente el contenido del contador. Con ello se consigue romper la secuencia y alterar el orden de ejecución del programa (instrucciones de salto. tanto condicional como incondicional a una posición absoluta o relativa de la memoria). Aunque este tipo de instrucciones serán analizadas posteriormente, puede servir como ejemplo el efecto producido por la instrucción GOTO del lenguaje BASIC. Registro de pila o stack este registro contiene informaciones que posteriormente desean ser recuperadas. Cuando durante la ejecución de un programa se encuentra una llamada a una subrutina, es decir, se va a ejecutar un programa auxiliar dentro del programa principal para retornar luego a éste, antes del salto a la subrutina se almacena en la pila la dirección contenida en el contador de programa. Al terminar la ejecución de la subrutina esta dirección almacenada en la pila se

recupera y pasa al contador de programa, con lo que puede continuarse de nuevo la ejecución del programa principal. En este caso el stack se utiliza como una pila de direcciones donde la última dirección en entrar es la primera en salir. A este proceso se le conoce técnicamente como gestión LIFO (LastInput. First Output: última entrada, primera salida). Existen dos tipos de pilas dentro de los microprocesadores. En un primer tipo la pila está incluida dentro del propio microprocesador. Este dispone de unos registros internos destinados a funcionar como pila. Estos registros varían en número según la clase de microprocesador. Lógicamente. la capacidad de la pila depende de la cantidad de registros del propio microprocesador. Otro tipo de pila consiste en un solo registro en el interior del microprocesador. En este caso el registro de pila contiene la dirección inicial de una zona de la memoria principal encargada de realizar las funciones de pila. A este registro único utilizado como indicador de una dirección de memoria, se le conoce como "Stack Pointer" (puntero a la pila). Cuando se desea salvar un registro, se hace en la dirección de la memoria a la que señala el Stack Pointer. Posteriormente éste se incrementa para hacerlo apuntar a la siguiente dirección de memoria libre. De esta manera se tiene una pila limitada sólo por la capacidad de la memoria principal disponible. Además del sistema de gestión LIFO se pueden realizar otros sistemas de gestión tales como FIFO ( First InputFirst Output: primero en entrar primero en salir). Otra característica importante de la pila es que permite la anidación de llamadas a diferentes subrutinas, o, en el caso de existir recursividad, la llamada reiterada a si misma. Este sistema de gestión permite la realización de programas estructurados con

un bajo coste en código y con una no desdeñable disminución del rendimiento en la ejecución. Registros internos estos registros son internos al propio microprocesador y son utilizados por éste para almacenar datos o resultados intermedios de operaciones. La principal ventaja de estos registros es la velocidad con que es capaz de operar el microprocesador con ellos; de no existir estos, la CPU tendría que memorizar los datos intermedios en la memoria principal, con lo que se retrasaría de forma notable la ejecución de cada función, ya que las operaciones de lectura y escritura son más rápidas en un registro interno de la CPU que en la memoria principal. Esto es debido a que es necesario direccionar la posición a que se van a enviar los datos mediante el bus de direcciones y a continuación enviar los datos a través del bus de datos. El número de registros internos varía con el tipo de microprocesador. Así mismo, la capacidad de los registros viene dada por cada microprocesador. Además, la correcta utilización de los registros internos permite la concurrencia y, en consecuencia, la ejecución en paralelo, de varias instrucciones. Por ejemplo, si se tiene un registro interno que almacena la dirección de la siguiente instrucción, al mismo tiempo que el secuenciador da las órdenes para su ejecución, el multiplexador puede extraer de la memoria la instrucción siguiente, pasarla al decodificador e incluso interpretarla. De este modo se puede observar un aumento notable en la velocidad de ejecución. Esta es la metodología que emplean los microprocesadores denominados "bitslice", siendo el punto de referencia a la hora de alcanzar la ejecución paralela completa y, por tanto, la inteligencia artificial. Registros indicadores los registros indicadores están formados por un conjunto de bits que varían en cada operación realizada por el microprocesador atendiendo al resultado

obtenido en ella. También se almacena en estos registros el modo de trabajo del microprocesador o el estado del mismo. El número de indicadores varía según el modelo de microprocesador; no obstante hay indicadores fijos para cada modelo diferente, como el indicador de acarreo ("carry") o de desbordamiento ("overflow"). Este último indicador se activa cuando, al realizarse una operación aritmética, se sobrepasa la capacidad de almacenamiento del acumulador. El acumulador es un registro de 8, 16 o más bits. Como es sabido un bit sólo es capaz de mantener dos estados, denominados 0 y 1. Debido a la limitación en el número de bits, cuando el resultado de una operación da un número cuyo valor binario supera en cifras el número de bits del acumulador, el indicador de acarreo se pone a 1 y en el acumulador se almacena la diferencia entre el resultado de la operación y el número máximo capaz de almacenar el acumulador. Indicador de signo: después de una operación aritmética, cuando el resultado que se almacena en el acumulador es de signo negativo, este indicador se pone a 1, cuando el resultado es positivo el indicador de signo permanece a 0. Existen, por último, otros indicadores que varían en función de la arquitectura propia de cada microprocesador y son los encargados de la atención a interrupciones. Este mecanismo de atención a interrupciones puede realizarse de un modo directo o bien mediante el uso de una máscara la cual permite o inhibe la ejecución de la rutina de atención a la interrupción. La Unidad Aritmético-lógica es la encargada de descifrar las instrucciones que componen el programa almacenado en la Memoria y encargarse de su ejecución en la secuencia programada, es decir, tiene por misión la ejecución de las operaciones matemáticas básicas y lógicas. Las operaciones básicas son:

"+" Sumar "-" Restar "*" Multiplicar "/" Dividir Las operaciones lógicas son: "No" lógico "Y" lógico "O" lógico Sólo con estas operaciones básicas es procesada toda la información y se obtienen los resultados esperados. Es asombroso que, con sólo estas operaciones, se pueda construir todo un sistema de pensamiento válido para cubrir completamente cualquier tipo de necesidad informática. El conjunto formado por la Unidad de Control y la Unidad Aritmético-Lógica se denomina Procesador Central. Para entender mejor todo el proceso de trabajo de un ordenador, se realizará un símil didáctico con el que se tratará de emular el comportamiento de un ordenador mediante un empleado metódico. El ejemplo consta de los siguientes elementos:  

Un empleado llamado CONTROL. Una mesa de escritorio con el siguiente material: 1. una hoja de papel dividida en casillas numeradas, 2. un bloc para tomar notas, 3. una calculadora, 4. una bandeja para recibir hojas con información, 5. una bandeja para entregar hojas con los resultados, 6. un lápiz para escribir y una goma para borrar.

Para que CONTROL pueda trabajar, necesita que le pasen los datos necesarios en hojas de papel y depositar todo el conjunto de hojas en la bandeja de recepción de datos. CONTROL pasará las instrucciones recibidas a la hoja dividida en casillas sin indicar ningún comentario sobre la corrección de las mismas. Escritas todas las instrucciones recibidas, CONTROL pasará a su lectura y ejecución. Cogerá la primera casilla y copiará la instrucción depositada en ella en el bloc de registros para analizarla. Si entiende la instrucción realizará los cálculos necesarios, pero si no la entiende, quedará detenido hasta que se le ayude a entenderla. Las instrucciones que es capaz de realizar son las siguientes: 1. las cuatro operaciones aritméticas, 2. coger los datos de la bandeja de entrada y copiarlos en la hoja de casillas numeradas, 3. coger los datos de la hoja de memoria, hoja de casillas, y los copiará en una hoja para depositarla en la bandeja de salida, 4. comparar números y ver cuál es el mayor, 5. efectuar la instrucción siguiente, 6. detenerse. Después de cada instrucción, CONTROL leerá la próxima casilla de instrucción y la ejecutará, a medida que se apunta en el bloc de registros cual es la casilla que le toca la próxima vez.

SECUENCIADOR DE MICROPROGRAMA El secuenciador es el centro neurálgico de gestión, control y planificación del microprocesador, por tanto su función es fundamental para el desarrollo de cualquier instrucción software. A la hora de realizar un secuenciador pueden tenerse presente dos políticas de diseño: históricamente, la primera es la cableada. Esta metodología convierte el secuenciador de la máquina en un autómata finito determinista (máquina de Mealy o máquina de Moore). Los secuenciadores así diseñados tendrán siempre la misma funcionalidad, y sólo mediante una modificación hardware podrá ser cambiada; esto obliga a un costoso desarrollo hardware del equipo. almismo tiempo que dificulta notablemente la prueba y la fiabilidad del mismo. Por otra parte, el secuenciador puede diseñarse como si fuese un microprocesador del propio microprocesador. En este caso, las decisiones no están sujetas a un circuito combinacional lógico, sino al contenido de una memoria (memoria de microprograma el contenido de esta memoria es el encargado de establecer el circuito combinacional de estados lógicos para la realización de una determinada tarea, actuando de una forma muy sencilla. Un valor 1 lógico en una posición de memoria (recuérdese una célula CMOS cargada) sería equivalente a un circuito cerrado, mientras que un valor 0 lógico sería equivalente a un circuito abierto. Esta técnica de diseño permite. por tanto, variar fácilmente (bastaría cambiar el contenido de la memoria de microprograma) la actuación de un microprocesador ante los mismos eventos, es decir, permite pasar fácilmente un microprocesador de propósito general a uno de propósito específico.

En conclusión, se puede afirmar que si el microprocesador es el alma funcional de una computadora, el secuenciador lo es a su vez en la misma proporción del microprocesador. La microprogramación, por tanto, es una programación de muy bajo nivel (más bajo que el código ensamblador), a nivel de lenguaje máquina (ceros y unos). Por tanto su aplicación queda restringida a los centros de investigación y desarrollo hardware, ya que el fabricante realizará dicha aplicación tanto para un microprocesador de propósito general como para un microprocesador de propósito especifico, a petición del cliente. Debido a esto, un usuario normal no puede modificar ni la estructura ni el código de microprograma residente en su microprocesador.

MICROPROCESADOR Y MICROPROGRAMACION Hasta ahora se han visto los principios básicos de funcionamiento del microprocesador, pero no se ha hablado de su funcionamiento interno en profundidad. Tarjeta madre de una PC. De todos los componentes que aparecen, sin duda el microprocesador es el más importante. Para entrar en profundidad en el análisis de este tema se establecerá una analogía, consistente en pensar que el microprocesador es, en sí un microcomputador, es decir, se realizará una semejanza entre las partes de un microprocesador y las partes de un microcomputador. El microprocesador puede dividirse en dos bloques funcionales: la unidad aritmético-lógica y la unidad de control.

La unidad aritmético-lógica suministra un conjunto de facilidades que permiten la realización de cálculos aritméticos y lógicos. Su funcionamiento y su gestión viene determinado por la unidad de control en concreto por las órdenes dirigidas hacia ella por el secuenciador. Sin embargo, realmente la parte microprocesador es la unidad de control.

interesante

del

Esta a su vez presenta un conjunto independiente de bloques funcionales que determinan el funcionamiento global de éste. Estos bloques funcionales son un decodificador de microinstrucción, una memoria de microinstrucción ROM (en algunos casos una EPROM) y un secuenciador de microinstrucciones. El decodificador de miroinstrucciones se encargará de, una vez decodificada la instrucción, decodificará a su vez las microinstrucciones necesarias para que el secuenciador, haciéndo un uso secuencial de ellas, ejecute la tarea o tareas requeridas por la instrucción (microinstrucciones). La memoria de microinstrucción es, generalmente, una memoria secuencial que en los productos comerciales aparece de "solo lectura" mientras que en los productos de investigación es de "lectura y escritura". En esta memoria se guardan las codificaciones binarias elementales que permiten la realización de una instrucción de código. El hecho de que los códigos binarios que componen cada microinstrucción sean secuenciales, se debe a que no es necesaria a la introducción de ningún salto para la realización de una determinada tarea, ya que cada microinstrucción hace referencia, única y exclusivamente, a un

único punto de control hardware (un valor de una tensión) concreto de la estructura del microprocesador. La existencia de una memoria de microprograma se debe a la utilización de una metodología software en el desarrollo hardware de un equipo. Bien es cierto, como se verá más adelante, que un secuenciador puede estar, o cableado (autómata) o microprogramado, siendo en este último caso cuando esta justificado el uso de una memoria de programa. Su función básica es, por tanto, la de almacenar las microinstrucciones necesarias para la ejecución de cualquier tarea que sea solicitada por un proceso (programa) de usuario, incluidas las del propio sistema operativo.

COMO ACTUA EL MICROPROCESADOR La definición más precisa del microprocesador posiblemente sea la de "dispositivo electrónico de Lógica secuencial programable". Esta definición identifica los principales parámetros de funcionamiento de este elemento. En primer lugar es un elemento "electrónico", es decir que funciona con corriente eléctrica actuando sobre elementos semiconductores de silicio para controlar su empleo; en segundo lugar es "digital", lo que indica que trabaja con estados binarios de información: O y 1, (todo y nada o sí y no): en tercer lugar es "secuencial", que significa simplemente que ejecuta una instrucción tras otra, y que su estado actual depende, entre otros factores, del estado anterior que tuviera. Y por último es "programable" que es el único elemento de la definición que parece tener sentido. Realmente este es el punto más importante y notable del microprocesador. La tarea que ejecuta cambia según el programa que asignemos, e incluso más, en función de la "secuencia de programa" indicada.

El microprocesador necesita toda una serie de elementos adicionales para formar de manera efectiva un sistema inteligente Las ventajas que aporta un sistema basado en microprocesador se derivan de la capacidad para ejecutar una tarea repetitiva con gran velocidad, así como leer, elaborar y almacenar, en suma procesar, una gran cantidad de información digital. Los diferentes modelos de ordenadores IBM PC y compatibles están realizados en torno a los diversos microprocesadores de la familia Intel 80x86. Cada nuevo modelo más avanzado de microprocesador ha permitido crear un ordenador más potente y rápido. Como ya sabemos, el núcleo del sistema es el microprocesador, pero éste necesita una gran cantidad de dispositivos adicionales para lograr su adecuada potencia de trabajo. De igual forma que el cuerpo humano no es sólo el cerebro, aunque éste sea la parte más notable del mismo, el ordenador no está formado únicamente por su microprocesador. Para realizar el diseño de un potente y completo sistema, se necesita rodear al micro de memoria, controladores, y periféricos. Sin la ayuda de estos dispositivos, el microprocesador pierde gran parte de su potencial. La memoria permite almacenar gran cantidad de datos que el procesador lee o escribe, incluyendo el programa que determina su funcionamiento. El procesador se encarga de recibir los valores, y determinar qué parte corresponde a programa, qué instrucciones debe ejecutar, y cuáles son los datos de operación. Prácticamente todo el proceso de datos se realiza en los registros internos del procesador, por lo que los valores deben llegar, o partir, al mismo.

Los periféricos se encargan de abordar tareas sencillas relacionadas con la comunicación hacia y desde el exterior de equipo. Los ejemplos más comunes de estos periféricos son los encargados de gestionar el interface paralelo, para salida hacia impresora Centronics, y el serie. Este último está preparado para comunicaciones serie, RS232, lo que le permite enlazar tanto con un modem (y de ahí a la línea telefónica), un plotter, el ratón, e incluso otro ordenador. Los controladores cumplen dos misiones. Por una parte descargan de trabajo al ordenador, con lo que éste puede dedicarse a la tarea principal de gestionar datos, mientras que los controladores se encargan de proporcionar un interface más o menos inteligente con el mundo exterior. Por otra parte, esto permite diseñar complejos microprocesadores para concentrarse en las tareas de gestión, y por tanto de uso totalmente general, mientras que los controladores, de elaboración más sencilla, se adaptan para funcionar con una determinada tarea. La división entre microprocesadores y controladores resulta cada vez más sutil, ya que en algunas ocasiones se necesita un controlador tan complejo para una tarea que se opta por colocar otro microprocesador dedicado a una labor específica. Los PC, incluyendo el XT y posteriores incluyen al menos un controlador, que realmente es un microprocesador dedicado, para la interface de teclado.

LAS LINEAS DE UNION EI bus del microprocesador es simplemente el conjunto de líneas eléctricas, cables, etc., que llevan las distintas señales necesarias para interconectar todos los elementos del sistema. Estas líneas aseguran el contacto eléctrico desde el microprocesador, que es el encargado de llevar el control, hasta los diferentes elementos, memoria, controladores, periféricos, que se comunican con aquél. Una parte especial del bus en una placa de un ordenador es el denominado bus de expansión. En éste, las líneas están repartidas en unos conectores que permiten enganchar sobre ellos tarjetas de expansión. Sobre estas tarjetas se adapta cualquier periférico, o memoria, que no esté presente sobre la placa principal que contiene los circuitos del ordenador. Este sistema permite fabricar una placa con circuitería estándar, o básica, apta para cualquier tarea general, y que el usuario pueda completar el equipamiento del sistema según sus necesidades. La placa base del sistema incluye al menos el microprocesador, el reloj, la memoria, controlador de teclado, de interrupciones y algunos contadores programables (uno de los cuales se encarga de manejar el altavoz). Adicionalmente puede contener también los periféricos serie y paralelo, y en algunos casos el controlador de vídeo y de discos. La circuitería enumerada, y que es la que resulta necesaria para formar un equipo completo, que no esté implantada en la placa base debe colocarse en los conectores de expansión. Un equipo que integre en su placa base todos los elementos resulta por lo general más compacto y barato, pero al tiempo reduce las posibilidades de actualizarlo con otros dispositivos más modernos (por ejemplo controladoras de vídeo de mayor resolución y colores). Colocar sólo lo más elemental

sobre la placa base y completar el equipamiento sobre los slots de expansión permite al usuario adquirir un equipo configurado a medida, pero ocupando ya de partida el sitio reservado para ampliaciones; con ello puede quedarse sin sitio para colocar dispositivos especiales (modem, digitalizadores, controladores de discos ópticos, cintas streamer) en el ordenador. La rápida evolución de los microprocesadores empleados hace que algunos fabricantes hayan optado incluso por colocar el microprocesador y sus elementos indispensables (reloj, buffers, etc.) en una placa, mientras que los periféricos estándar (temporizadores, controlador de teclado, de interrupciones, canales serie y paralelo) son situados sobre la placa base. En algunos modelos incluso se llega a realizar una placa base que sólo contiene los slots de expansión, y el micro y periféricos se comunican unos con otros a través del bus de expansión. Cualquiera de estos sistemas está orientado a conseguir que la actualización del microprocesador a una versión más rápida y potente, se realice de la forma más sencilla posible, ya que sólo es necesario desmontar una tarjeta de ampliación, en lugar de tener de cambiar toda la placa base, o incluso el equipo completo.

LAS LINEAS DE INTERRUPCION EI microprocesador dispone de una línea de "atención" para acudir a gestionar con rapidez la solicitud de algún dispositivo. Este método consiste en la línea de interrupción con que está dotado el micro. Se trata de un proceso que se inicia por hardware, pero que se continúa mediante el software.

Cuando se activa una señal de interrupción, el microprocesador completa la instrucción en curso y luego detiene el proceso o programa, actualmente en ejecución, y salva una serie de registros del ordenador; entre estos registros se cuentan el contador de programa con lo que guarda el punto actual en la ejecución del mismo, de forma similar a una llamada a una subrutina. Luego coloca en el bus un ciclo de "reconocimiento de la interrupción", a lo que la circuitería que ha producido ésta responde con un valor de 8 bits, entre 0 y 255, que indica el índice para el vector de gestión de la interrupción. Tras esto, el procesador transfiere el control al programa de tratamiento indicado por el vector. Una vez realizado su proceso y antes de finalizar, el programa de interrupción debe haber dejado todos registros que haya empleado o modificado. Los programas de gestión de interrupciones deben terminar con una instrucción especial, IRET, que indica al procesador que ha llegado el momento de volver de la interrupción. Gracias a ello se reponen los registros salvados en la entrada, y se devuelve el control al punto exacto del programa principal interrumpido. La creación de programas que utilicen las señales de interrupción son realmente críticas, ya que deben tener en cuenta un manejo sofisticado de los recursos del ordenador y evitar situaciones de conflicto con el desarrollo normal del resto de los programas. Ejemplos típicos de periféricos que tienen asignada una interrupción para su funcionamiento son los puertos paralelos y

serie del ordenador, la interfacede teclado y el de ratón, así como el controlador de disco, entre otros. El reloj virtual del ordenador también está controlado mediante una interrupción periódica generada por un contador programable que emite unos pulsos -interrupciones- por segundo. Cualquier periférico que desee enviar información al microprocesador sin que se sepa de antemano cuándo va a llegar esta información es un candidato a emplear interrupciones, y su correspondiente programa de control. Los microprocesadores Intel disponen de dos fuentes de interrupción. 

Una de ellas es No Enmascarable (NMI, Non Mascable Interrupt), lo que significa que siempre que se produzca será atendida por el procesador.



La otra, INTR, es enmascarable lo que proporciona una mayor versatilidad, ya que podemos desactivarla durante la ejecución de ciertas tareas, y activarla cuando el proceso que se está realizando puede ser interrumpido. Un bit de registro de indicadores determina si la interrupción es aceptada o no.

Como normalmente es el microprocesador el que se comunica con los periféricos, las interrupciones permiten un medio para que estos dispositivos se comuniquen con el micro. Las interrupciones, por tanto, ayudan a que el procesador se relacione con el mundo exterior, el cual incluye una gran variedad de señales cuyo momento exacto de producción, o disponibilidad, no resulta predecible de forma exacta. Más adelante se continua hablando a cerca de las interrrupciones.

EL BUS DEL SISTEMA Se denomina un bus al conjunto de líneas eléctricas que conducen las diversas señales digitales dentro del ordenador. El bus no aporta inteligencia al sistema, pero sí es el responsable de una misión de alta importancia, como es lograr que todo el conjunto de elementos funcione como un conjunto, y no como entidades separadas. En última instancia, el bus, o más bien su adecuada distribución sobre la placa, determina la máxima velocidad que puede alcanzar el conjunto. No basta pues con colocar en los zócalos integrados un microprocesador y unas memorias rápidas; si el bus no transmite las señales a la velocidad adecuada sin alterarlas, colocará un límite insalvable de velocidad en el sistema. En cuanto a su misión, las señales que atraviesan el bus establecen una división en tres grandes grupos: direcciones, datos y de control. El bus de direcciones, o conjunto de líneas que llevan la información de la dirección de memoria, se encarga de aportar las señales que indican la posición de un dato. El valor en sí se transmite por el bus de datos. Las señales de control aportan información acerca de la operación que está realizando el ordenador: lectura, escritura, acceso de un dispositivo E/S o de memoria, etc. El bus de control es el responsable entre otras tareas de controlar el tráfico de señales en los otros dos buses. Todo el proceso de funcionamiento de las señales en el bus está determinado normalmente por el microprocesador, que es quien coloca las señales en el bus, y se realiza según una cadencia determinada por el reloj del sistema. No hay que confundir el reloj del sistema con la frecuencia de funcionamiento del microprocesador. El reloj del sistema funciona cuatro veces más rápido que la frecuencia del microprocesador, a fin de permitir la adecuada subdivisión de las tareas internas que ejecuta el micro. Más que como un

corazón, el reloj del sistema actúa como un metrónomo, indicando el ritmo que deben seguir todas las operaciones, y asegurando una correcta sincronización de todos los procesos.

LA MEMORIA INTELIGENTE DEL ORDENADOR EI único programa que existe dentro del ordenador al encenderlo se encuentra grabado sobre una memoria de sólo lectura denominada BIOS (Basic InputOutput System). El ROM BIOS viene a ser como el fulminante de una bomba: una pequeña explosión inicial que se activa fácilmente, y que sirve para poner en marcha la detonación de una gran cantidad de material de explosivo contenido en la bomba. Los potentes efectos de esta bomba vienen dados por el material explosivo, pero éste no se activa a menos que funcione el fulminante. Así, el BIOS se encarga de aportar una pequeña dosis de programa (inteligencia) necesaria para que el sistema comience a trabajar adecuadamente; las funciones del BIOS incluyen la identificación de los elementos presentes en la placa, memoria y periféricos, así como la carga del sistema operativo, DOS, y su posterior ejecución. Entre las funciones del BIOS está la de averiguar, mediante una sencilla prueba de escritura y posterior lectura con verificación, la cantidad de memoria que está colocada en el ordenador; otras funciones iniciales incluyen el manejo elemental de los puertos serie y paralelo del ordenador, el borrado de pantalla y colocación del cursor al comienzo. El BIOS contiene también una serie de instrucciones de manejo sencillo del ordenador, como recibir caracteres del teclado, presentar el texto en la pantalla, etc. Estas funciones, catalogadas mediante llamadas a interrupciones BIOS del sistema, están ampliamente documentadas, y permiten a los programadores evitarse el duplicar trabajo al tener disponibles las entradas y salidas básicas del ordenador.

Una de las últimas funciones del BIOS consiste en determinar en cuál de los discos presentes en el ordenador hay un sistema de arranque, BOOT, con el DOS, y de comenzar a cargarlo para posteriormente transferir a éste el control. El DOS -Disk Operating System-, se encarga de la gestión general del sistema, incluyendo archivos, discos, visualización y soporte de las rutinas que los programas de aplicación necesitarán para aprovechar las capacidades del ordenador. El DOS también se apoya sobre el BIOS, ejecutando algunas llamadas a éste, pero amplía notablemente las capacidades básicas incluidas en el mismo. Una zona de memoria, denominada área de sistema, almacena los parámetros que usan tanto el BIOS como el DOS. En esta zona se guarda información relativa a la cantidad de memoria total, libre y ocupada, la situación de periféricos, o la posición del cursor de pantalla entre otros. El BIOS representa la inicialización y el manejo básico del ordenador y periféricos, mientras que el DOS, (y sobre éste los programas de aplicación), el uso avanzado del mismo. En los primeros modelos de PC IBM, el intérprete BASIC, estaba colocado en una ROM, con lo que no era necesario cargarlo desde disco. Si bien esto presenta una ventaja inicial, a la larga resultó ser un programa cuyo cambio a una versión más moderna resultaba una tarea excesivamente complicada para el usuario.

EL BUS DE EXPANSION: AMPLIANDO EL SISTEMA En los IBM PC/XT, el bus de expansión está dotado de conectores que permiten acceder a los 16 bits de direcciones y datos manejados por el 8088/8086. En los modelos AT, el bus se amplió a 32 bits para aprovechar la capacidad de direccionamiento del 80286; el bus AT también se denomina ISA (IndustryStandard Architecture), ya que ha sido la norma más empleada durante bastante tiempo. La nueva y más avanzada generación de ordenadores IBM compatibles se ha bifurcado en cuanto a normas del bus de expansión y realmente de arquitectura interna: por un lado IBM apuesta por la ruptura con los sistemas anteriores con el MCA (Micro Channel Architecture) implantado en la familia PS/2, mientras que un elevado número de fabricantes han preferido mantener la compatibilidad con las tarjetas desarrolladas previamente, al tiempo que dejan sitio para las mejores posibilidades de los modernos microprocesadores y software avanzados. Esta última opción se denomina EISA (Extended Industry Standard Architecture), ya que se trata de una versión ampliada de la ISA. Tanto la arquitectura EISA como la MCA contemplan avanzadas soluciones hardware para permitir un mejor empleo del sistema para gestión multitarea, colocar varios procesadores en el mismo ordenador y repartir las tareas al tiempo que se comparten los recursos. Después de estas opciones los fabricantes desarrollaron nuevas tarjetas que mantienen la compatibilidad ISA pero mucho más potentes: las VESA Local Bus.

Esta es la tendencia que se impone actualmente con las nuevas versiones PCI (Peripheral Component Interconnect): adaptar los equipos a fin de que los nuevos avances tecnológicos sean fácilmente implantables en ellos, y facilitar en cualquier caso la ampliación del sistema. Más adelante se hablará un poco más sobre estas arquitecturas.

DIRECCIONAMIENTO Los microprocesadores clásicos de 8bits empleaban una técnica de direccionamiento denominada lineal, ya que el contenido de un único registro se encargaba de colocar la dirección real de memoria; todo el campo de direcciones era accesible de forma lineal, a base de incrementar un registro. Para guardar la adecuada compatibilidad y así poder direccionar con los procesadores de 16 bits los elementos de los micros de 8 bits, Intel empleó una técnica denominada segmentación. En el direccionamiento segmentado, un registro contiene la información del trozo, segmento, de memoria a la que se va a acceder, mientras que un segundo registro se encarga de completar el acceso indicando el desplazamiento. De esta forma, el programador no ve las direcciones físicas, reales, de memoria sino una dirección lógica (virtual); la dirección virtual está definida como el conjunto de un identificador de segmento, denominado también selector, y de una dirección relativa al segmento, y que se denomina desplazamiento. Un segmento no es otra cosa que una zona de memoria constituida por posiciones contiguas.

La segmentación no implica una división funcional de la memoria, ya que una cierta posición de RAM puede ser alcanzada con diversos valores de segmento y desplazamiento. El sistema de direccionamiento segmentado permite, por ejemplo, separar radicalmente las zonas que contienen el programa (y que por tanto no son modificadas) de las zonas de datos y de pila (stack). Como ya hemos visto este mecanismo a su vez también es capaz de implementar efectivamente las técnicas de conmutación de tareas y protección entre ellas. Las direcciones lógicas (virtuales) son convertidas en direcciones físicas (reales, o también lineales) de forma diferente según el tipo de microprocesador, e incluso según el modo en que esté trabajando. Así, con la formación de una dirección física en el 486 mediante la técnica de paginación, en las cuales además de un selector y un desplazamiento interviene un índice de directorio, se consigue que con 32 líneas de direcciones, el 486 pueda acceder a 64 Gigabytes en modo virtual.

REGISTROS DEL PROCESADOR

Los registros del procesador se emplean para controlar instrucciones en ejecución, manejar direccionamiento de memoria y proporcionar capacidad aritmética. Los registros son direccionables por medio de un nombre. Los bits por convención, se numeran de derecha a izquierda, como en: ... 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Los registros internos del procesador se puede clasificar en 6 tipos diferentes 1. 2. 3. 4. 5. 6.

Registros de segmento Registros de propósito general Registros de apuntadores Registros de banderas Registros de Puntero de instrucción Registros de Pila

Registros de segmento Un registro de segmento tiene 16 bits de longitud y facilita un área de memoria para direccionamiento conocida como el segmento actual.

Registro CS. El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, mas un valor de desplazamiento en el registro apuntador de instrucción (IP), indica la dirección de una instrucción que es buscada para su ejecución.

Registro DS. La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. En términos sencillos, esta dirección, mas un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un byte especifico en el segmento de datos.

Registro SS. El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de inicio del segmento de pila de un programa en le registro SS. Esta dirección de segmento, mas un valor de desplazamiento en el registro del apuntador de pila (SP), indica la palabra actual en la pila que esta siendo direccionada.

Registros ES. Alguna operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro extra de segmento para manejar el direccionamiento de memoria. En este contexto, el registro ES esta asociado con el registro DI (índice). Un programa que requiere el uso del registro ES puede inicializarlo con una dirección de segmento apropiada.

Registros FS y GS. Son registros extra de segmento en los procesadores 80386 y posteriores. Regresar Arriba

Registros de propósito general. Los registros de propósito general AX, BX, CX y DX son los caballos de batalla del sistema. Son únicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un byte. El ultimo byte de la izquierda es la parte "alta", y el ultimo byte de la derecha es la parte "baja". Por ejemplo, el registro CX consta de una parte CH (alta) y una parte Cl (baja), y usted puede referirse a cualquier parte por su nombre.

Registro AX. El registro AX, el acumulador principal, es utilizado para operaciones que implican entrada/salida y la mayor parte de la aritmética. Por ejemplo, las instrucciones para multiplicar , dividir y traducir suponen el uso del AX. También, algunas operaciones generan código mas eficiente si se refieren al AX en lugar de a los otros registros.

Registro BX. El BX es conocido como el registro base ya que es el único registro de propósito general que puede ser índice para direccionamiento indexado. También es común emplear el BX para cálculos.

Registro DX. El DX es conocido como l registro de datos. Alguna operaciones de entrada/salida requieren uso, y las operaciones de multiplicación y división con cifras grandes suponen al DX y al AX trabajando juntos.

Regresar Arriba

Registro de Apuntador de Instrucciones. El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de dirección de la siguiente instrucción que se ejecuta. El IP esta asociado con el registro CS en el sentido de que el IP indica la instrucción actual dentro del segmento de código que se esta ejecutando actualmente. Los procesadores 80386 y posteriores tienen un IP ampliado de 32 bits, llamado EIP.

En el ejemplo siguiente, el registro CS contiene 25A4[0]H y el IP contiene 412H. Para encontrar la siguiente instrucción que será ejecutada, el procesador combina las direcciones en el CS y el IP:

Segmento de dirección en el registro CS: 25A40H Desplazamiento de dirección en el registro IP: + 412H Dirección de la siguiente instrucción: 25E52H Regresar Arriba

Registros Apuntadores. Los registros SP (apuntador de la pila) Y BP (apuntador de base) están asociados con el registro SS y permiten al sistema accesar datos en el segmento de la pila.

Registro SP. El apuntador de la pila de 16 bits esta asociado con el registro SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que esta siendo procesada en la pila. Los procesadores 80386 y posteriores tienen un apuntador de pila de 32 bits, el registro ESP. El sistema maneja de forma automática estos registros.

En el ejemplo siguiente, el registro SS contiene la dirección de segmento 27B3[0]H y el SP el desplazamiento 312H. Para encontrar la palabra actual que esta siendo procesada en la pila, la computadora combina las direcciones en el SS y el SP:

Registro BP. El BP de 16 bits facilita la referencia de parámetros, los cuales son datos y direcciones transmitidos vía pila. Los procesadores 80386 y posteriores tienen un BP ampliado de 32 bits llamado el registro EBP.

Regresar Arriba

Registros Indice. Los registros SI y DI están disponibles para direccionamiento indexado y para sumas y restas.

Registro SI. El registro índice fuente de 16 bits es requerido por algunas operaciones con cadenas (de caracteres). En este contexto, el SI esta asociado con el registro DS. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits, el ESI.

Registro DI. El registro índice destino también es requerido por algunas operaciones con cadenas de caracteres. En este contexto, el DI esta asociado con el registro ES. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits, el EDI.

Regresar Arriba

Registro de Banderas. De los 16 bits del registro de banderas, nueve son comunes a toda la familia de procesadores 8086, y sirven para indicar el estado actual de la maquina y el resultado del procesamiento. Muchas instrucciones que piden comparaciones y aritmética cambian el estado de las banderas, algunas cuyas instrucciones pueden realizar pruebas para determinar la acción subsecuente. En resumen, los bits de las banderas comunes son como sigue:

OF (Overflow, desbordamiento). Indica desbordamiento de un bit

de orden alto (mas a la izquierda) después de una operación aritmética.

DF (dirección). Designa la dirección hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteres.

IF (interrupción). Indica que una interrupción externa, como la entrada desde el teclado, sea procesada o ignorada.

TF (trampa). Permite la operación del procesador en modo de un paso. Los programas depuradores, como el DEBUG, activan esta bandera de manera que usted pueda avanzar en la ejecución de una sola instrucción a un tiempo, para examinar el efecto de esa instrucción sobre los registros de memoria.

SF (signo). Contiene el signo resultante de una operación aritmética (0 = positivo y 1 = negativo).

ZF (cero). Indica el resultado de una operación aritmética o de comparación (0 = resultado diferente de cero y 1 = resultado igual a cero).

AF (acarreo auxiliar). Contiene un acarreo externo del bit 3 en un dato de 8 bits para aritmética especializada.

PF (paridad). Indica paridad par o impar de una operación en datos de 8 bits de bajo orden (mas a la derecha).

CF (acarreo). Contiene el acarreo de orden mas alto (mas a la izquierda) después de una operación aritmética; también lleva el contenido del ultimo bit en una

operación de corrimiento o de rotación. Las banderas están en el registro de banderas en las siguientes posiciones:

Las banderas mas importantes para la programación en ensamblador son O, S, Z y C, para operaciones de comparación y aritméticas, y D para operaciones de cadenas de caracteres. Los procesadores 80286 y posteriores tienen algunas banderas usadas para propósitos internos, en especial las que afectan al modo protegido. Los procesadores 80286 y posteriores tienen un registro extendido de banderas conocido como Eflags.

Regresar Arriba

Registros de PILA La pila es un área de memoria importante y por ello tiene, en vez de uno, dos registros que se usan como desplazamiento (offset) para apuntar a su contenido. Se usan como complemento al registro y son:

-SP- Stack Pointer: Se traduce como puntero de pila y es el que se reserva el procesador para uso propio en instrucciones de manipulado de pila. Por lo general , el programador no debe alterar su contenido.

-BP- Base pointer: Se usa como registro auxiliar. El programador puede usarlo para su provecho.

Claro que estos nombres y tipos de registros son estándar, ya que cada fabricante puede utilizar otros registro que reemplacen a estos o los auxilien, aun así, los

fabricantes que usan otros registro tienen la misma función que los anteriormente mencionados

Ejemplo Registros de uso general del 8086/8088: Tienen 16 bits cada uno y son ocho: 1. AX = Registro acumulador, dividido en AH y AL (8 bits cada uno). Usándolo se produce (en general) una instrucción que ocupa un byte menos que si se utilizaran otros registros de uso general. Su parte más baja, AL, también tiene esta propiedad. El último registro mencionado es el equivalente al acumulador de los procesadores anteriores (8080 y 8085). Además hay instrucciones como DAA; DAS; AAA; AAS; AAM; AAD; LAHF; SAHF; CBW; IN y OUT que trabajan con AX o con uno de sus dos bytes (AH o AL). También se utiliza este registro (junto con DX a veces) en multiplicaciones y divisiones.

2. BX = Registro base, dividido en BH y BL. Es el registro base de propósito similar (se usa para direccionamiento indirecto) y es una versión más potente del par de registros HL de los procesadores anteriores.

3. CX = Registro contador, dividido en CH y CL. Se utiliza como contador en bucles (instrucción LOOP), en operaciones con cadenas (usando el prefijo REP) y en desplazamientos y rotaciones (usando el registro CL en los dos últimos casos).

4. DX = Registro de datos, dividido en DH y DL. Se utiliza junto con el registro AX en multiplicaciones y divisiones, en la instrucción CWD y en IN y OUT para direccionamiento indirecto de puertos (el registro DX indica el número de puerto de entrada/salida).

5. SP = Puntero de pila (no se puede subdividir). Aunque es un registro de uso general, debe utilizarse sólo como puntero de pila, la cual sirve para almacenar las direcciones de retorno de subrutinas y los datos temporarios (mediante las instrucciones PUSH y POP). Al introducir (push) un valor en la pila a este registro se le resta dos, mientras que al extraer (pop) un valor de la pila este a registro se le suma dos.

6. BP = Puntero base (no se puede subdividir). Generalmente se utiliza para realizar direccionamiento indirecto dentro de la pila.

7. SI = Puntero índice (no se puede subdividir). Sirve como puntero fuente para las operaciones con cadenas. También sirve para realizar direccionamiento indirecto.

8. DI = Puntero destino (no se puede subdividir). Sirve como puntero destino para las operaciones con cadenas. También sirve para realizar direccionamiento indirecto.

Cualquiera de estos registros puede utilizarse como fuente o destino en operaciones aritméticas y lógicas Regresar Arriba

Indicadores (flags) Hay nueve indicadores de un bit en este registro de 16 bits. Los cuatro bits más significativos están indefinidos, mientras que hay tres bits con valores determinados: los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno (esto también ocurría en los procesadores anteriores).

CF (Carry Flag, bit 0): Si vale 1, indica que hubo "arrastre" (en caso de suma) hacia, o "préstamo" (en caso de resta) desde el bit de orden más significativo del resultado. Este indicador es usado por instrucciones que suman o restan números que ocupan varios bytes. Las instrucciones de rotación pueden aislar un bit de la memoria o de un registro poniéndolo en el CF.

PF (Parity Flag, bit 2): Si vale uno, el resultado tiene paridad par, es decir, un número par de bits a 1. Este indicador se puede utilizar para detectar errores en transmisiones.

AF (Auxiliary carry Flag, bit 4): Si vale 1, indica que hubo "arrastre" o "préstamo" del nibble (cuatro bits) menos significativo al nibble más significativo. Este indicador se usa con las instrucciones de ajuste decimal.

ZF (Zero Flag, bit 6): Si este indicador vale 1, el resultado de la operación es cero. SF (Sign Flag, bit 7): Refleja el bit más significativo del resultado. Como los números negativos se representan en la notación de complemento a dos, este bit representa el signo: 0 si es positivo, 1 si es negativo.

TF (Trap Flag, bit 8): Si vale 1, el procesador está en modo paso a paso. En este modo, la CPU automáticamente genera una interrupción interna después de cada instrucción, permitiendo inspeccionar los resultados del programa a medida que se ejecuta instrucción por instrucción.

IF (Interrupt Flag, bit 9): Si vale 1, la CPU reconoce pedidos de interrupción externas enmascarables (por el pin INTR). Si vale 0, no se reconocen tales interrupciones. Las interrupciones no enmascarables y las internas siempre se reconocen independientemente del valor de IF. DF (Direction Flag, bit 10): Si vale 1, las instrucciones con cadenas sufrirán "auto-decremento", esto es, se

procesarán las cadenas desde las direcciones más altas de memoria hacia las más bajas. Si vale 0, habrá "auto-incremento", lo que quiere decir que las cadenas se procesarán de "izquierda a derecha".

OF (Overflow flag, bit 11): Si vale 1, hubo un desborde en una operación aritmética con signo, esto es, un dígito significativo se perdió debido a que tamaño del resultado es mayor que el tamaño del destino.

Regresar Arriba

El procesador Z80 Registros de propósito general El Z80 posee 14 registros de propósito general de 8 bits denominados A, B, C, D, H, L y A', B', C', D', H' , L'. Solamente un set de siete registros y el correspondiente registro de Flags F pueden estar activos al mismo tiempo. Una instrucción especial selecciona A y F o A' y F' mientras que otra instrucción selecciona B, C, D, E, H, L o C', D', E' ,H' L'.

El programador puede cambiar rápidamente de un conjunto de registros de propósito general a otro. Esto proporciona una mayor capacidad de almacenamiento en registros. El acceso a datos presentes en registros de la CPU es mucho más rápido que el acceso a datos en memoria.

Los registros pueden agruparse de a pares formando registros de 16 bits. Estos son los pares BC, DE y HL (sus equivalentes primas también pueden agruparse).

Flags Aunque los Flags existen físicamente dentro de la CPU están agrupados lógicamente formando un registro. Los Flags del Z80 son los siguientes: Flag de Cero(Z): Toma el valor 1 si el resultado de una operación es cero. Es el bit seis. Flag de signo(S): Toma el valor 1 si el resultado de una operación es negativo. Es el bit siete. Flag de Carry(C): Este flag es afectado por las instrucciones de desplazamiento y es puesto en 1 ó 0 según el valor del bit desplazado. También es afectado por las operaciones aritméticas. Este flag es el bit cero.

Flag de Paridad y overflow(P/V): En el caso de paridad, se pone en 1 si el resultado de una operación posee un número par de unos. Cuando el flag P/V se usa para representar overflow, el flag se pone en 1 si ocurre un overflow después de una operación aritmética. Este flag es el bit 2.

Flag H y N: Son dos Flip Flop que no pueden ser examinados por las instrucciones de salto condicional. El Z80 los usa para las operaciones BCD. H representa el rebalse que genera considerando los cuatro bits menos significativos del resultado y N es el flag de resta, el cual se activa para indicar si la última instrucción ejecutada fue suma o resta. En el caso general, una instrucción de resta coloca en 1 el flag N y una instrucción de suma lo coloca en 0. Los Flags H y N son los bits 4 y 1 respectivamente.

Registros de propósito especial Program Counter: Es un registro de 16 bits que indica la dirección de la próxima instrucción ejecutar. Las instrucciones del Z80 pueden contar de uno, dos, tres o cuatro bytes.

Stack-Pointer: Es un registro de 16 bits que indica la dirección de una memoria RAM externa denominada Stack. El objetivo de esta área de memoria es proporcionar un medio de almacenamiento temporal de los registros del usuario, registro de Flags y del program Counter. La provisión de Stack es fundamental para operaciones tales como los llamados a sub-rutinas e interrupciones.

Registros índices IX e IY: Estos registros son de 16 bits, diseñados para permitir un direccionamiento indexado en los programas del Z80. Cuando se ejecuta una instrucción en un modo de direccionamiento indexado, se usa uno de los dos registros índices para calcular la dirección del operando.

Registro de interrupciones I: Es un registro de 8 bits que puede ser cargado para especificar el byte más significativo de una dirección de memoria. El byte menos significativo es proporcionado por el dispositivo que solicita la interrupción.

Registro de refresh de memoria R: Es un registro especial diseñado para proporcionar un refresh automático de las memorias RAM dinámicas.

Registro de instrucciones: El registro de instrucciones tiene por misión almacenar el código de operación de la instrucción leída desde memoria. Este código es descodificado y con esta información se dirigen todos los micro-pasos.

ESTRUCTURA BASICA DE UN MICROPROCESADOR.

UNIDADES FUNCIONALES BASICAS DE UN MICROPROCESADOR.

En la terminologia de microprocesadores, a cada grupo de circuitos que desempe~an diferentes tareas importantes se les denomina "unidad funcional", y el conjunto de unidades funcionales y la forma como estan interconecradas se denomina "arquitectura" del microprocesador. Las unidades basicas de un microprocesador son:

   

Unidad aritmetico/logica. Unidad de control. Registros internos. Memoria del programa.

Hay otras unidades funcionales que tambien pueden existir en el microprocesador; como son la "memoria de datos" y los "puertos de entrada/salida". La unidad de procesamiento central (CPU) es un microprocesador que posee unicamente las tres unidades básicas: unidad de control, unidad aritmetico/logica y algunos registros.



La unidad de control.

Es la unidad funcional primaria dentro del microprocesador. Utiliza se~ales de reloj para mantener la secuencia de eventos apropiada para llevar a cabo cualquier tarea de procesamiento. Despues de que una instrucción ha sido obtenida y decodificada por el microprocesador, la circuiteria de control envia las se~ales apropiadas a dispositivos tanto internos como externos a la CPU, para iniciar la accion de procesamiento indicada por la instruccion. El corazon de la unidad de control lo constituye el "generador de ciclo de maquina" (GCM), que se encarga de producir las se~ales de control, derivandolas de un reloj u oscilador maestro como referencia.



Unidad aritmetico/logica.

Conocida también como ALU (Arithmetic/Logic Unit.). La ALU es la parte del microprocesador que lleva a cabo las operaciones aritméticas y lógicas en los datos binarios. Algunas de ellas se aplican sobre dos operandos, otras solamente en uno.

La ALU ejecuta las siguientes operaciones: 1. Suma aritmetica. 1. Funciones logicas AND, OR, XOR. 1. Complemento. 1. Rotación hacia la derecha o izquierda. La ALU contienen ademas un conjunto de FF`s llamados "banderas" que guardan informacion relacionada con el resultado de una operacion.



Registros internos.

Son unidades de almacenamiento temporal dentro de la CPU. Algunos tienen usos especificos, otros son de uso general. CONTADOR DEL PROGRAMA (Program Counter) o PC. Este registro lleva cuenta de cual instrucción es la que debe ejecutar enseguida el microprocesador. REGISTRO DE INSTRUCCIONES (Instruction Register) o IR. Despues de que se ha obtenido una instruccion de la memoria, la CPU lo almacena en este registro. La instrucción almacenada en el IR es decodificada y usada para activar una de varias lineas. El dispositivo que traduce la instruccion en acciones concretas es el "Decodificador de instrucciones. La primera palabra de una instruccion es el codigo de operacion para esa instruccion. El "Codigo de operacion" indica a la unidad de control las operaciones requeridas en la ejecucion de la instruccion. REGISTRO ACUMULADOR.

Generalmente contiene uno de los operandos que seran manipulados por la ALU y, el resultado de la operacion se deposita en este registro, reemplazando a uno de los operandos originales.



Memoria del programa.

Es una ROM o EPROM que contiene el programa del microprocesador. En algunos casos, la memoria del programa tambien almacena parametros o tablas de datos que no sufren modificaciones.

CONCEPTOS ADICIONALES DE MICROPROCESADORES.



Los registros internos de propósito general.

Con frecuencia, un microprocesador tiene un numero de registros adicionales que no tienen asignada ninguna funcion en particular. Se usan en tareas generales como lugares de almacenamiento temporal para guardar operandos o resultados intermedios. Por las restricciones del número de bits que se pueden incluir dentro del codigo de una instruccion, el numero de registros de proposito general normalmente se limita a menos de ocho. Para identificarlos se usan numeros o letras. 

La memoria de datos.

Es una memoria de lectura/escritura (RAM), cuyo objetivo es permitir el almacenamiento temporal de datos o programas de aplicacion. Por sus caracteristicas de lectura/escritura, la informacion que reside en ella se puede alterar facilmente. Esta se pierde cuando se apaga la fuente de alimentacion.



Los puertos de entrada/salida.

Son los circuitos que se encargan de establecer el contacto del microprocesador (CPU) con el mundo exterior. Los puertos se conectan a dispositivos perifericos que generan informacion para ser procesada por la CPU o que aceptan datos provenientes del microprocesador y los transforman en informacion significativa para el mundo exterior.



Los buses de interconexion.

Las lineas de interconexion se pueden agrupar en tres buses: datos, direccion y control.

EL BUS DE DATOS: Es un conjunto de lineas bidireccionales, que transportan informacion del microprocesador hacia la memoria o puertos y de estos al microprocesador.

EL BUS DE DIRECCIONES: Es unidireccional, por el solamente circula informacion proveniente del microprocesador. Comprende a las lineas que transmiten una direccion generada por el CPU, la cual selecciona a un puerto o a una localidad de memoria.

BUS DE CONTROL: Lo conforman la sincronizacion y el sentido de transferencia de informacion en el bus de datos, y el tipo de transferencia indicadas por medio de se~ales de control originadas en el CPU. Cada una de las se~ales en el bus de control es unidireccional.

BUSES INTERNOS: Son buses que existen dentro del microprocesador que sirven para comunicar entre sí a la ALU, los registros internos y la unidad de control.