Sei sulla pagina 1di 15

Unidad 2 2013

Contenido
Unidad 2 Estructura y funcionamiento de la CPU................................................................................... 1
Organización del procesador .............................................................................................................. 1
Registros de uso General ................................................................................................................ 2
Registros de Segmentación ............................................................................................................. 4
Modos de direccionamiento ........................................................................................................... 5
2.3Ciclo de Instrucción ...................................................................................................................... 10
Segmentación de instrucciones ........................................................................................................ 12

Unidad 2 Estructura y funcionamiento de la CPU


Organización del procesador
Para comprender la organización del procesador, se debe considerar los siguientes requisitos:

1. Capturar la instrucción. El procesador lee una instrucción (Registro, cache o memoria


principal).
2. Interpretar instrucciones. La instrucción se decodifica para determinar qué acción es
necesaria.
3. Captura de Datos. La ejecución de una instrucción puede requerir la lectura de datos de la
memoria o de un módulo de E/S.
4. Procesar Datos. La ejecución de una instrucción puede requerir llevar a cabo alguna
operación aritmética o lógica con los datos.
5. Escribir Datos. El resultado de la ejecución puede requerir escribir datos en la memoria o en
algún módulo de E/S.

Para hacer estas cosas es obvio que el procesador necesita almacenar datos temporalmente
necesita almacenar instrucciones y datos temporalmente mientras una instrucción está
ejecutándose o requiere tener presente la posición de la última instrucción de forma que pueda
saber de dónde tomar la siguiente instrucción. En otras palabras el procesador necesita una pequeña
memoria interna.

1
Unidad 2 2013

La figura 1.16 vista en la unidad anterior presenta la versión simplificada de un procesador. La figura
2.1 presenta una visión más detallada del procesador.

En la figura 2.1 la ALU y todos los registros están interconectados mediante un bus común. Este bus
es interno al procesador y no debe confundirse con el bus externo o el bus del sistema que conecta
al procesador con la memoria y los dispositivos de E/S.

Los registros visibles por el usuario se clasifican en las siguientes categorías:

 Uso general
 Datos
 Direcciones
 Códigos de condición

Registros de uso General


Los registros de uso general pueden ser asignados por el programador a diversas funciones.
Dependiendo de la arquitectura del procesador, su uso depende del repertorio de instrucciones del
mismo.

Cualquier registro de uso general puede almacenar el operando para cualquier código de operación;
esto proporciona una utilización de registros de uso general autentica. Sin embargo con frecuencia,
existen restricciones, por ejemplo registros específicos se utilizan para operaciones con “coma
flotante “y para operaciones con la pila.

En algunos casos los registros de uso general pueden utilizarse para funciones de direccionamiento
(por ejemplo en direccionamientos indirectos por medio de registros o con desplazamientos). En
otros casos, dependiendo de la arquitectura del procesador, existe una separación parcial o total
entre los registros de datos y los registros de direcciones. Los registros de datos pueden usarse

2
Unidad 2 2013

únicamente para contener datos y no se pueden emplear en el cálculo de una dirección de un


operando. Los registros de dirección pueden ser de uso más o menos general o pueden estar
dedicados a un modo de direccionamiento particular.

En otras se pueden citar los siguientes ejemplos:

 Apuntadores de segmento. En una maquina con direccionamiento segmentado un registro


de segmento almacena la dirección base del segmento.
 Registros Índices. Se utilizan para el direccionamiento indexar.
 Apuntador de Pila. Si existe el direccionamiento a pila visible por el usuario, normalmente
hayan registro dedicado que apunta a la dirección de esta.

La última categoría de registros que es al menos parcialmente visible por el usuario contiene los
códigos de condición, también llamados indicadores o flags, Los códigos de condición son bits
fijados por el HW del procesador como resultado de alguna operación.

Ejemplificado los registros visibles para el usuario se presenta en la fig 2.2 donde se muestra el
modelo de programación de los microprocesadores 8086/

A Continuación se describirá en detalle los registros de cada grupo.

1. Registro Acumulador. Este registro se utiliza para instrucciones tales como la


multiplicación, división y algunas de las instrucciones de ajuste. (instrucciones de ajuste
es el ajuste ASCII). En los microprocesadores 80386 y posteriores este registro puede

3
Unidad 2 2013

almacenar también la dirección de desplazamiento de una posición de la memoria.(El de


64 es con RAX)
2. Registro Base. Algunas veces el registro base guarda la dirección de desplazamiento de
una posición en el sistema de memoria para todas las versiones de los
microprocesadores.
3. Contador. Este registro almacena la cuenta de varias instrucciones. En el 80386 y
superiores el registro contador puede guardar la dirección de desplazamiento de datos
de la memoria.
4. Datos. Pueden ser representados como (CX DX16 bits) (EDX32 bits) (RDX64 bits)
(DH DL 8bits). Este registro guarda una parte del resultado de una multiplicación o
parte del dividendo antes de una división. En el 80386 y superiores este registro puede
direccionar datos de la memoria.
AX y DX 
Ejemplo
mov ax, 0432h
mov bx, 1567h
mul bx
mul  sirve para multiplicar
Por omisión multiplica lo que está en AX por lo que le pasas de parámetro a mul
La parte baja del resultado se va guardar en AX (Acumulador) y la parte alta en
DX. Se necesita DX y AX porque el resultado es de 32 bits
Lo de adentro puede ser DX DL o EDX. Un numero Hexadecimal es almacenado en 4
bits!! En Binario es por eso que si tienes un numero de 8 dígitos Hexadecimales va ser de
32 por el hecho de que cada digito son 4 bits.

Ejemplo cuando no es de 32bits y es menor <= 16


Resultado de una mul (multiplicación)
0ABCDh
0AB  Se guarda en AH (Acumulador High)
CD  Se guarda en AL (Acumulador Low)

5. Apuntador de la base. Este registro apunta a una posición de memoria en todas las
versiones de los microprocesadores BP16 EBP32 RBP64.
6. Índice destino. Frecuentemente este registro direcciona datos de destino para las
instrucciones de cadenas. DI16 EDI320 RDI64
7. Índice Origen. Este registro direcciona el origen para las instrucciones de cadena SI ESI
RSI
8. Apuntador de Pila. Este registro almacena el tope de una área de memoria llamada pila
(stack) SP16 ESP32 RSP64

Registros de Segmentación
1. Segmento de Código: Es una sección de la memoria que almacena el código de un programa
y procedimientos utilizados por el microprocesador. El registro de segmento de código (CS)
define la dirección inicial de la sección de memoria que guarda el código. En la operación en
modo real define el inicio de un segmento de 64kb de memoria; en el modo protegido
selecciona un descriptor.

4
Unidad 2 2013

2. Registro del segmento de datos. Es una sección de la memoria que almacena los datos de
un programa y procedimientos utilizados por el microprocesador. El registro de segmento de
datos (DS) define la dirección inicial de la sección de memoria que guarda los datos. En la
operación en modo real define el inicio de un segmento de 64kb de memoria; en el modo
protegido selecciona un descriptor.
3. Registro de Segmentos de extra datos. El segmento de extra datos es un segmento
adicional para datos utilizado para algunas de las instrucciones de cadenas el registro de
segmentos de extra datos (ES) define la dirección de la sección de memoria que guardan los
datos adicionales.
4. Registros de Segmento de pila. El segmento de pila define el área de memoria para la pila.
El registro de segmento de pila (SS) define la dirección inicial de la sección de memoria que
guarda la información en la pila.
5. Registro de Segmentación FS y GS. Disponibles en los microprocesadores 80386 al Pentium
IV, para que los programas puedan acceder a dos segmentos de memoria adicional.

Modos de direccionamiento
Modo de direccionamiento Real.

CS  0400h * 01h = 04000h

DS  0A14h * 01h = 00A14h

ES  1B70h * 01h = 01B70h

SS  4CDEh * 01h = 04CDEh

Limite de un segment o dieccion final del segment se obtiene sumando la direccion inicial mas
0FFFh

01B70
0FFFF
=f

5
Unidad 2 2013

Llenar la tabla siguiente dcon los datos dados

Registro de Tamaño de segmento Dirección Base x 10h Dirección Final


Segmentación (convertir a Hex)
CS:1357h 256 13570h 13670h
DS:A268h 1024 0A268h 0A2A80h
ES:49B0h 512 49B00h 49D00h
SS:0CDEFh 16 0CDEF0h 0CDF00h

Modo de direccionamiento protegido

6
Unidad 2 2013

Microprocesador 8088/8086  8bits de datos y 20 bits de direcciones

Microprocesador 8028616 bits de datos y 24 bits de direcciones

Microprocesador 8038632 bits de direcciones

Los limites representan el tamaño máximo que puede tener cada segmento en el 80286 es de
64Kb

Capacidad de memoria 2^24 = 16MB

Tamaño 2^16 = 64Kb

7
Unidad 2 2013

80386  Pentium IV

Capacidad de memoria 2^32 = 4GB

Tamaño de segmento 2^20 1MB

8
Unidad 2 2013

La parte del descriptor que indica la localidad de inicio del segmento es la dirección base el límite del
segmento contiene la última dirección de desplazamiento de un segmento el byte de derecho de
acceso define el funcionamiento del segmento del sistema; si el segmento es de datos, especifica el
sentido de crecimiento, si el segmento crece más allá de su limite el programa es interrumpido
indicando un error de protección general. Si el segmento es de código es controlado de manera
similar y su lectura puede ser inhibida (que no tienes acceso) para proteger el software.

Para el descriptor del 80386 y posteriores se manejan los bits (Av,D,G) los cuales se describen a
continuación:

 El bit AB es usado por algunos sistemas operativos para indicar que el segmento está
disponible (AB = 1) o que no lo está (AB =0)
 El. bit D indica la forma en que las instrucciones de los microprocesadores acceden a los
registros y a los datos de memoria tanto en modo real como en el modo protegido. Si D es
igual a 0 las instrucciones son de 16 bits compatibles con los microprocesadores 8086 y
80286. Si D es igual a 1 las instrucciones son de 32bits.
 El bit G (granualidad) si G es igual a 0, el limite especifica un rango de segmento entre
00000h y 0FFFFFh si G es igual a 1 el valor del límite se multiplica por 4kb, entonces el rango
del segmento va desde 00000h y 0XXXh 0FFFh y 0XXXh

Suponga que en el registro de segmentación de datos tiene un 8 decimal, encuentre la dirección de


inicio y fin de este segmento. (80286)

DS  8 (16bits) 0008h  (pasar a bits) 0000 0000 0000 1000

Nivel de privilegio 00
Tabla Globa 0
Numero de Descriptor 0000 0000 0000 1

9
Unidad 2 2013

2.3Ciclo de Instrucción
En la unidad 1 se describió el ciclo del procesador. Se recordara que un ciclo de instrucción incluye
los siguientes subciclos:

 Captura: Llevar la siguiente instrucción de la memoria al microprocesador.


 Ejecución: Interpretar el código de operación y llevar a cabo la operación indicada.
 Interrupción: Si las interrupciones están habilitadas y ha ocurrido una interrupción,
almacenar el estado del proceso actual y atender la interrupción.

Ahora es el momento de conocer más acerca del ciclo de instrucción. En primer lugar se debe
introducir un nuevo sub ciclo, conocido como el ciclo indirecto el ciclo de instrucción completo se
muestra en la figura 2.3 Ciclo de instrucción.

Captura

Interrupcion Indirecto

Ejecucion

La principal línea de actividad consiste en alternar las actividades de captura y ejecución; después
que una instrucción es capturada, es examinada para determinar un direccionamiento indirecto. Si
es así, los operandos requeridos se capturan utilizando este direccionamiento.

La figura 2.4 es una versión revisada de la figura 1.3(estados de ciclo de instrucción) y muestra otra
forma de usar el proceso.

Esta nueva figura ilustra más correctamente la naturaleza del ciclo de la instrucción. Una vez que una
instrucción es capturada, debe identificarse sus campos operandos, entonces se captura de la
memoria cada operando de entrada y este proceso puede requerir el direccionamiento indirecto.
Los operandos ubicados en los registros no necesitan ser capturados, ya que una vez que se ejecuta
la operación puede ser necesario un proceso similar para almacenar el resultado en la memoria
principal.

La secuencia exacta de eventos que tiene lugar durante un ciclo de instrucción depende del diseño
del procesador. Se puede, no obstante, indicar en términos generales lo que deba de ocurrir.
Suponga que un procesador tiene un registro de dirección de memoria (mar), un registro intermedio
de memoria (mbr) un contador del programa (PC) y un registro de instrucción (IR).

Almacenamient
Captura de la
10
Instrucción
Calculo de operando o del operando
Unidad 2 2013

Durante el ciclo de captura se lee una instrucción de la memoria, la figura 2.5 muestra el flujo de
datos en este ciclo, PC almacena la dirección de la siguiente instrucción que hay que capturar. Esta
dirección se lleva al MAR y se coloca en el bus de direcciones. La unidad de control solicita una
lectura de memoria y el resultado se pone en el bus de datos. Se copia en MBR y después se lleva a
IR. Mientras tanto PC se incrementa como preparación para la siguiente captura.

PC MAR
Memoria

Unidad de
Control

IR MBR

Procesador Bus DeDir Bus de datos Bus de Control


Figura 2.5

Una vez concluido el ciclo de captura la unidad de control examina el contenido de IR para
determinar si contiene un campo de operando, que usa un direccionamiento indirecto. Si es así, se
lleva a cabo un ciclo indirecto para tal efecto se muestra la figura 2.6.

MAR
Memoria
Unidad
de
Control

MBR

Procesador Bus DeDir Bus de datos Bus de Control


Figura 2.5

Los n bits más a la derecha del MBR, almacenan la dirección de referencia, y se transfieren al MAR.
Entonces la unidad de control solicita una lectura de memoria para llevar la dirección del operando
al MBR. Los ciclos de captura indirecto son sencillos y predecibles; el ciclo de ejecución adopta
muchas formas, ya que depende de cuál de las diversas instrucciones maquina está en el IR. Este
ciclo puede implicar transferencia de datos entre registros, lecturas o escrituras de memoria o
dispositivos de E/S o de la utilización de la ALU.

El signo de interrupción se muestras en la figura 2.7.

11
Unidad 2 2013

PC MAR
Memoria
Unidad
de
Control

MBR

Procesador Bus DeDir Bus de datos Bus de Control


Figura 2.7 Flujo de Datos Ciclo de Interrupción

El contenido actual de PC tiene que ser guardado para que el procesador pueda reanudar su
actividad tras la interrupción. Así el contenido de PC se transfiere al MBR para ser escrito en la
memoria.

La dirección de memoria reservada para este propósito se almacena en MAR desde la unidad de
control. Como resultado el siguiente ciclo iniciara capturando la siguiente instrucción.

Segmentación de instrucciones
Como repaso de la información vista en la unidad 1 utilizaremos la figura 2.4 para aplicar el
concepto de la segmentación. En esta figura el ciclo de instrucción se divide hasta en 10 tareas que
tienen lugar secuencialmente; claramente puede pensarse en la utilización de la segmentación.

Consideremos la subdivisión del procesamiento de una instrucción en dos etapas: captura y


ejecución. Existen periodos en la ejecución de una instrucción en los que no se accede a la memoria
principal; este tiempo podría utilizarse en capturar la siguiente instrucción en paralelo con la
ejecución de la actual. La figura 2.8.a representa este planteamiento.

Instrucción Instrucción Resultado


Captura Ejecución

(a) Visión Simplificada

12
Unidad 2 2013

El cauce tiene dos etapas independientes, la primera etapa, captura una instrucción y la almacena en
un buffer; cuando la segunda etapa está libre, la primera etapa le pasa la instrucción almacenada y
mientras que la segunda etapa ejecuta la instrucción, la primera etapa utiliza algún ciclo de memoria
no usada para capturar y almacenar la siguiente instrucción. Esto se conoce como pre
búsqueda/prescripción o también se le conoce como solapamiento de la captura.

Debería de quedar claro que este proceso acelera la ejecución de las instrucciones y si las etapas de
captura y ejecución fueran de igual duración, el tiempo de ciclo de instrucción se reduce a la mitad.
Sin embargo si observamos atentamente el cauce de la figura 2.8.d, resulta que esta velocidad de
ejecución es poco probable por dos razones:

1. El tiempo de ejecución es generalmente más largo que el tiempo de captura ya que la


ejecución implica la lectura y almacenamiento de operandos y la realización de una
operación.
2. En una instrucción de salto condicional la dirección de la siguiente instrucción a capturar es
desconocida, por tanto, la etapa de captura debe esperar hasta que reciba la dirección de la
siguiente instrucción desde la etapa de ejecución.

A pesar de que estos factores reducen la efectividad del cauce de dos etapas se produce cierta
aceleración. Para conseguir una mayor aceleración del cauce este debe tener más etapas; considere
la siguiente descomposición del procesamiento de una instrucción:

1. Capturar instrucción (FI).

13
Unidad 2 2013

2. Decodificar instrucción (DI).


3. Calcular operandos (CO).
4. Capturar operandos (FO)
5. Ejecutar instrucción (EI)
6. Escribir operando (WO)

La figura 2.9 muestra que un cauce de 6 etapas puede reducir el tiempo de ejecución de 9
instrucciones de 54 unidades de tiempo a 14.

Figura 2.9 Diagrama de tiempo del funcionamiento del cauce segmento .


Instrucciones
1 FI DI CO FO EI WO
2 FI DI CO FO EI WO
3 FI DI CO FO EI WO
4 FI DI CO FO EI WO
5 FI DI CO FO EI WO
6 FI DI CO FO EI WO
7 FI DI CO FO EI WO
8 FI DI CO FO EI WO
9 FI DI CO FO EI WO
1 2 3 4 5 6 7 8 9 10 11 12 13 14

Tiempo
Es conveniente hacer ciertas observaciones:

1. El diagrama supone que cada instrucción recorre las 6 etapas del cauce, pero no siempre se
da el caso.
2. El diagrama supone que todas las etapas pueden trabajar en paralelo, pero las etapas FI,FO
y WO requieren un acceso a memoria. El diagrama implica que todos estos accesos pueden
tener lugar simultáneamente pero la mayoría de los sistemas de memoria no permiten el
acceso simultáneo.

También como se comentó anteriormente las etapas reales no tienen la misma duración y además
se presenta otra dificultad que es la instrucción de salto condicional. La figura 2.10 ilustra los efectos
del salto condicional, usando el mismo programa.

Figura 2.10 Efecto de un salto condicional


Instrucciones

1 FI DI CO FO EI WO
2 FI DI CO FO EI WO
3 FI DI CO FO EI WO
4 FI DI CO FO
5 FI DI CO FO
6 FI DI CO
7 FI DI
8 FI DI CO FO EI WO
9 FI DI CO FO EI WO
1 2 3 4 5 6 7 8 9 10 11 12 13 14
Tiempo
14
Unidad 2 2013

Se presenta que la instrucción 3 es un salto condicional a la instrucción 15, hasta que no se termine
la ejecución 3 no hay forma de saber que instrucción vuelve a continuación.

El cauce en este ejemplo simplemente carga la siguiente instrucción (instrucción 4) y el proceso


continua hasta el tiempo 7 momento en el cual el cauce debe limpiarse de las instrucciones que no
son utilies. Durante el tiempo 8 la instrucción 15 entra en el cauce dando como resultado que
ninguna instrucción termina durante sus unidades de tiempo (desde la 9 hasta la 12) y esto es una
penalización por no haber podido prever el salto.

Para aclarar el funcionamiento del cauce, sería útil considerar una representación alternativa. La
figura 2.11 la misma secuencia de eventos que las figuras 2.9 y 2.10, pero representadas de forma
diferente. Figura2.10

Figura 2.9 FI DI CO FO EI WO
1 I1
FI DI CO FO EI WO 2 I2 I1
1 I1 3 I3 I2 I1
2 I2 I1 4 I4 I3 I2 I1
3 I3 I2 I1 5 I5 I4 I3 I2 I1
4 I4 I3 I2 I1 6 I6 I5 I4 I3 I2 I1
5 I5 I4 I3 I2 I1 7 I7 I6 I5 I4 I3 I2
6 I6 I5 I4 I3 I2 I1 8 I15
7 I7 I6 I5 I4 I3 I2 9 I16 I15
8 I8 I7 I6 I5 I4 I3 10 I16 I15
9 I9 I8 I7 I6 I5 I4 11 I16 I15
10 I9 I8 I7 I6 I5 12 I16 I15
11 I9 I8 I7 I6 13 I16 I15
12 I9 I8 I7 14 I16
13 I9 I8
14 I9

Etapas
Podría pensarse que cuanto mayor sea el número de etapas en el cauce, más rápida será la
velocidad de ejecución. Algunos diseñadores de la IBM S/360 observaron dos factores que frustran
este aparentemente sencillo patrón de diseño de alta prestaciones, y que se tiene que tomar en
cuanta al momento de diseñar:

1. La cantidad de lógica de control necesaria para manejar dependencias de memoria y de


registros aumenta enormemente con el número de etapas, esto puede llegar a una situación
donde la lógica para controlar el paso entre etapas sea más compleja que las propias etapas.
2. En cada etapa del cauce existe algún gasto extra debido a la transferencia de datos de buffer
a buffer y a la realización de varias funciones. Este gasto adicional puede prolongar
sensiblemente el tiempo de ejecución total de una instrucción.

La segmentación de instrucción es una poderosa técnica para aumentar las prestaciones pero
requiere un diseño cuidadoso si se desea obtener resultados óptimos con una complejidad
razonable.

15

Potrebbero piacerti anche