Revistas en papel
Anterior
MenĂº
Logotipo

Amiga.InFo Nº 1 - Enero/Febrero 1995 - AMIGA INTERNO

NOTA: Pulsando sobre las fotos con borde azul ampliarás la imagen.

EL MICROPROCESADOR

1- ¿Qué es un microprocesador?
2- ¿Qué partes componen un microprocesador?

- DataPath
- Banco de registros generales
- Unidad Aritmético-Lógica
- Buses de interconexión

- Unidad de control

- Contador de programa
- Registro de instrucciones
- Registro de estado
- Decodificador de instrucciones
- Reloj

- Unidad de gestión de memoria: MMU
- Unidad de cálculo en formato coma flotante: Coprocesadores Matemáticos

3- ¿Cual es su funcionamiento interno?

- Etapas de ejecución

4- ¿Cómo se relaciona con los demás componentes?

- Manejo entrada/salida
- Interrupciones

5- Tipos de microprocesador: CISC vs RISC

- Descripción CISC
- Descripción RISC
- Ventajas y desventajas

6- Técnicas empleadas para mejorar el rendimiento del procesador.

- Procesadores segmentados
- Procesadores escalares

7- Microprocesadores actuales

- Ejemplos procesadores CISC: Motorola 680x0 / Intel 8x86
- Ejemplos procesadores RISC: Mitorola 88000 / Intel i860 / MIPS / SPARC / POWERPC / AMD


EL MICRO DEL AMIGA

1- Introducción
2- ¿Qué tipo de microprocesador tiene un Amiga?
3- ¿Qué funciones cumple?
4- ¿Cómo se integra con los demás componentes en la placa base?
5- Cómo afecta el entorno multitarea y al SO...
6- La familia Motorola 680X0
7- El coprocesador matemático M68881/882
8- Futuro del Amiga: núcleo RISC

EL MICROPROCESADOR
por FMartin

Tal y como anunciábamos en el número anterior, este mes trataremos a un componente fundamental situado en el interior de nuestro ordenador


El microprocesador.

La también denominada CPU (unidad central de proceso), es quizás el elemento que ha evolucionado y se ha desarrollado de forma más rápida que cualquier otro componente (memoria y periféricos principalmente) en la historia de la informática. Hoy día, los usuarios estamos prestándole una especial importancia, debido a la aparición de nuevo modelos de los grandes fabricantes de procesadores. Todos habéis oído hablar del Motorola 68060, Pentium o del PowerPC, pero sin embargo, no todos estáis familiarizado con la estructura interna de un micro, o las diferencias entre un CISC y un RISC, o como funciona el M680X0 en un Amiga... En esta serie de artículos podréis encontrar muchas explicaciones y comentarios sobre los microprocesadores y, aunque no intenta ser un tratado sobre ellos, sí pretende ayudaros a comprender mejor su funcionamiento.


¿Qué es un microprocesador?

En muchas ocasiones las comparaciones entre el ser humano y el ordenador pueden servirnos para observar similitudes que nos ayuden a comprender las funciones de un determinado componente dentro del ordenador.

Todos sabemos que el centro neurálgico que nos permite realizar cualquier tarea es el cerebro. Es él, quien determina en todo momento qué partes de nuestro cuerpo han de actuar, y también el que recibe información tanto interna como externa de estas partes, para poder actuar en consecuencia y responder a cualquier situación que se presente. Evidentemente, comparar al cerebro con un microprocesador puede parecer en un principio exagerado.

El cerebro es increíblemente más complicado y está mucho más avanzado, sin embargo, cuando hablamos de sus funciones más primitivas y primarias, observamos que son idénticas a las funciones que realiza un microprocesador, pese a que la composición y estructura de uno y otro sean totalmente diferentes. No estoy equiparando un microprocesador a nuestro intelecto, eso es hoy en día impensable. Simplemente se puede observar como existen pequeños paralelismos entre uno y otro.

Una primera definición intuitiva después de la comparación con el cerebro podría servirnos para explicar que es un microprocesador:

Es el componente que coordina, centraliza y planifica las actividades de los restantes componentes internos de un ordenador e incluso las suyas propias. La memoria donde se almacenan los datos (RAM, ROM, etc) y los circuitos de control de periféricos están bajo su mando, por dar un ejemplo.

Su diseño responde a una función elemental: ejecutar instrucciones deun programa. Además, esta ejecución ha de ser rápida y fiable. Esta es su función principal, ya que prácticamente todas sus actividades son consecuencia de la ejecución de determinados códigos de instrucción. A partir de ellos, el microprocesador se encargará de buscar la información necesaria y procesarla utilizando otros recursos que a veces están integrados en el mismo chip.


FIGURA 1.

A diferencia de otros componentes del ordenador, el microprocesador es un chip de propósito general, es decir, puede ser utilizado para ejecutar diferentes trabajo. Según la secuencia de instrucciones que ejecute (léase programa) responderá de una forma u otra (es decir, es programable).

Compuesto por miles de transistores que actúan como resistencias, condensadores y conmutadores, el proceso de fabricación de estos chips requiere una tecnología altamente sofisticada y moderna. Utilizando máscaras microfotográficas y determinadas propiedades de elementos químicos como el silicio, polisilicio y metal, consiguen crear circuitos que actúan como los transistores típicos de la electrónica analógica. Estos se interconectan mediante micropistas de metal conductor, formando un complejo entramado de niveles que ofrecen el aspecto mostrado en la figura 1.

En ella se muestra el M6800, predecesor del M68000. El esquema de la figura derecha muestra las conexiones típicas de varios transistores en una red de puertas lógicas (gatearray) formando un sumador de 4 bits.

La tecnología de fabricación ha alcanzado niveles muy altos de integración, por ejemplo el de un PowerPC 620: 7 millones de transistores en una superficie cuadrada de 311 mm2.


¿Qué partes componen un microprocesador?

El nivel de estudio que vamos a emplear para describir las partes corresponde al nivel de bloques funcionales, es decir, vamos a tratar con conjuntos de componentes internos que por estar unidos para realizar determinadas tareas, se pueden tratar como un único bloque.

Por supuesto, los diferentes bloques están compuestos de subbloques, y estos a su vez por otros subbloques, hasta finalmente llegar al más bajo: el nivel de transistores. Nosotros nos situaremos en un nivel medio y como máximo bajaremos dos o incluso tres niveles, intentando no introducir excesivamente la complejidad de los conceptos que se requieren al pasar de un nivel a otro interior.


FIGURA 2.

En un primer acercamiento, comentaremos la estructura de un microprocesador general que contiene los bloques usados típicamente en cualquier microprocesador que podamos encontrar en el mercado.

En la figura 2 podemos observar los bloques más importantes contenidos en un microprocesador teórico. A continuación los comentaremos individualmente.

La primera división corresponde a cuatro bloques principales, la unidad de control y la unidad de proceso (o datapath), la unidad de gestión de memoria y finalmente el coprocesador matemático. Veamos qué funciones tiene.


La unidad de control o UC

- Contador de programa
- Registro de instrucciones
- Registro de estado
. Decodificador de instrucciones
- Reloj

Es el circuito que gobierna el sistema. Generalmente está compuesta por un circuito secuencial, es decir, un circuito que como consecuencia de unas señales de entrada y una señal de tiempo (reloj), cambia de estado y produce diferentes señales de salida. Es una máquina determinista, ya que sabe en todo momento cómo actuar y resolver cualquier situación que pueda darse. Los cambios de estado responden a determinadas entradas, siguiendo una lógica establecida por los diseñadores. Esta lógica está implementada en lo que llamaremos "lógica de control".

Las señales de entrada en este caso son proporcionadas por el resto de componentes del ordenador y del datapath, utilizando una señal de reloj para sincronizar la comunicación y cambios de estado.

La mayoría de las actividades que el microprocesador puede realizar dentro de un ordenador están controladas directamente por este bloque.

Controla cualquier operación con la memoria principal, tales como la entrada o salida de instrucciones/datos y planifica la ejecución de las instrucciones. Se encarga de dar los pasos más importantes en la ejecución de una instrucción:

1- buscar y leer la instrucción de un programa
2- decodificarla (identificarla e interpretarla)
3- buscar posibles datos que necesite esta instrucción
4- hacerla ejecutar por la unidad de proceso
5- ordenar que los posibles resultados se guarden en sus destinos (registros internos o memoria principal)


FIGURA 3.

Para poder realizar estas funciones utiliza varios circuitos secundarios al de la lógica de control (Ver Figura 3):

  • Utiliza un contador de programa (PC) para almacenar en todo momento la dirección de la siguiente instrucción que tiene que ejecutar. Este contador se incrementa automáticamente a medida que las instrucciones se van ejecutando.

  • Para almacenar la instrucción que ha dedecodificar, utiliza un registro, denominado Registro de Instrucción o IR.

  • El estado del microprocesador se almacena también en otro registro, denominado registro de estado o SR.

  • Utiliza un circuito combinacional para decodificar las instrucciones. Según el tipo de circuito que se emplee se tiene una UC microprogramada o una cableada. La primera utiliza una pequeña ROM donde se almacena un microcódigo (conjunto de microinstrucciones) en el que se divide cada instrucción del nivel de lenguaje máquina. Por ejemplo, la instrucción ADD de ensamblador, una vez este en el interior del micro, no se ejecutará directamente, sino que se ejecutarán las correspondientes microinstrucciones que activaran las diversas señales de control de los bloques encargados en sumar. Cada instrucción del lenguaje ensamblador tiene su correspondiente microprograma almacenado dentro de una microROM. Estas microinstrucciones no son visibles para el programador. COn cada ciclo de reloj. se ejecuta una microinstrucción. Otro tipo de diseño de UC menos utilizado es la "cableada" o "fija". La lógica de control se almacena como funciones lógicas combinatorias de varias variables, y utilizan normalmente para ello PLAs (Programable logic array). Estas UC son más rápidas que las microprogramadas, pero también son menos flexibles y ocupan más espacio en el chip.

  • Para sincronizar todas las actividades entre los diferentes componentes que controla, utiliza un reloj o una determinada frecuencia de funcionamiento (también es conocido como reloj de cuarzo o cristal). Estos dispositivos emiten una secuencia periódica de impulsos.

La UC es el bloque más difícil a la hora de diseñar un microprocesador, puesto que tiene que manejar todas las señales de control de los demás bloques, y responder a éstas siguiendo una lógica que es extremadamente compleja.


La unidad de proceso o DATAPATH:

- Banco de registros generales
- Unidad Aritmetico-Logica
- Registro de estado SR.
- Buses de interconexión.

La función principal de esta unidad es la de ejecutar las instrucciones, es decir, realizar la operación que haya decodificado la unidad de control. Básicamentelas operaciones que puede realizar están contenidas en un subbloque, denominado unidad aritmetico-lógica o ALU. Aquí se llevan a cabo operaciones primarias como suma, resta, multiplicación, división, comparar, desplazar y mover datos.

Después de realizar cualquiera de estas operaciones aritméticas o lógicas, se evalúa el resultado. A continuación, y dependiendo siempre del resultado, se actualizarán unos bits de un registro llamado Registro de Estado o SR (Status Register). En ese registro existen unos determinados bits que indican al programador y a la propia UC si el resultado de la operación ha sido cero (bit Z activado), o si ha habido acarreo (bit C activado), o desbordamiento (bit V activado), o si el valor del resultado es negativo (bit N activado).


FIGURA 4.

La ALU y la UC utilizan un conjunto de registros denominados Banco de Registros (BR) que sirven para almacenar temporalmente los datos con los que tiene que operar. Este banco de registros se comunica con la ALU y con el exterior a través de varios buses internos y registros intermedios, utilizados para mantener la información estable en las entradas de los componentes.

En concreto, observamos en el esquema del datapath (figura 4) cómo la ALU recibe dos buses (A y B). El bus B está conectado directamente con la ALU, mientras que el bus A está conectado a la entrada de un bloque (llamado multiplexor) que selecciona la fuente de entrada OP A de la ALU. Si se selecciona la entrada del bus A, los bits que viajan porél entrarán en la ALU, en caso contrario, entrarán los bits que contiene el registro MBR (que provienen de la memoria principal externa).


Unidad de gestión de memoria o MMU

Así como los dos anteriores bloques siempre se encuentran en cualquier microprocesador, la MMU y el coprocesador matemático son opcionales y externos al micro, aunque parece conveniente incluidos como parte del microprocesador, ya que actualmente casi todos los incorporan de forma interna en el mismo chip.


FIGURA 5.

La unidad de gestión de memoria es la encargada de controlar los acceso a memoria, decodificar las direcciones proporcionadas por la unidad de control y avisar a la misma de posibles accesos ilegales a memoria (por ejemplo, direcciones de memoria inexistentes). Mediante la implementación de algoritmos de control de la memoria, es posible conseguir que el procesador obtenga más memoria de la que físicamente tiene a su disposición. Este esquema se denomina memoria virtual y emplea la memoria y algún dispositivo de almacenamiento masivo y rápido, como pueda ser un disco duro.

La MMU se sitúa de forma transparente para el programador en el bus de direcciones, entre la memoria y el procesador. Su misión es detectar cualquier acceso a memoria e ingeniárselas para permitir al procesador acceder a más memoria de la que tiene físicamente.

Por ejemplo, si nuestro ordenador tiene 8mb de DRAM y tenemos el problema de que necesitamos más, una solución posible es comprar una ampliación e instalarla en el ordenador. Pero existe otra solución, que nos permite aumentar la memoria sin necesidad comprarla: la memoria virtual. Utilizando el disco duro como sistema de memoria secundario, es posible conseguir tanta memoria como necesitemos. Si por ejemplo son 50 mb, sólo hay que tener libre en el disco duro un espacio de ese mismo tamaño y activar el mecanismo de memoria virtual. Este sistema tiene un gran inconveniente; sulentitud. Acceder al disco duro es mucho más lento que acceder a memoria, y por lo tanto, si "simulamos" tener un bloque de memoria en el disco duro los datos se transferirán a la máxima velocidad que permita el HD. Uno de los programas que emplean esta técnica para añadir memoria virtual a AmigaDOS es el VMM. (Lo podéis encontrar en el disco de portada de este mes)


Coprocesador matemático


FIGURA 6.

El coprocesador matemático puede considerarse como un microprocesador independiente del central, pero controlado por él. Es empleado únicamente para realizar operaciones matemáticas a alta velocidad y con gran precisión. Posee sus propios registros (llamados registros de coma flotante) y los correspondientes buses para comunicarse directamente con la UC y el datapath.

En algunos modelos de microproceador este bloque es externo a la CPU (ver Figura 6), aunque las tendencias actuales son las de integrar en un solo chip el máximo de bloques para obtener mayor velocidad de proceso (ver Figura 7).


FIGURA 7.

Un factor determinante del rendimiento de un microprocesador en operaciones matemáticas de precisión es la distancia que existe entre la UC/Datapath y el bloque que forma el coprocesador matemático. Los tiempos de respuesta de un coprocesador interno en la propia CPU son mucho más óptimos que los de uno externo, puesto que la longitud de los buses de conexión son más cortos y el acceso a los registros de coma flotante es más rápido.

Cuando el microprocesador detecta una instrucción de programa quepertenece al conjunto de instrucciones matemáticas reconocidas, la UC le envía las órdenes de control a la información necesaria para que éste pueda efectuar la operación. Una vez obtenga el resultado, el copro avisa a la UC y envía al datapath el dato calculado. Durante el tiempo que el copro está calculando, la UC y el Datapath pueden seguir ejecutando las instrucciones siguientes.


Funcionamiento interno del micro

Para empezar, intentemos deducir por nuestra cuenta qué partes necesita un microprocesador para realizar su principal tarea: Ejecutar instrucciones.

Para ello (y como es normal en la informática ;-)) propongo subdividir o descomponer la ejecución de una instrucción en pasos más simples. Estos pasos corresponden al desarrollo de la ejecución interna de una instrucción, una vez entra en el procesador, pasa por diversos procesos y llega al final de la misma. Para averiguar estos pasos podemos hacernos las siguientes preguntas sobre el micro:

- ¿De dónde extrae la instrucción a ejecutar?
- ¿Cómo sabe de qué instrucción se trata?
- ¿Dónde procesa la información?
- ¿De dónde extrae los datos?
- ¿Dónde guarda el resultado de las instrucciones?

Las respuestas a estas preguntas nos va a permitir encontrar 5 pasos consecutivos que son comunes en la ejecución de instrucciones de cualquier tipo. Empleemos un caso concreto, por ejemplo, queremos sumar dos números con la siguiente instrucción:

ADD R2,R0

Esta instrucción suma el número que contienen el registro R2 (un 7) al número contenido en el registro Ro (un 5), y por lo tanto, el resultado es 12 y lo deposita en R0. A la instrucción ADD la podemos llamar operación, y a los registros R2, R0 les llamaremos operandos.

- ¿De dónde extrae la instrucción a ejecutar?

Es evidente que, cuando cargamos un programa y lo ejecutamos, el primer paso es colocar el porgrama en memoria, es decir en una zona de almacenamiento donde el microprocesador puede acceder para leer las instrucciones de nuestro programa y ejecutarlas.

Por lo tanto, parece lógico pensar que el microprocesador ha de ir a buscar la instrucción ADD a la memoria, y así es, el primer paso que realiza nuestro micro es lo que se denomina: Búsqueda de la instrucción o "Instrution Fetch".

En el anterior artículo de Amiga Interno (AInFo #0 Noviembre/Diciembre 94) expliqué "a grosso modo" el protocolo que seguía el microprocesador para leer un dato de la memoria. Ahora vamos a repetirlo, profundizando un poco más, aunque no explicaré de nuevo que son los buses, registros...etc.

Para ir a buscar una instrucción a memoria es necesario indicar la dirección de la posición del dato al que vamos a acceder. Esta dirección la tiene que generar el microprocesador y transmitirla a la memoria.

Por lo tanto, ya necesitamos dos cosas: un registro donde almacenar la dirección de la instrucción (PC) y un bus que conecte el micro con la memoria (bus de direcciones).

Cuando la memoria recibe la dirección por el bus de direcciones, retorna el dato almacenado en dicha dirección, que en este caso es el código que identifica nuestra instrucción. Este código viaja por otro bus (el bus de datos) hasta el micro, el cual la lee y la almacena en un registro interno propio. A este registro interno le llamaremos IR o Registro de Instrucción. Al proceso de búsqueda de una instrucción en memoria lo llamaremos a partir de este momento "FETCH". Esta fase se muestra gráficamente en la figura 8.


FIGURA 8.

Ahora ya tenemos la instrucción que hay que ejecutar en el interior del micro, pero hay que determinar ¿de qué tipo de instrucción se trata?

Para reconocer la instrucción el microprocesador tiene almacenado en una memoria de sólo lectura (ROM) los códigos de las instrucciones que conoce. Si compara el código de la instrucción que existe en IR con su memoria, podrá determinar que se trata de una instrucción de suma, concretamente la ADD. Pero aún hay más, puesto que también necesita saber dónde están los operandos de la instrucción, es decir, el R2 y R0.


FIGURA 9.

Para ello se emplean varios bits de la instrucción, que también están almacenados en IR. (Ver figura 9, Formato de una instrucción).

A este segundo paso le llamaremos decodificación de la instrucción y le asignaremos esta función a un bloque: La unidad de control o UC. Más adelante veremos que la UC puede servir para muchas más cosas.


FIGURA 10.

- ¿De dónde extrae los operandos?

Después de la decodificación de la instrucción, ya sabemos qué operación hay que realizar y dónde se encuentran los operandos. En este caso es ADD y los operandos contenidos en los registros R0 y R2 han de sumarse. Para realizar operaciones matemáticas sencillas como la suma, resta, multiplicación y división necesitamos un subbloque dedicado a ello, la Unidad Aritmético Lógica o ALU. Este subbloque pertenece a la unidad de proceso. (Ver figura 10)


- ¿Dónde procesa los datos?

La unidad de control ha de ordenar a la ALU que sume los registros R0 y R2 del banco de registros y que el resultado lo deposite en R0.

utilizaremos el esquema de la figura 4 para observar como la UC ordena a la ALU que sume, y como los operandos viajan por los buses para conseguir ese propósito. Si seguimos este esquema con atención veremos con facilidad todos los pasos y caminos que siguen las instrucciones dentro del datapath.

La primera orden que la UC envía es para los registros R0 y R2: tienen que depositar de forma simultánea su contenido en los buses A y B. Esta información viaja por estos buses hasta llegar a dos entradas distintas, el dato del bus A llega a un multiplexor que selecciona que dato pasa a OP A, y el dato del bus B llega directamente a la entrada OP B de la ALU. Lógicamente, la UC ordena al multiplexor que deje pasar la información del bus B y de esta forma la ALU obtiene los operandos fuente que ha de sumar. El paso siguiente es sumarlos, y para ello la UC activa las señales OPER que indican el tipo de operación que ha de realizar, en este caso una suma.

- ¿Dónde guarda el resultado?

Inmediatamente después, la ALU obtiene el resultado que sale por el bus C y acaba depositándose en el registro destino, el propio R2. (Su contenido anterior se pierde, claro está. Ahora contendrá el valor 12).

Una vez se ha almacenado el resultado, la instrucción acaba su ejecución, y el procesador inicia de nuevo la búsqueda de la siguiente instrucción a ejecutar.

- ¿Cómo sabe cual es la siguiente instrucción a ejecutado?

Existe un registro que almacena en todo momento la dirección de la siguiente instrucción a ejecutar. Ya lo hemos comentado brevemente en la fase de FETCH, el registro se llama Contador de Programa, o PC (del inglés, Program Counter). El procesador, generalmente después del FETCH, se encarga de incrementarlo de forma automática en una unidad, para que apunte a la siguiente posición de memoria. En esa posición se encuentra la siguiente instrucción que ha de ejecutarse.


FIGURA 11.

El PC (observar Figura 11) se utiliza únicamente para este propósito: marcar qué instrucción de nuestro programa se ejecutará después de que la actual llegue a su final. Para las instrucciones de salto (JMP, BSR, JSR ect) es imprescindible el PC, puesto que como se puede deducir, con tan sólo cambiar el valor que contiene, cambiará también la dirección de la instrucción a ejecutar.

En consecuencia, si queremos saltar a una determinada parte de nuestro programa, por ejemplo, con la instrucción JMP 1000, la UC después de decodificarla y detectar que se trata de un salto, ordenará al PC que cargue el valor 1000. A partir de aquí, el siguiente FETCH será de la instrucción que está en esa dirección, la 1000.


FIGURA 12.

En realidad el funcionamiento conjunto de los bloques es mucho más complejo de lo que aquí exponemos, puesto que no tenemos en cuenta algunos aspectos en los que no profundizaremos, como pueden ser búsqueda de los operandos en memoria, modos de direccionamiento, formatos diferentes de los códigos de operación, instrucciones de salto, retorno de salto, manejo de la pila, etc...

Sin embargo, los 5 pasos básicos de ejecución de una instrucción (ver figura 12) que hemos explicado, son generalmente los mismos en todos los procesadores. Hagamos, para acabar este punto, un rápido resumen de ellos:

IF 1- Búsqueda de la instrucción en memoria principal.
DE 2- Decodificación del código de operación contenidos en IR
OF 3- Búsqueda de los operandos fuente en el BR o memoria (si los hay)
EX 4- Ejecución de la instrucción en el datapath
WB 5- Salvar el resultado en el banco de registros o memoria


4- ¿Cómo se relaciona con los demas componentes?

. Manejo entrada/salida
- Interrupciones

Hasta ahora hemos comentado algunos aspectos internos del microprocesador, pero en ningún momento se ha hablado de cómo interactúa con otros componentes. En el ordenador existen otros bloques que se dedican a otras muchas tareas como pueden ser manejo de entrada/salida de datos al exterior, controlar periféricos o cualquier otra función de esta índole que no dependa exclusivamente del microprocesador.


FIGURA 13.

Estos componentes están conectados a los buses de datos, direcciones y control del microprocesador, tal y como muestra la figura 13.

En el microprocesador modelo que estamos empleando, existen dos formas de comunicarse con otros componentes:

* Mediante instrucciones de ensamblador dedicadas exclusivamente al manejo de la entrada/salida de datos. Este sistema emplea un identificador de dispositivo y un registro implícito. El primero le sirve al microprocesador para avisar al dispositivo correspondiente que esté atento, porque se le enviará un dato a continuación. Así, por ejemplo, la instrucción OUTPORT (400,3,2) enviará por el bus de direcciones un 400, que indicará al dispositivo cuyo número de identificación sea el mismo que ha de leer del bus de datos el valor 3 y depositarlo en su registro 2. También puede darse la instrucción INPORT (R0,3,300), que leerá un dato del registro 3 del dispositivo que se indentifique con un 300 y lo enviará por el bus de datos al microprocesador (ver figura 14).


FIGURA 14.

FIGURA 15.

* Mediante un esquema de memoria que permite acceder a los dispositivos de E/S como si se tratara con posiciones de memoria. En realidad son registros de control y datos de los propios dispositivos, solapadas en el espacio de direcciones del procesador. Este mecanismo se llama "dispositivo de entrada/salida mapeados en memoria" (ver figura 15).

Un ejemplo nos ayudará a entender este mecanismo:

Deseamos leer la posición en pantalla del puntero del ratón. Si utilizáramos E/S no mapeada en memoria, la instrucción INPORT leería el registro del interfaz del puerto del ratón encargado de almacenar las coordenadas. Sin embargo, si disponemos de E/S mapeada en memoria, obtenemos el valor leyendo la posición de memoria asignada a almacenar en todo momento las coordenadas. Por ejemplo, si $20000 fuera la dirección de esa posición y si quisiéramos leer su contenido, con la instrucción MOVE $20000, D0 ya dispondríamos de las coordenadas en el registro D0.


FIGURA 16.

Otro tema a tratar de forma breve es el mecanismo empleado por el microprocesador para sincronizar de alguna forma el envío o recepción de datos externos. Los componentes que necesiten avisar al procesador de que una actividad ha terminado o se ha iniciado, o del suceso de un evento particular, emplean un mecanismo denominado "interrupción". El componente que quiere avisar ha de activar una señal contenida en el bus de control, para que a continuación el microprocesador atienda a esa señal e "interrumpa" las actividades que estaba realizando.

La forma más común de atención a las interrupciones es mediante la ejecución de una rutina que la trate y actúe en consecuencia. El procedimiento es sencillo y lógico: (Observar figura 16)

1- El procesador está ejecutando un programa.

2- En un momento cualquiera, un dispositivo de control de periféricos quiere avisar al procesador. Por ejemplo, avisa de que un disco ha sido introducido en la unidad 0.

3- El dispositivo envía una señal al microprocesador, avisándole de la situación.

4- El microprocesador detecta esta señal de aviso e interrumpe el código que estaba ejecutando.

5- Salta a ejecutar una rutina que maneje la interrupción, por ejemplo, que lea el nombre del disco y dé un mensaje por pantalla de que un disco ha sido introducido.

6- El procesador retorna de la rutina de servicio a la interrupción (RSI) y continúa ejecutando el programa en el mismo punto que lo dejó.

Existen varios tipos de interrupciones, basadas en el componente que las emite y en la tarea que realizan. Para cada tipo de interrupción existen una rutina de servicio (RSI) que la atiende.

No entraremos en más detalles sobre el sistema de E/S, ya que en un próximo artículo hablaremos exclusivamente de él. Ahora solamente hemos apuntado la existencia de esos dos tipos de acceso mediante los cuales el microprocesador se comunica con los dispositivos externos a él y por otra parte, del mecanismo de interrupciones utilizado para avisar al microprocesador de ciertos eventos.

Finalizamos por ahora el primer artículo de la serie, a modo de resumen podemos decir que hemos comentado qué es un microprocesador, hemos entrado en sus bloques principales y en su funcionamiento interno.

En el próximo trataremos de los tipos de microprocesadores que existen actualmente en el mercado y ventajas/desventajas de la tecnología RISC y CISC.

También comentaremos las técnicas utilizadas para mejorar el rendimiento del procesador, como pueden ser segmentación, replicar unidades funcionales, impacto de la memoria primaria cache, etc.


Envía esta página web a un amigo:
Esta opción está desactivada temporalmente, rogamos disculpen las molestias

Volver a la página anterior

Al menú principal