6.1. Historia de los microprocesadores.
Los microprocesadores surgieron como producto de la evolución tecnológica de dos ramas específicas: la computación y los semiconductores. Ambos tuvieron sus inicios a mediados del siglo XX, en el contexto de la Segunda Guerra Mundial, con la invención del transistor, con el que se reemplazó a los tubos al vacío.
A partir de entonces, se usó el silicio para generar circuitos electrónicos simples, dando pie posteriormente (el inicio de la década de 1960) a la creación de los primeros circuitos digitales: Lógica Transistor-Resistor (RTL), Lógica Transistor Diodo (DTL), Lógica Transistor-Transistor (TTL) y Lógica Complementada Emisor (ECL).
El siguiente paso hacia los microprocesadores sería la invención de los circuitos integrados (SSI y MSI), permitiendo así el inicio de la agregación y miniaturización de componentes. Las primeras calculadoras en emplear esta tecnología requerían sin embargo entre 75 y 100 circuitos integrados, lo cual era impráctico. Y así, el siguiente paso en la reducción de la arquitectura computacional fue el desarrollo de los primeros microprocesadores.
El primer procesador fue el Intel 4004 fabricado en 1971. Contenía 2300 transistores y con sus apenas 4 bits de capacidad podía realizar 60.000 operaciones lógicas por segundo, en una frecuencia de reloj de 700 Hz. A partir de entonces, la carrera tecnológica invirtió en el desarrollo de mejores y más potentes microchips: de 8 bits, 16 bits, 32 bits y 64 bits, alcanzando en la actualidad frecuencias superiores a los 3 GHz.
6.2. Tipos de Microprocesadores.
Existen diversos tipos de microprocesadores en el mercado. Son pequeños dispositivos que sirven para ordenar los procesos que se realizan en los ordenadores. Estas actividades van desde resolución de problemas aritméticos hasta procesamiento de información. Consideran presentación de datos relacionados con las diversas tareas que debe realizar un ordenador. Los pequeños dispositivos suelen agruparse en dos tipos o partes
Uno es llamado la UC o unidad de control, se encarga de distribuir la cantidad de datos diversos a través del ordenador. La segunda parte está compuesta por los llamados ALU o unidades de procesamiento aritmético. La cual desarrolla procesos para ejecutar diversa operaciones lógicas y de aritmética.
Microprocesadores mas usados
En el mercado de los microprocesadores los más usados son los Intel y los AMD. Para los fabricantes de ordenadores representan los de mejor calidad, entre ambos. Se distribuyen las marcas de los mayores fabricantes de equipos de computación, veamos.
Intel
Es una compañía dedicada a la fabricación de microprocesadores y otros componentes de computación y redes. Se considera la de mayor prestigio y más popular en el mundo. Es seleccionada por diversas empresas fabricantes de ordenadores. La idea es obtener diversos tipos de microprocesadores que serán incluidos en diversos equipos.
Los procesadores Core 2 duo
Son procesadores que tienen más de un núcleo. Fabrican versiones que cuentan hasta con 8 núcleos es decir permiten procesar información de manera muy rápida. Se utilizan generalmente para trabajos y procesos que requieren de mucha
En tiempos recientes, aparecen versiones que hasta cuentan con 6 y hasta 8 núcleos. Ideales para el multitasking. Cuando se les agrega una tarjeta gráfica potente. lLgran ser de gran potencia y se usan para la minería de monedas virtuales en la red
Celeron
Utilizan microprocesadores Intel, con el objeto de elaborar equipos más económicos. Es decir tienen velocidad de transmisión un poco más lenta. Sin embargo tiene buena demanda en el mercado de las computadoras. Distribuyen sus productos a nivel mundial.
Pentium M
Estos procesadores son pequeños, usados para laptops y ordenadores pequeños de escritorios. Tiene la cualidad de utilizar en espacios pequeños varios módulos junto a los microprocesadores. Permiten desplazar en espacio y rendimiento a los ordenadores tradicionales grandes y separados.
AMD
Esta empresa a igual que Intel se encarga de fabricar diversos tipos de microprocesadores. Aunque sus productos son de calidad hasta el momento no tiene la envergadura de su principal competidor. Algunos fabricantes de ordenadores manifiestan que calientan demasiado.
Otros sin embargo prefieren trabajar con estos microprocesadores debido a su conformación de diseño y confiabilidad en el procesamiento de la información. La empresa distribuye estos tipos de microprocesadores a empresas ensambladores de ordenadores.
Fabrica además equipos sencillos parecidos a los de Pentium. Sin embargo ha tenido la oportunidad de colocar los procesadores en diversos mercados mundiales. Otra empresa que adapta los tipos de microprocesadores AMD es “Duron”. Trabaja simultáneamente con esta y es equivalente a los procesadores Celeron con los que traba Intel.
Esta empresa opera y desarrolla procesadores en función de las necesidades de los clientes, de manera que la solicitud de pedidos a AMD, se hacen con dispositivos que tengan especificaciones únicas.
Otros fabricantes establecidos en Asia por ejemplo mantienen el desarrollo de los tipos de microprocesadores en todo el continente. Prefieren trabajar con los fabricantes de procesadores en ese lado del mundo. Sus productos tienen la misma calidad de Intel y AMD. Opera con especificaciones de arquitectura y diseño totalmente diferentes.
6.3. Organización del microprocesador.
Formato de Microinstrucciones
La función de la unidad de control es iniciar secuencias de microoperaciones. La cantidad de tipos de operaciones diferentes que están disponibles en un sistema dado es finita.
Cuando se generan señales de control por medio de técnicas de diseño lógico convencional se dice que la unidad de control es por circuitería. La función de control que especifica una microoperación es una variable binaria.
La microinstrucción es una palabra binaria con tantos bits como señales de control existan en el microprocesador.
- Un bit a “cero” indica que la señal no debe activarse,
- Un bit a “uno” indica lo contrario.
Los bits de una microinstrucción se organizan, conceptualmente, en campos. Cada campo representa un conjunto de señales eléctricas relacionadas entre si.
6.4. Ciclo de ejecución de las instrucciones.
El ciclo de ejecución es la secuencia de operaciones que se hace para ejecutar cada una de las instrucciones. Lo dividimos en cuatro fases principales
Las fases principales del ciclo de ejecución son comunes a la mayoría de los computadores actuales y las diferencias principales se encuentran en el orden en el que se realizan algunas de las operaciones de cada fase o en el que se realizan algunas de las operaciones en otras fases.
En cada fase se incluyen una o varias operaciones que hay que hacer. Para llevar a cabo estas operaciones, nombradas microoperaciones, es necesaria una compleja gestión de las señales de control y de la disponibilidad de los diferentes elementos del procesador, tarea realizada por la unidad de control.
Veamos las operaciones principales que se realizan habitualmente en cada una de las cinco fases del ciclo de ejecución de las instrucciones:
Fase 1. Lectura de la instrucción: Las operaciones realizadas en esta fase son las siguientes:
a) Leer la instrucción. Cuando leemos la instrucción, el registro contador del programa (PC) nos indica la dirección de memoria donde está la instrucción que hemos de leer. Si el tamaño de la instrucción es superior a la palabra de la memoria, hay que hacer tantos accesos a la memoria como sean necesarios para leerla completamente y cargar toda esta información en el registro de instrucción (IR).
b) Descodificar la instrucción. Se identifican las diferentes partes de la instrucción para determinar qué operaciones hay que hacer en cada fase del ciclo de ejecución. Esta tarea la realiza la unidad de control del procesador leyendo la información que hemos cargado en el registro de instrucción (IR).
c) Actualizar el contador del programa. El contador del programa se actualiza según el tamaño de la instrucción, es decir, según el número de accesos a la memoria que hemos hecho para leer la instrucción.
Las operaciones de esta fase son comunes a los diferentes tipos de instrucciones que encontramos en el juego de instrucciones.
Fase 2. Lectura de los operandos fuente: Esta fase se debe repetir para todos los operandos fuente que tenga la instrucción.
Actualización del PC
La actualización del contador del programa es una operación que se puede encontrar en otras fases de la ejecución de la instrucción.
Las operaciones que hay que realizar en esta fase dependen del modo de direccionamiento que tengan los operandos: para los más simples, como el inmediato o el directo a registro, no hay que hacer ninguna operación; para los indirectos o los relativos, hay que hacer cálculos y accesos a memoria. Si el operando fuente es implícito, vamos a buscar el dato en el lugar predeterminado por aquella instrucción.
Es fácil darse cuenta de que dar mucha flexibilidad a los modos de direccionamiento que podemos utilizar en cada instrucción puede afectar mucho al tiempo de ejecución de una instrucción.
Fase 3. Ejecución de la instrucción y almacenamiento del operando de destino (resultado)
Las operaciones que hay que realizar en esta fase dependen del código de operación de la instrucción y del modo de direccionamiento que tenga el operando destino.
Ejecución de la instrucción:
Las operaciones que se llevan a cabo son diferentes para cada código de operación. Durante la ejecución, además de obtener el resultado de la ejecución de la instrucción, se pueden modificar los bits de resultado de la palabra de estado del procesador.
Almacenamiento del operando de destino (resultado)
La función básica es recoger el resultado obtenido durante la ejecución y guardarlo en el lugar indicado por el operando, a menos que el operando sea implícito, en cuyo caso se guarda en el lugar predeterminado por aquella instrucción. El operando de destino puede ser uno de los operandos fuente; de esta manera, no hay que repetir los cálculos para obtener la dirección del operando.
Fase 4. Comprobación de interrupciones
Los modos de direccionamiento se explican en el apartado 2 del módulo "Juego de instrucciones".
Las interrupciones son el mecanismo mediante el cual un dispositivo externo al procesador puede interrumpir el programa que está ejecutando el procesador con el fin de ejecutar otro programa (una rutina de servicio a la interrupción o RSI) para dar servicio al dispositivo que ha producido la interrupción.
En esta fase se verifica si se ha activado alguna línea de petición de interrupción del procesador en el transcurso de la ejecución de la instrucción. Si no se ha activado ninguna, continuamos el proceso normalmente; es decir, se acaba la ejecución de la instrucción en curso y se empieza la ejecución de la instrucción siguiente. En caso contrario, hay que transferir el control del procesador a la rutina de servicio de interrupción que debe atender esta interrupción y hasta que no se acabe no podemos continuar la ejecución de la instrucción en curso.
6.4.1. Segmentación de las instrucciones.
El objetivo de la segmentación es ejecutar simultáneamente diferentes etapas de distintas instrucciones, lo cual permite aumentar el rendimiento del procesador sin tener que hacer más rápidas todas las unidades del procesador (ALU, UC, buses, etc.) y sin tener que duplicarlas.
La división de la ejecución de una instrucción en diferentes etapas se debe realizar de tal manera que cada etapa tenga la misma duración, generalmente un ciclo de reloj. Es necesario añadir registros para almacenar los resultados intermedios entre las diferentes etapas, de modo que la información generada en una etapa esté disponible para la etapa siguiente.
Ejemplo de segmentación de instrucciones
La segmentación es como una cadena de montaje. En cada etapa de la cadena se lleva a cabo una parte del trabajo total y cuando se acaba el trabajo de una etapa, el producto pasa a la siguiente y así sucesivamente hasta llegar al final.
Si hay N etapas, se puede trabajar sobre N productos al mismo tiempo y, si la cadena está bien equilibrada, saldrá un producto acabado en el tiempo que se tarda en llevar a cabo una de las etapas. De esta manera, no se reduce el tiempo que se tarda en hacer un producto, sino que se reduce el tiempo total necesario para hacer una determinada cantidad de productos porque las operaciones de cada etapa se efectúan simultáneamente.
Veámoslo gráficamente. Presentamos un mismo proceso con instrucciones de tres etapas, en el que cada etapa tarda el mismo tiempo en ejecutarse, resuelto sin segmentación y con segmentación:
Son necesarias nueve etapas para ejecutar las tres instrucciones.
6.5. Registros.
Los registros son, básicamente, elementos de memoria de acceso rápido que se encuentran dentro del procesador. Constituyen un espacio de trabajo para el procesador y se utilizan como un espacio de almacenamiento temporal. Se implementan utilizando elementos de memoria RAM estática (static RAM). Son imprescindibles para ejecutar las instrucciones, entre otros motivos, porque la ALU solo trabaja con los registros internos del procesador.
El conjunto de registros y la organización que tienen cambia de un procesador a otro; los procesadores difieren en el número de registros, en el tipo de registros y en el tamaño de cada registro.
Una parte de los registros pueden ser visibles para el programador de aplicaciones, otra parte solo para instrucciones privilegiadas y otra solo se utiliza en el funcionamiento interno del procesador.
6.5.1. Registros de propósito general.
Los registros de propósito general son los registros que suelen utilizarse como operandos en las instrucciones del ensamblador. Estos registros se pueden asignar a funciones concretas: datos o direccionamiento. En algunos procesadores todos los registros se pueden utilizar para todas las funciones.
Los registros de datos se pueden diferenciar por el formato y el tamaño de los datos que almacenan; por ejemplo, puede haber registros para números enteros y para números en punto flotante.
6.5.2. Registros de instrucción.
Los dos registros principales relacionados con el acceso a las instrucciones son:
- Program counter (PC): registro contador del programa, contiene la dirección de la instrucción siguiente que hay que leer de la memoria.
- Instruction register (IR): registro de instrucción, contiene la instrucción que hay que ejecutar.
6.5.3. Registros de acceso a memoria.
Hay dos registros necesarios para cualquier operación de lectura o escritura de memoria:
Memory address register (MAR): registro de direcciones de memoria, donde ponemos la dirección de memoria a la que queremos acceder.
Memory buffer register (MBR): registro de datos de memoria; registro donde la memoria deposita el dato leído o el dato que queremos escribir.
La manera de acceder a memoria utilizando estos registros es la siguiente:
1. En una operación de lectura, se realiza la secuencia de operaciones siguiente:- El procesador carga en el registro MAR la dirección de la posición de memoria que se quiere leer.
- El procesador coloca en las líneas de direcciones del bus el contenido del MAR y activa la señal de lectura de la memoria.
- El MBR se carga con el dato obtenido de la memoria.
2. En una operación de escritura, se realiza la secuencia de operaciones siguiente:
- El procesador carga en el registro MBR la palabra que quiere escribir en la memoria.
- El procesador carga en el registro MAR la dirección de la posición de memoria donde se quiere escribir el dato.
- El procesador coloca en las líneas de direcciones del bus el contenido del MAR y en las líneas de datos del bus, el contenido del MBR, y activa la señal de escritura de la memoria.
6.5.4. Registros de estado y de control.
- Bit de cero: se activa si el resultado obtenido es 0.
- Bit de transporte: se activa si en el último bit que operamos en una operación aritmética se produce transporte; también puede deberse a una operación de desplazamiento.
- Bit de desbordamiento: se activa si la última operación ha producido un resultado que no se puede representar en el formato que estamos utilizando.
- Bit de signo: se activa si el resultado obtenido es negativo.
- Bit de interrupción: indica si las interrupciones están habilitadas o inhibidas.
- Bit de modo de operación: indica si la instrucción se ejecuta en modo supervisor o en modo usuario. Hay instrucciones que solo se ejecutan en modo supervisor.
- Nivel de ejecución: indica el nivel de privilegio de un programa en ejecución. Un programa puede desalojar el programa que se ejecuta actualmente si su nivel de privilegio es superior.
6.6. Unidad aritmética y lógica.
La unidad aritmética y lógica o ALU (2) es un circuito combinacional capaz de realizar operaciones aritméticas y lógicas con números enteros y también con números reales. Las operaciones que puede efectuar vienen definidas por el conjunto de instrucciones aritméticas y lógicas de las que dispone el juego de instrucciones del computador.
Veamos primero cómo se representan los valores de los números enteros y reales con los que puede trabajar la ALU y, a continuación, cuáles son las operaciones que puede hacer.
1) Números enteros. Los números enteros se pueden representar utilizando diferentes notaciones, entre las cuales hay signo magnitud, complemento a 1 y complemento a 2. La notación más habitual de los computadores actuales es el complemento a 2 (Ca2).
Todas las notaciones representan los números enteros en binario. Según la capacidad de representación de cada computador, se utilizan más o menos bits. El número de bits más habitual en los computadores actuales es de 32 y 64.
2) Números reales. Los números reales se pueden representar básicamente de dos maneras diferentes: en punto fijo y en punto flotante. El computador es capaz de trabajar con números reales representados en cualquiera de las dos maneras.
En los primeros computadores se implementaba la ALU como una única unidad funcional capaz de hacer las operaciones descritas anteriormente sobre números enteros. Esta unidad tenía acceso a los registros donde se almacenaban los operandos y los resultados de cada operación.
6.7. Unidad de control.
6.7.1. Microoperaciones.
6.7.1.1. Tipos de microoperaciones.
6.7.1.2. Ciclo de ejecución.
6.7.2. Señales de control y temporización.
Hemos visto que cada microoperación hace una tarea determinada dentro del ciclo de ejecución de una instrucción. A pesar de la simplicidad de estas microoperaciones, llevarlas a cabo implica la activación de un conjunto de señales de control.
De manera general, entendemos una señal de control como una línea física que sale de la unidad de control y va hacia uno o más dispositivos del computador por los que circula una señal eléctrica que representa un valor lógico 0 o 1 y según cuáles sean los dispositivos a los que está conectado, es activo por flanco o por nivel.
La mayor parte de los computadores tienen un funcionamiento síncrono, es decir, la secuencia de operaciones es gobernada por una señal de reloj. El período de esta señal de reloj (el tiempo que tarda en hacer una oscilación entera), llamado también ciclo de reloj, determina el tiempo mínimo necesario para hacer una operación elemental en el computador. Consideraremos que esta operación elemental es una microoperación.
6.7.3. Unidad de control cableada.
Hasta ahora, hemos visto la unidad de control desde un punto de vista funcional: entradas, salidas, tareas que hace y cómo interacciona con el resto de los elementos del computador. A continuación nos centraremos en las técnicas de diseño e implementación de la unidad de control.
Estas técnicas se pueden clasificar en dos categorías:
- Control cableado.
- Control microprogramado.
La unidad de control cableada es, básicamente, un circuito combinacional que recibe un conjunto de señales de entrada y lo transforma en un conjunto de señales de salida que son las señales de control. Esta técnica es la que se utiliza típicamente en máquinas RISC.
6.7.3.1. Organización de la unidad de control cableada.
En el diagrama siguiente se muestran los módulos que forman la unidad de control y la interconexión entre unos y otros.
6.8. Unidad de control microprogramada.
6.8.1. Microinstrucciones.
6.8.2. Organización de una unidad de control microprogramada.
6.8.3. Funcionamiento de la unidad de control microprogramada.
Las dos tareas que hace la unidad de control microprogramada son la secuenciación de las microinstrucciones y la generación de las señales de control.
Secuenciación de las microinstrucciones
La dirección de la microinstrucción siguiente la determinan estos factores:
- El registro de instrucción, que solo se utiliza para determinar el microprograma propio de cada instrucción.
- El registro de estado, que solo se utiliza cuando hay que romper la secuencia normal de ejecución de un programa, como sucede cuando se han de evaluar las condiciones en una instrucción de salto condicional.
- El campo de condición de la microinstrucción. Es el factor que se utiliza más frecuentemente. Este es el factor que hay que evaluar para saber si se debe continuar en secuencia o hacer una bifurcación.
Formatos del campo de dirección y condición de la microinstrucción
El campo de dirección y condición de las microinstrucciones puede tener los formatos siguientes:
1) Dos campos explícitos. En la microinstrucción se especifican dos direcciones explícitas: la dirección de la microinstrucción que sigue en secuencia y una dirección de bifurcación. Según si se cumple o no la condición, se carga una dirección o la otra en el registro de direcciones de control.
Con esta técnica no se necesita una lógica para incrementar la dirección actual y pasar a la microinstrucción siguiente que sigue en secuencia pero requiere más bits que otros formatos.
Ejemplo de circuito generador de direcciones con dos campos explícitos
2) Un campo explícito. En la microinstrucción se especifica explícitamente una dirección: cuando se cumple la condición indicada, se carga el registro de direcciones de control con la dirección explícita. Cuando no se cumple la condición, se carga el registro de direcciones de control con el valor incrementado del registro de direcciones de control.
Ejemplo de circuito generador de direcciones con un campo explícito
3) Microinstrucciones de formato variable. En este formato solo están el campo de condición y el campo de palabra de control. En las microinstrucciones de salto, se utiliza una parte del campo de la palabra de control como dirección de bifurcación, lo que obliga a utilizar un bit de la microinstrucción para indicar si es necesario interpretar esta parte del campo de la palabra de control como la dirección de la microinstrucción siguiente o como parte de la palabra de control.
La ventaja principal de este método es que nos permite reducir el tamaño de las microinstrucciones y no complica excesivamente la lógica de control de la unidad de control.
Generación de las señales de control
Generalmente las unidades de control microprogramadas no utilizan un formato totalmente horizontal de la palabra de control, sino un cierto nivel de codificación para ahorrar espacio en la memoria de control.
Lo más habitual es agrupar los bits de la palabra de control en campos; cada campo contiene un código que, una vez descodificado, representa un conjunto de señales de control.
Un campo con k bits puede contener 2k códigos diferentes. Cada código simboliza un estado diferente de las señales de control que representa e indica, para cada una, la activación o la desactivación.
6.8.4. Comparación: unidad de control microprogramada y cableada.
A continuación presentamos las ventajas e inconvenientes de la unidad de control microprogramada respecto a la unidad de control cableada.
Las ventajas son:
- Simplifica el diseño.
- Es más económica.
- Es más flexible:
- Adaptable a la incorporación de nuevas instrucciones.
- Adaptable a cambios de organización, tecnológicos, etc.
- Permite disponer de un juego de instrucciones con gran número de instrucciones. Solo hay que poseer una memoria de control de gran capacidad.
- Permite disponer de varios juegos de instrucciones en una misma máquina (emulación de máquinas).
- Permite ser compatible con máquinas anteriores de la misma familia.
- Permite construir máquinas con diferentes organizaciones pero con un mismo juego de instrucciones.
Los inconvenientes son:
- Es más lenta: implica acceder a una memoria e interpretar las microinstrucciones necesarias para ejecutar cada instrucción.
- Es necesario un entorno de desarrollo para los microprogramas.
- Es necesario un compilador de microprogramas.
6.9. CISC y RISC.
En el diseño del procesador hay que tener en cuenta diferentes principios y reglas, con vistas a obtener un procesador con las mejores prestaciones posibles.
Las dos alternativas principales de diseño de la arquitectura del procesador son las siguientes:
Computadores CISC (4) , cuyas características son:
- El formato de instrucción es de longitud variable.
- Dispone de un gran juego de instrucciones, habitualmente más de cien, para dar respuesta a la mayoría de las necesidades de los programadores.
- Dispone de un número muy elevado de modos de direccionamiento.
- Es una familia anterior a la de los procesadores RISC.
- La unidad de control es microprogramada; es decir, la ejecución de instrucciones se realiza descomponiendo la instrucción en una secuencia de microinstrucciones muy simples.
- Procesa instrucciones largas y de tamaño variable, lo que dificulta el procesamiento simultáneo de instrucciones.
Computadores RISC (5) , que tienen las características siguientes:
- El formato de instrucción es de tamaño fijo y corto, lo que permite un procesamiento más fácil y rápido.
- El juego de instrucciones se reduce a instrucciones básicas y simples, con las que se deben implementar todas las operaciones complejas. Una instrucción de un procesador CISC se tiene que escribir como un conjunto de instrucciones RISC.
- Dispone de un número muy reducido de modos de direccionamiento.
- La arquitectura es de tipo load-store (carga y almacena) o registro-registro. Las únicas instrucciones que tienen acceso a memoria son LOAD y STORE, y el resto de las instrucciones utilizan registros como operandos.
- Dispone de un amplio banco de registros de propósito general.
- Casi todas las instrucciones se pueden ejecutar en pocos ciclos de reloj.
- Este tipo de juego de instrucción facilita la segmentación del ciclo de ejecución, lo que permite la ejecución simultánea de instrucciones.
- La unidad de control es cableada y microprogramada.
0 Comentarios