estructura basica de los computadores la unidad central de

Anuncio
ARQUITECTURA DEL COMPUTADOR
UNIMET
Prof. Sandro Costantini
ESTRUCTURA BASICA DE LOS COMPUTADORES
GUIA 23: ESTRUCTURA BASICA DE LOS COMPUTADORES
La estructura básica de la mayoría de los ordenadores
actuales se representa mediante los siguientes elementos
básicos:
E/S
MEMORIA
• La Unidad Central de Procesamiento, CPU
• La memoria principal
BUS DE DIRECCIONES
CPU
BUS DE DATOS
• Los subsistemas de E/S
• Los buses del sistema
BUS DE CONTROL
LA UNIDAD CENTRAL DE PROCESAMIENTO (CPU)
La unidad central de procesamiento, conocida también como Procesador, es la encargada de controlar
las operaciones de la computadora y realizar las funciones de procesamiento de datos.
La función de la CPU es la de ejecutar una secuencia de instrucciones que están almacenadas en la
memoria principal de la computadora. Al diseñar un procesador se especifica un repertorio de
instrucciones que será capaz de realizar y que se conoce como conjunto de instrucciones. El procesador
trabajará a manera de interprete decodificando las instrucciones para ser ejecutadas.
Las funciones que realiza la CPU para ejecutar una instrucción son:
•
•
•
•
•
Buscar instrucciones: El CPU debe leer instrucciones de la memoria.
Interpretar instrucciones: La instrucción debe ser decodificada para determinar la acción a
realizar.
Buscar datos: La ejecución de una instrucción posiblemente requiera de leer datos de la memoria
o de algún módulo de E/S.
Procesar datos: La ejecución de una instrucción posiblemente requiera desarrollar algunos
cálculos aritméticos o realizar operaciones lógicas con los datos.
Escribir datos: El resultado de una ejecución posiblemente requiera escribir datos en la memoria
o en algún modulo de E/S.
La CPU para realizar sus funciones se compone de varias partes:
• La Unidad de Control (UC):
Controla el funcionamiento del CPU.
UNIDAD DE
CONTROL
ULA
REGISTROS
• La Unidad Lógica y Aritmética (ULA):
Ejecuta funciones de procesamiento de datos.
• Registros:
Proveen almacenamiento interno al CPU
• Interconexiones:
Permiten la comunicación entre la UC, la ULA y
los Registros.
GUIA 23
© 2007 Sandro Costantini
1
UNIMET
ARQUITECTURA DEL COMPUTADOR
Prof. Sandro Costantini
ESTRUCTURA BASICA DE LOS COMPUTADORES
UNIDAD LOGICA ARITMÉTICA ULA
Es la encargada de realizar todos los cálculos aritméticos y lógicos.
Una operación básica de todas las computadoras es la adición o sustracción de dos números. Tales
operaciones se proporcionan en el nivel de instrucciones de máquina. Se implantan, junto con las
funciones lógicas AND, OR, NOT y EXOR en la ULA del CPU.
Los operandos se le presentan a la ULA como salidas de dos registros del CPU, a través de un bus. Por
lo general, el resultado se envía a otro registro del CPU para que la lógica combinatoria termine con los
cálculos. Además una operación de la ULA es más veloz que una operación de acceso a memoria. Esto
significa que en una instrucción en la que haya una operación de la ULA, el operando que deba traerse
de memoria no requerirá mucho más tiempo de ejecución que una instrucción que sólo traslada el
contenido de una localidad de memoria a otra.
En comparación, las operaciones de multiplicación y división son más complejas que las de adición y
sustracción. Por lo general, estas operaciones se incluyen en el conjunto básico de instrucciones, sin
embargo, sus tiempos de ejecución pueden ser significativamente más lentos que los de otras
instrucciones tales como sumar, mover, etc. Esto se debe a que están implantadas como una secuencia
de pasos de adición y sustracción que realiza la ULA, controlada por un microprograma. En las
computadoras de alto rendimiento, a menudo se utiliza hardware multiplicador y divisor para incrementar
la velocidad de las operaciones aritméticas. Desde luego, siempre y cuando se cuente con las
instrucciones de máquina de Suma y Sustracción, será posible suministrar operaciones tanto de
multiplicación como de división, mediante rutinas de software. Estas rutinas implantan básicamente la
multiplicación como una secuencia de sumas y desplazamientos y, la división, como una secuencia de
sustracciones y desplazamientos.
Comparadas con las operaciones aritméticas, las operaciones lógicas son simples desde el punto de
vista de la circuitería combinatoria. Sólo requieren de que se realicen operaciones booleanas
independientes en posiciones individuales de bits de los operandos.
Como mencionamos anteriormente, la ULA es la parte de la computadora que se encarga de ejecutar
operaciones aritméticas y lógicas a los datos. El resto de los componentes, unidad de control, registros,
memoria, E/S, se encargan de llevar datos a la ULA para procesarlos y después toman el resultado de
regreso.
REGISTROS
Para ejecutar las instrucciones la CPU requiere de algún tipo de almacenamiento temporal. Esta pequeña
memoria interna, de alta velocidad, está constituida por registros, los cuales se pueden utilizar para el
almacenamiento temporal de operandos o datos que se utilicen con frecuencia. Cada registro puede
almacenar una palabra de dato. Los tiempos de acceso a los registros son generalmente de 5 a 10 veces
más rápidos que los de acceso a memoria.
En la figura se muestra un esquema simplificado de las conexiones entre registros ULA y unidad de
control en el CPU.
CPU
R0
MDR
R1
BUS DE DATOS
......
MAR
Rn
PC
BUS INTERNO
ULA
IR
BUS DE DIRECCIONES
UNIDAD DE
CONTROL
BUS DE CONTROL
M
E
M
O
R
I
A
PSW
GUIA 23
© 2007 Sandro Costantini
2
ARQUITECTURA DEL COMPUTADOR
UNIMET
Prof. Sandro Costantini
ESTRUCTURA BASICA DE LOS COMPUTADORES
Los registros de la CPU están clasificados en dos categorías de acuerdo a sus funciones, aunque no
existe una clara separación entre las dos.
• Registros visibles al usuario. Permiten al programador de lenguaje de máquina o ensamblador
minimizar las referencias a la memoria principal, cuando optimiza el uso de los registros.
• Registros de control y estado. Son utilizados por la unidad de control para controlar el
funcionamiento de la CPU, y por programas privilegiados del sistema operativo para controlar la
ejecución de programas.
(Antes mencionamos que no existe una clara separación entre las dos categorías, por ejemplo aunque en
la mayoría de las máquinas el Contador de Programa(PC) no es visible al usuario, en algunas si lo es.
REGISTROS VISIBLES AL USUARIO:
Son aquellos que pueden ser referenciados por medio del lenguaje de máquina que ejecuta la CPU.
Se pueden clasificar en las siguientes categorías:
• Registros de Propósito General: pueden ser asignados por el programador a una gran variedad de
funciones. Puede contener el operando de cualquier instrucción.
• Registros de Datos: Se utilizan únicamente para almacenar datos, y no pueden utilizarse para el
cálculo de la dirección de un operando.
REGISTROS DE DIRECCIONES
Pueden ser de uso mas o menos general, o pueden estar dedicados a un modo particular de
direccionamiento. Como ejemplo tenemos:
•
Apuntadores de segmento: contiene la dirección de la base del segmento en una máquina con
direccionamiento segmentado.
•
Registros índices: Utilizados para direccionamiento indexado, y pueden ser autoindexados.
•
Apuntadores de Pila: Si existe un direccionamiento de pila visible al usuario, entonces la pila
está en memoria y hay un registro dedicado que apunta al tope de esta.
REGISTROS DE CODIGOS DE CONDICION (banderas(flags))
Son bits fijados por el hardware de la CPU como resultados de una operación. Por ejemplo una operación
aritmética puede producir un resultado positivo, negativo, nulo o con desbordamiento. Además de
almacenar el propio resultado en memoria, se obtiene también un código de condición, que puede ser
consultado como parte de una bifurcación condicional.
Los bits de códigos de condición se reúnen en uno o mas registros. Normalmente forman parte del
registro de control. Generalmente las máquinas permiten que estos bits se lean mediante referencias
implícitas, pero no pueden ser alterados por el programador.
En algunas máquinas, una llamada a una subrutina implica guardar el contenido de los registros visibles
al usuario, para reestablecerlos al regreso. Esta tarea es realizada por el CPU como parte de la ejecución
de la llamada y del regreso. Esto permite que cada subrutina utilice los registros independientemente. En
otras máquinas es responsabilidad del programador guardar y reestablecer los valores de los registros
Al momento de diseñar los registros de un CPU hay varios puntos que hay que considerar. Uno muy
importante es la especialización, que trata de si deben utilizarse únicamente registros de propósito
general o especializar su uso. Con el uso de registros especializados puede estar implícito en el código
de operación el tipo de registro al que hará referencia un operando. Este debe identificar únicamente un
registro de un conjunto especializado, en lugar de uno de entre todos los registros. Esto por un lado
ahorra bits, pero la especialización limita la flexibilidad del programador. No existe una solución única en
este punto, pero la tendencia es el uso de los registros especializados.
GUIA 23
© 2007 Sandro Costantini
3
UNIMET
ARQUITECTURA DEL COMPUTADOR
Prof. Sandro Costantini
ESTRUCTURA BASICA DE LOS COMPUTADORES
Otro punto es el Numero de Registros, ya sean de propósito general, de datos o de direcciones. Esto
afecta el diseño del conjunto de instrucciones dado que más registros requieren más bits de operandos.
Al parecer de 8 a 32 registros son opt5imos. Utilizar pocos registros produce más referencias a la
memoria; muchos registros no reducen notablemente el número de referencias a memoria. Sin embargo,
existe un nuevo planteamiento, el cual encuentra ventajas en el uso de cientos de registros, y se
encuentra en algunos sistemas RISC
Un último punto en el diseño es la Longitud de los Registros. Los registros que contienen direcciones
deben ser lo suficientemente grandes para contener direcciones grandes. Los registros de datos deben
ser capaces de almacenar valores de la mayoría de los tipos de datos. Algunas máquinas permiten el uso
de dos registros contiguos para almacenar valores de longitud doble.
REGISTROS DE CONTROL Y ESTADO
Hay una gran variedad de registros que son utilizados para controlar la operación del CPU. La mayoría
de estos, en muchísimas máquinas, no son visibles al usuario. Algunos duden ser visibles a instrucciones
de máquina realizadas en un modo de control o de sistema operativo.
Por supuesto, existen diferentes organizaciones de registros y utilizan diferentes tecnología. A
continuación se muestra una lista, razonablemente completa, de tipos de registros y una breve
descripción.
Registros esenciales para la ejecución de una instrucción:
• Registro de dirección de memoria MAR: Especifica la dirección de memoria a la que se está
accediendo. Está conectado al bus de dirección.
• Registro de datos de memoria MDR: Contiene el valor a escribir en la memoria o el últimos valor
leído de la memoria. Está conectado al bus de datos.
• Contador de Programa PC: Contiene la dirección de la próxima instrucción a captar.
• Registro de Instrucción IR: Almacena la instrucción que actualmente se está ejecutando
MAR: Memory Address Register;
MDR: Memory Data Register;
PC:Program Counter;
IR:Instruction Register
El PC es actualizado por el CPU después de cada búsqueda de instrucción, por lo que siempre apunta a
la siguiente instrucción a ser ejecutada. Una instrucción de salto también modifica al PC. La instrucción
buscada se coloca en el IR donde el código de operación y el operando son analizados. Los datos se
intercambian utilizando MAR y MDR.
Estos cuatro registros se utilizan para la transferencia de datos entre el CPU y la memoria. Dentro del
CPU los datos son presentados a la ULA para procesarlos. La ULA debe tener acceso directo al MDR y
a los registros visibles al usuario.
GUIA 23
© 2007 Sandro Costantini
4
ARQUITECTURA DEL COMPUTADOR
UNIMET
Prof. Sandro Costantini
ESTRUCTURA BASICA DE LOS COMPUTADORES
En la figura se muestran los dos registros involucrados directamente con el acceso a memoria.
CPU
MEMORIA
UNIDAD DE
CONTROL
MDR
MAR
0 1 0 1 0 1 1 1
0 0 1 1 0
0 1 0 1 0 1 1 1
DECOD
Bus de direcciones
Bus de datos
Todos los diseños del CPU incluyen un registro, o conjunto de registros, conocido como palabra de
estado del programa PSW (program status word). Frecuentemente el PSW contiene códigos de condición
y otra información de estado. Entre los campos comunes se incluyen los siguientes:
•
•
•
•
•
•
Signo: Contiene el bit de signo resultante en la última operación aritmética.
Cero: Puesto a 1 cuando el resultado es cero.
Acarreo: Puesto a 1 si la operación da como resultado un acarreo del bit más significativo.
Igual: Puesto en 1 si el resultado de una comparación lógica es la igualdad.
Overflow: Utilizado para indicar un desbordamiento en una operación aritmética.
Interrupt enable disable: Utilizada para habilitar o deshabilitar las interrupciones.
Supervisor: Indica cuando el CPU está operando en modo supervisor o en modo usuario. Ciertas
instrucciones y áreas de memoria solo pueden accesarse en modo supervisor
GUIA 23
© 2007 Sandro Costantini
5
ARQUITECTURA DEL COMPUTADOR
UNIMET
Prof. Sandro Costantini
ESTRUCTURA BASICA DE LOS COMPUTADORES
UNIDAD DE CONTROL UC.
La función de una computadora es la de ejecutar programas. Estos programas están compuestos de una
serie de instrucciones, las cuales son ejecutadas una cada vez. Es decir, que la ejecución de un
programa consiste en realizar una secuencia de ciclos de instrucción, con una instrucción de máquina por
ciclo.
La función de la unidad de control de un computador es la búsqueda de las instrucciones en memoria, su
interpretación y la generación en los instantes adecuados, de las señales de control necesarias para
ejecutar la operación especificada por cada instrucción. En este proceso se distinguen dos aspectos
fundamentales:
•
•
El secuenciamiento de las instrucciones.
La interpretación de las instrucciones.
SECUENCIAMIENTO
El secuenciamiento de las instrucciones es el proceso por el cual las instrucciones de un programa van
siendo seleccionadas para su ejecución en un orden determinado. La mayor parte de las instrucciones de
un programa tienen una sola sucesora, por lo que resulta natural almacenadas en posiciones
consecutivas de memoria. Para su secuenciamiento, se utiliza un registro denominado contador de
programa (CP). En general, si la instrucción i necesita p palabras de memoria, el incremento del CP para
pasar a la instrucción i+1 será CP CP+p.
Las instrucciones de ruptura son las que permiten la selección de un camino entre varios posibles.
Cuando es necesario transferir el control del programa principal a una subrutina o una interrupción, lo que
se hace es guardar el contenido del CP (que será la dirección de la siguiente instrucción del programa
principal) en algún registro de la CPU o en una posición determinada de la memoria principal llamada
dirección de retorno. Después se carga en el CP la dirección en la que se encuentra la instrucción que
arranca el subprograma, que se ejecuta hasta que finaliza, volviendo luego el control al programa
principal recuperando el contenido del CP de la dirección de retorno.
INTERPRETACIÓN:
Es el proceso por el cual la unidad de control obtiene las instrucciones almacenadas en memoria y las
ejecuta. Esto se realiza en lo que llamaremos ciclo de instrucción.
CICLO DE INSTRUCCIÓN
La ejecución de un programa consiste en la ejecución secuencial de sus instrucciones. Cada instrucción
se ejecuta durante un ciclo de instrucción que está compuesto de subciclos más pequeños (búsqueda,
direccionamiento indirecto, ejecución e interrupción) La realización de cada uno de esos subciclos implica
una o más operaciones más pequeñas llamadas microoperaciones.
•
•
•
Ciclo de captación
Ciclo de decodificación
Ciclo de ejecución
CICLO DE CAPTACIÓN
Las instrucciones que forman un programa se almacenan en forma secuencial en la memoria. Para
ejecutar este programa la CPU trae una instrucción a la vez de la memoria y realiza las funciones
especificadas. A este proceso se le conoce como ciclo de captación y ocurre al comienzo de cada ciclo
de instrucción produciendo que una instrucción sea obtenida de la memoria. Se utilizan los cuatro
registros siguientes cuya descripción se mencionó en la sección correspondiente a los registros:
•
•
•
•
GUIA 23
Registro de dirección de memoria MAR
Registro de datos de memoria MDR.
Contador de Programa PC
Registro de Instrucción IR
© 2007 Sandro Costantini
6
ARQUITECTURA DEL COMPUTADOR
UNIMET
Prof. Sandro Costantini
ESTRUCTURA BASICA DE LOS COMPUTADORES
Para explicar las microoperaciones del ciclo de captación consideremos los eventos que se van
sucediendo, y su efecto sobre los registros del CPU.
El primer paso consiste en traer de la memoria la instrucción a ejecutar. Al comienzo del ciclo de
captación la dirección de la próxima instrucción a ejecutarse se encuentra almacenada en el contador de
programa (PC). Entonces debemos colocar el contenido del PC en el registro de dirección de
memoria(MAR), ya que este es el registro que está conectado a las líneas de dirección del bus del
sistema.
El segundo paso consiste en traer la instrucción. Para esto la dirección (contenida en el MAR) se coloca
en el bus de direcciones y la unidad de control emite una señal de LECTURA en el bus de control. El
resultado aparece en el bus de datos y se copia en el registro de datos de memoria (MDR). Es necesario
además actualizar el valor del PC para que contenga la dirección de la siguiente instrucción. Esto se
realiza incrementando el PC en I (longitud de la instrucción), para que esté preparado para la próxima
instrucción. Dado que las dos operaciones no interfieren entre sí, se pueden realizar simultáneamente
para ahorrar tiempo.
El tercer paso consiste en transferir el dato almacenado en MDR al registro de instrucción (IR). Esto libera
MDR para su posible uso durante un ciclo indirecto.
De esta forma, el ciclo de captación consta de 4 microoperaciones que se realizan en 3 pasos.
Las secuencias de pasos en el ciclo de búsqueda pueden representarse simbólicamente de la siguiente
forma:
t1:
t2:
t3:
MAR
MDR
PC
IR
[PC]
Memoria
[PC] + I
MDR
Transferir el contenido de PC a MAR
Transferir el contenido de la posición de memoria señalada por MAR a MDR.
Incrementar en I el contenido de PC
Transferir el contenido de MDR a IR.
ti representa unidades sucesivas de tiempo y los corchetes [ ] se utilizan para denotar “el contenido de”.
CICLO DE DECODIFICACION
Una vez que se tiene la microinstrucción, el siguiente consiste en analizar los bits correspondientes al
código de operación de la instrucción y determinar las operaciones a ejecutarse en el ciclo de ejecución.
CICLO DE EJECUCIÓN
El ciclo de ejecución no tiene una secuencia fija de operaciones, sino que para cada código de operación
y modo de direccionamiento hay una secuencia distinta. De forma general se efectúan las siguientes
operaciones:
• Calculo de las direcciones efectivas de los operandos (dependen del modo de direccionamiento)
• Lectura de los operandos (se leen de la memoria principal y se almacenan en registros a la
entrada de la Unidad Aritmético lógica)
• Operación con los datos (en la Unidad Aritmético Lógica)
• Almacenamiento de operando (escritura del resultado en la memoria)
Al terminar con el ciclo de instrucción se sigue el mismo procedimiento con la instrucción siguiente.
GUIA 23
© 2007 Sandro Costantini
7
ARQUITECTURA DEL COMPUTADOR
UNIMET
Prof. Sandro Costantini
ESTRUCTURA BASICA DE LOS COMPUTADORES
NOTAS ADICIONALES
Algunos autores especifican un ciclo indirecto que hemos considerado como parte del ciclo de ejecución
CICLO INDIRECTO
Una vez que se tiene la microinstrucción, el siguiente paso consiste en captar los operandos.
Supongamos que el formato de instrucción requiere de un direccionamiento directo o indirecto. Si la
instrucción especifica un direccionamiento indirecto (consiste en obtener la dirección almacenada en otra
localidad de memoria), entonces se debe realizar un Ciclo Indirecto. Esto incluye las siguientes
microoperaciones:
t1:
MAR
[IR(Dirección)]
t2:
MDR
Memoria
t3:
IR(dirección) [MDR(Dirección)]
El campo de dirección en la instrucción se transfiere a MAR. Este se utiliza después para captar la
dirección del operando. Por último, el campo de dirección de IR se actualiza con el contenido de MDR, de
modo que contenga una dirección directa en lugar de una indirecta.
IR tiene ahora el mismo estado que si no se hubiera usado direccionamiento indirecto, y está listo para el
ciclo de ejecución.
CICLO DE INTERRUPCION
Cuando termina el ciclo de ejecución, se realiza una comprobación para determinar si se ha habilitado
alguna interrupción. Si es así, entonces antes de captar la siguiente instrucción tiene lugar el ciclo de
interrupción. La secuencia es la siguiente:
t1:
t2:
t3:
MDR
MAR
PC
Memoria
[PC]
Dirección de regreso
Dirección de rutina
[MDR]
Aquí el contenido de PC se almacena en el MDR para que cuando la rutina termine de ejecutarse, el CPU
sepa en donde debe continuar. Se coloca en el MAR la dirección donde se almacenará el contenido de
PC y la dirección de la rutina a ejecutar se almacena en el PC. Posteriormente la unidad de control
especifica que se debe realizar una escritura para almacenar en memoria el dato contenido en MDR.
GUIA 23
© 2007 Sandro Costantini
8
Descargar