Tema: Estructura interna y funcionamiento del Procesador.
Objetivo: Comprender el funcionamiento interno de las unidades que
componen el procesasdor.
Los sistemas de cómputo basados en microprocesadores se componen de tres
bloques fundamentales, la Unidad Central de Procesamiento – CPU,
Dispositivos de memoria y Puertos de Entrada / Salida, de igual forma el
microprocesador está conformado por varios bloques, entre ellos están la
Unidad Aritmético – lógica (ALU), una Unidad de Control (UC) y un bloque o
matriz de registros.
Figura. Sistema de computo
La unidad de entrada es quien recibe información del mundo exterior, la
información es llevada hacia la unidad de memoria para ser procesada
posteriormente. La información luego es llevada desde la unidad central de
proceso o CPU, hacia circuitos o periféricos utilizando el bus de datos. La
unidad de memoria se encarga de almacenar los datos y los programas que
operan sobre esos datos, existen dos sistemas diferentes de memoria, la de
almacenamiento primario y la del almacenamiento secundario. La CPU obtiene
las instrucciones y los datos colocando una dirección en el bus de direcciones
para posteriormente ser transferidos a través del bus de datos cuando la CPU
lo solicite.
La memoria de almacenamiento primario se refiere a la memoria que
almacenan los programas que se van a ejecutar y los datos utilizados durante
la ejecución del programa.
La memoria secundaria es la encargada de almacenar grandes cantidades de
datos que no se requieren con frecuencia, este tipo de dispositivo son los
discos duros y discos 3,5”. También se distinguen tres categorías, la ROM (Red
Only Memory) o memoria de solo lectura donde se almacenan cierto tipo de
programas como la BIOS, la memoria RAM (Random Access Memory) o
memoria de lectura y escritura, donde se almacenan datos que los programas
en ejecución van generando, como tercera categoría se encuentra la “cache”
con tiempo de acceso muy rápido muy cercana al núcleo del procesador.
La ejecución de un programa se realiza de forma secuencial, las instrucciones
almacenadas en la memoria de programa modifican los datos almacenados en
la memoria u obtenidos a través de un dispositivo de entrada, los datos que se
obtienen después del procesamiento pueden ser almacenados en la memoria o
ser enviados a los periféricos de salida utilizando el bus de datos, la CPU utiliza
el bus de control para establecer la lectura y/o escritura de los datos y con el
bus de direcciones determina el destino de los datos.
La Unidad Central de Proceso - CPU
En la práctica la Unidad Central de Proceso o CPU se encuentra en forma de
un circuito integrado llamado microprocesador. El microprocesador es un
circuito digital que acepta o lee datos aplicados a un cierto número de líneas de
entrada, los procesa de acuerdo a las instrucciones secuenciales de un
programa almacenado en su memoria y suministra o escribe los resultados del
proceso con cierto número de salida. La evolución de los microprocesadores ha
hecho que evoluciones los computadores ampliando sus prestaciones,
servicios, capacidad y facilidad de interacción con el medio. Los
microprocesadores se aplican a otras situaciones de control y supervisión en el
control industrial, maquinaria, motores, telemetría, robótica, automatización
entre otros.
Los datos de entrada pueden provenir de interruptores, sensores, convertidores
A/D, teclados, etc, los datos de salida son dirigidos a display, LCD, CTR,
convertidores D/A, impresoras, etc. El soporte físico de las instrucciones del
programa es la memoria, la cual almacena los datos para que sean
procesados, los niveles lógicos (unos y ceros) en las líneas de salida de un
microprocesador no solo dependen del programa, también dependen de la
historia o estado anterior de las señales de entrada. Como se observa es clave
la cantidad de pines o conexiones de entras/salida que tenga el
microprocesador para interactuar con los periféricos y la memoria por eso la
mayoría de microprocesadores utilizan las mismas líneas para entrada y salida.
Las líneas de control sincronizan las operaciones con los componentes
externos conectados y ejercen un control global de los buses de datos y
direcciones.
Los programas realizan funciones o aplicaciones limitadas por la imaginación
del programador y la capacidad del dispositivo, el programa se ejecuta debe
alojarse en determinadas posiciones de memoria y ser escrito en un lenguaje
que la CPU entienda, es decir, lenguaje binario. La CPU entonces lee de forma
secuencial la lista de instrucciones, las interpreta y controla la ejecución de
cada una de ellas, para ejecutar cada instrucción la CPU realiza los siguientes
pasos:
1. Leer de la memoria la instrucción a ejecutar y guardarla en un registro
interno de la CPU.
2. Identificar la instrucción que acaba de leer.
3. Comprobar si la instrucción necesita datos que se encuentran en memoria, si
es el caso, determina la localización de los mismos.
4. Buscar los datos en memoria y guardarlos en registro dentro de la CPU.
5. Ejecutar la instrucción.
6. El resultado puede ser almacenado en memoria o retenido esperando la
siguiente instrucción o incluso generar comunicación con otros elementos
externos a la CPU.
7. Comienza un nuevo ciclo empezando con el primer paso.
La ejecución de cada instrucción implica un movimiento de datos a partir de
pulsos electrónicos que siguen una secuencia y orden establecido por una
señal generada en un circuito que genera pulsos periódicos, este circuito
denominado “reloj”, es simple en su construcción, pero vital para el
funcionamiento del microprocesador.
Arquitectura del microprocesador
La arquitectura en un microprocesador se refiere a las unidades estructurales
que lo conforman, su diseño y organización, es difícil definir un modelo de
microprocesador pues cada uno tiene una lógica de funcionamiento propia. Las
principales unidades básicas de un microprocesador son la Unidad Aritmética y
Lógico – ALU, la matriz de registros y la Unidad de Control. Aunque existen
otras unidades auxiliares y secciones que trabajan en conjunto con las
anteriores para formar un microprocesador especifico.
Figura. Unidades Básicas de un MP
Sin importar la forma física que tome la CPU, su operación fundamental es
ejecutar una secuencia de instrucciones denominadas “programa”, utilizando
cuatro pasos básicos leer, decodificar, ejecutar, y escribir.
Figura. Pasos en la ejecución de una instrucción
El microprocesador junto con sus unidades básicas realiza las principales
tareas en un sistema de cómputo:
1. Transferencia de datos a y desde la memoria y a dispositivos o periféricos
I/O.
2. Operaciones aritméticas y lógicas para ello el microprocesador cuenta con
una unidad interna aritmético – lógica (hace sumas y comparaciones y en base
a estas realiza las demás operaciones, complementos, restas, etc).
3. Un control sobre un flujo de un programa, este programa se está ejecutando
y el microprocesador esta accionando sobre el programa comunicación con la
memoria.
El poder del microprocesador radica en:
1. La capacidad de ejecutar millones de instrucciones por segundo (MIPs), que
provienen de un programa o software almacenado en la memoria de programa.
2. La capacidad para tomar decisiones simples basadas en hechos numéricos,
como signos, comparaciones o resultados lo que permite modificar el flujo del
programa.
Buses en los microprocesadores
A partir del desarrollo de la arquitectura Von Newman, se introdujo en los
microprocesadores el concepto de programa almacenado y la ejecución
secuencial del programa almacenado, para que el microprocesador pueda
comunicarse con los diversos periféricos que tiene existen unos medios
llamados buses.
Los buses permiten la conexión con los periféricos incluida la memoria y
permiten la transmisión de la información, físicamente los buses consisten en
líneas conductoras que permiten la circulación de los pulsos eléctricos.
Generalmente el número de líneas de entrada es igual al número de líneas de
salida, este número define la longitud de la palabra de datos del
microprocesador que comúnmente es 4, 8, 16, 32 y 64 bits aunque la unidad
básica de almacenamiento y procesamiento es de un Byte.
Bus de datos, es el encargado de llevar datos e instrucciones hacia y desde el
microprocesador, es un bus bidireccional los datos varían en tamaño desde 8 a
64 bits, por el bus de datos las instrucciones y los datos son transferidos al
microprocesador y los resultados de una operación son enviados desde el
microprocesador.
Bus de direcciones, contiene la información digital que envía el
microprocesador a la memoria y demás dispositivos direccionales del sistema
para seleccionar una posición de memoria, una unidad de entrada/salida o un
registro particular de la misma, la cantidad de líneas del bus de direcciones
determina la capacidad máxima de la memoria que puede direccionar el
sistema basado en microprocesador. Los primeros microprocesadores
utilizados en sistemas de cómputo tenían 16 líneas de direcciones con lo que
podían direccionar hasta 216=210*26=1024 * 64 = 65536 = 64KB.
Cuantos más bits tenga el bus de direcciones más capacidad de
direccionamiento de memoria tendrá el sistema, el número de líneas de
dirección se ha incrementado a 20, 24, 32 y 36 bits este último permite
direccionar:
236= 210*210*210*26=1024 * 1024 * 1024 * 1024 * 64 = 1K*1K*1K*1K*64 = 1M
* 1M * 64
236= 1G * 64 = 64 GB.
Bus de control, se utiliza para coordinar, sincronizar y comunicarse con los
dispositivos externos, también se utiliza para insertar estados de espera para
los dispositivos mas lentos y evitar congestión en el bus, contiene líneas que
seleccionan la memoria o dispositivo E/S y los habilita para que haga
operaciones de lectura o escritura:
• control de lectura de memoria.
• control de escritura de memoria.
• control de lectura en un puerto.
• control de escritura en un puerto.
Unidad Aritmético lógica – ALU
Los datos en el ALU se presenten en registros, posteriormente en ellos se
almacenan los resultados de las operaciones, estos registros son posiciones de
memoria temporales, internas en el microprocesador y conectados a la ALU,
los procesos aritméticos y lógicos pueden activar indicadores o también
llamadas banderas (flags), que son indicadores de estado el microprocesador,
normalmente estos indicadores son almacenados en un registro especial
dentro del microprocesador (registro de estado), por ejemplo cuando el
resultado de una operación es “cero” su indicador o flag de cero cambian su
estado.
La unidad de control proporciona las señales que gobiernan el funcionamiento
de la ALU y la transferencia de datos dentro y fuera de ella.
Esta unidad es la encargada de realizar las operaciones elementales de tipo
aritmético (generalmente sumas o restas) y de tipo lógico (generalmente
comparaciones).
Para realizar su función, consta de un banco de registros (BR), este bando esta
constituido por 8, 16 ó 32 registros de tipo general que sirven para situar datos
antes de cada operación, para almacenar datos intermedios en las operaciones
y para operaciones internas del procesador.
Figura 19. Interconexión de la ALU
Como se había establecido antes los datos que maneja la ALU tienen formato
de complemento a dos, haciendo más sencillo en trabajo y operaciones con
números negativos.
En general los bits restantes una operación que involucre números con signo
siguen lo establecido en la siguiente tabla.
RANGO DE VALORES -2n-1 a 2n-1-1
Nº de representaciones del
Una
cero
Ejecutar el complemento booleano de cada
Negación
bit y sumar 1 al patrón de bits resultante.
Las posiciones de bit extra se añaden a la
Ampliación de la longitud
izquierda, rellenándolas con el valor del bit
de bits
de signo original
Si se suman dos números de igual signo
Regla para el (ambos positivos o ambos negativos), hay
desbordamiento desbordamiento si, y sólo si, el resultado
tiene signo opuesto.
Para restar B de A, se toma el complemento
Regla para la resta
a dos de B y suma a A.
Figura 20. Representación con signo en la ALU
La representación del número cero tienen un bit de signo cero (0), una
magnitud cero y se identifica como. El costo de manipular números negativos
es la restricción de valores representables, por ejemplo para registros de 8 bits,
el valor máximo representable sin signo es de 00000000 a 11111111, o
equivalente a 255 en decimal, el numero con signo, en formato positivo no
puede ser mayor a 01111111 binario o 127 decimal, por cuanto el siguiente
numero binario valido seria 10000000 y al tener encendido el bit más
significativo es evidente que representa un numero negativo que
correspondería al -128. Entonces para representar con “n” bits el rango de
números positivos y negativos se establece como números positivos desde
cero hasta 2n-1-1, para los negativos se representan desde -1 hasta -2n-1.
Matriz de Registros
Un sistema de cómputo exige de la CPU la realización de varias funciones,
captar instrucciones, interpretar instrucciones, captar datos, procesar datos y
escribir datos, para que un microprocesador pueda realizar las tareas en un
sistema de cómputo, es necesario que la CPU almacene alguna información de
forma temporal. Esta información debe contener en un almacenamiento
temporal la instrucción a ejecutar, los datos sobre los que debe operar, la
dirección de la instrucción o dato a cargar en la ALU, las direcciones de salto o
llamado, de forma que pueda saber dónde ir a buscar la siguiente instrucción.
Los anterior hace necesario que la CPU requiera de una memoria interna, es
así como en la CPU, existe un conjunto de registros funcionando como un nivel
de memoria que está por encima de la memoria principal y la cache, estos
registros se conocen como la matriz de registros y pueden ser de dos tipos:
1. Registros visibles para el usuario: Permiten al programador de lenguaje
máquina o ensamblador, minimizar las referencias a memoria principal
optimizando el uso de estos registros, estos registros se pueden referenciar
mediante lenguaje máquina, están disponibles para todos los programas (de
sistemas y aplicación).
2. Registros de control y de estado: Utilizados por la Unidad de Control para
controlar las operaciones del procesador, y por los programas o rutinas con
privilegios del Sistema Operativo para controlar la ejecución del programa.
1. Registros visibles para el usuario
Se pueden clasificar en las siguientes categorías:
• Registros de Propósito general: El programador puede asignarlos a varias
funciones, como almacenamiento de datos, direccionamiento. Lo que nos
permite subdividir los en:
Registros de datos: que solo contienen datos y no se emplean en
cálculos de direcciones de operando, estos registros deben poder
almacenar la mayoría de tipos de datos. Ocasionalmente algunas
máquinas permiten que registros contiguos puedan ser usados como
uno solo para contener valores de longitud doble.
Registro de dirección: pueden usarse para almacenar datos, aunque su
función principal está dedicada a atender un modo de direccionamiento,
lo que implica tener la capacidad de almacenar la dirección más grande.
• Indicadores de Condición: son bits ajustados por el hardware de la CPU
resultado de alguna operación, tal es el caso de desbordamientos, resultado
nulo, positivo o negativo, esto implica que la ejecución de una instrucción no
solo puede dar por resultado la modificación o almacenamiento en un registro,
también se obtiene un código de condición. Estos códigos de condición se
reúnen por lo general en uno o más registros, normalmente en un registro de
control, estos bits son leídos por las instrucciones maquina por referencia
implícita, aunque no pueden ser alterado por el programador.
• Acumulador: es un registro ( o registros ) donde se almacena temporalmente
los resultados aritméticos y lógicos intermedios que serán tratados por la ALU.
Su longitud puede ser de 8, 16 o 32 bits. Es un registro indispensable para toda
operación de I/O y para operaciones de cadenas
• Punteros de segmento: cuando la memoria se divide en segmentos, una
referencia a la memoria consta de una referencia a un segmento y un
desplazamiento de segmento, por ejemplo la combinación CS:IP (Segmento de
código : Apuntador de instrucción) da como resultado la siguiente instrucción a
ejecutar.
• Registro índice: Estos registros se utilizan generalmente en operaciones con
cadenas, también es operaciones como el cálculo de direcciones sumando un
índice a un valor base para obtener la dirección efectiva en direccionamiento
indirecto, también es utilizado en el pase de parámetros a otras rutinas
• Puntero de pila (SP): son registros que apuntan a alguna localidad de
memoria, en particular este registro indica la siguiente posición de memoria
disponible en la pila. La pila o Stack es un área reservada utilizada
principalmente para el almacenamiento de direcciones de vuelta y contenido de
registros. La pila es de tipo LIFO – ultimo en entrar primero en salir, se utiliza
durante las llamadas a subrutina y durante las interrupciones.
2. Registros de control y de estado
Estos registros sirven para controlar el funcionamiento de la CPU o para
evidenciar es estado particular de la misma respecto a una instrucción, la
mayoría en gran parte de dispositivos no sol visibles al usuario, algunos
pueden ser visibles mediante instrucciones maquina ejecutadas en modo de
control o de sistema operativo.
• Contador de programa (PC): contiene la dirección de la instrucción a ejecutar,
la CPU actualiza el contador de programa después de captar cada instrucción,
apuntando a la siguiente instrucción. Las instrucciones de salto o bifurcación
modifican el contenido del contador de programa, la instrucción captada se
carga en el registro IR.
• Registro de instrucción (IR): contiene la instrucción captada mas reciente, en
este registro se analiza el código de operación y los campos del operando.
• Registro de dirección de memoria (MAR): contiene la dirección de una
posición de memoria.
• Registro intermedio de memoria (MBR): contiene el dato a escribir en la
memoria o la palabra leída más reciente. En un sistema con organización de
bus, MAR se conecta directamente al bus de direcciones y MBR directamente
al bus de datos. Los registros visibles por el usuario intercambian
repetidamente datos con MBR.
• Registro de estado: Este registro reporta el estado de alguna operación
aritmética o lógica, se le conoce como registro de estado (status register) o
PSW (Program Status Word), los bits que lo conforman tienen dos estados
posibles que tienen una significación especial acorde al procesador particular.
Los indicadores de condición que lo conforman son conocidos como “flags” o
“banderas” que son utilizados por instrucciones de bifurcación para la toma de
decisiones, los campos más comunes son:
1. Signo: Contiene el bit de signo del resultado de la última operación
aritmética.
2. Cero: Puesto a uno cuando el resultado es 0.
3. Acarreo: Puesto a uno si una operación da lugar a un acarreo (suma) o
préstamo (resta) del bit más significativo.
4. Igual: puesto a uno si el resultado de una comparación lógica es la
igualdad.
5. Desbordamiento: usado para indicar un desbordamiento aritmético.
6. Interrupciones habilitadas/deshabilitadas: usado para permitir o
inhabilitar interrupciones.
7. Supervisor: indica si la CPU funciona en modo de supervisor o usuario.
Únicamente en modo supervisor se pueden ejecutar ciertas
instrucciones privilegiadas y se puede acceder a ciertas áreas de
memoria.
Unidad de control
La unidad de control (UC) es el centro nervioso de la CPU, desde ella se
controla y gobiernan todas las operaciones (búsqueda, decodificación, y
ejecución de la instrucción), proporcionando las señales de control para la
entrada o salida de datos en el microprocesador y la sincronización de la
ejecución de las instrucciones, estas tareas básicas se pueden resumir en:
1. Secuenciamiento: hace que el procesador avance a través de una serie
de microoperaciones, basadas en el programa que esté ejecutando.
2. Ejecución: la unidad de control hace que se ejecute cada
microoperación.
El trabajo que realiza la Unidad de control implica:
1. Microoperaciones: para entender el concepto de microoperación hay que
tomar los siguientes conceptos.
Ciclo de reloj, consiste en una serie de pulsos periódicos generados por
reloj local interno o externo, este ciclo permite organizar la secuencia
interna de eventos en la CPU.
Ciclo máquina, consiste en uno o varios ciclos de reloj necesarios para
ejecutar una instrucción, algunas instrucciones utilizan más de un ciclo
máquina para completar sus actividades, tal es el caso de instrucciones
de decisión-salto.
Ciclo de instrucción, compuesto en forma general por captación, ciclo
indirecto, ejecución e interrupción, cada uno de estos contienen pasos
que involucran a registros del microprocesador, estos pasos son las
microoperaciones.
2. Señales de control
Las señales de control se componen de señales de entrada que permiten
determinar el estado del sistema y salidas que permiten controlar el
comportamiento del mismo.
• Señales de entrada.
Reloj: Es el encargado de genera pulsos periódicos utilizados por la
Unidad de Control para ejecutar una o varias microoperaciones en cada
pulso de reloj, este pulso se denomina “período de reloj” o “tiempo de
ciclo del procesador”.
Registro de instrucción: contiene el código de la instrucción con la que la
Unidad de control determina el conjunto de microoperaciones a realizar
durante el ciclo de ejecución.
Indicadores: son bits que utiliza la Unidad de Control para determinar el
estado del procesador y el resultado de la operación anterior en el ALU
Señales de control del bus de control: señales de control desde el bus
del sistema (señales de interrupción y de reconocimiento).
Figura. Unidad de Control
• Señales de salida.
Señales de control internas al procesador:
Utilizadas para transferir datos de un registro a otro.
Activar funciones específicas de la ALU.
Señales de control hacia el bus de control:
Señales de control de la memoria.
Señales de control de las E/S.
Figura. I/O en la Unidad de Control