Вы находитесь на странице: 1из 13

Introduccin a los Microprocesadores

Qu es un microprocesador?
Es un circuito integrado que contiene en un solo chip o de forma monoltico a las
siguientes unidades:
a) Unidad de control:
Consiste en la implementacin de un autmata electrnico que realiza la labor
de organizar el funcionamiento interno de las siguientes unidades anexas, de tal
forma que se realice un trabajo til.
b) Unidad de ejecucin:
Es la coleccin de una o ms unidades aritmolgicas que se encargas del
procesamiento lgico y aritmtico. Estas unidades procesan rdenes
provenientes de una unidad de ejecucin se encuentran:

Una o ms ALUs (Unidad aritmtica-lgica).


Un micro-decodificador de micro-instrucciones.
Una o ms FPUs (unidades de punto flotante).

En los procesadores modernos puede existir de una hasta seis unidades de ejecucin
por procesador.
c) Una MMU tiene la responsabilidad de controlar el acceso de entrada y salida
para el intercambio de los siguientes componentes:
Memoria Cach; Memoria oculta: Es una RAM de acceso muy rpido y
funciona sncronamente a la velocidad del procesador, Se presentan en bajas
cantidades. Se presentan en bajas cantidades. Se utilizan cachs jerrquicos para
el funcionamiento lgico de intercambio de informacin.
Cach L1: Es la menor de todas las cachs de la jerarqua y contiene
actualmente 64KB de las instrucciones y 64KB de datos.
Cach L2: Mantiene una coleccin mediana de datos correspondiente a
la ejecucin de un ncleo de procesamiento para el caso de procesadores
multi-core.
Cach L3: Permite compartir informacin entre diversos ncleos de
procesamiento.
Actualmente los procesadores modernos encapsulan uno o ms
microprocesadores en una sola pastilla.
Administra el acceso a la DRAM de tal manera que permita el intercambio
de informacin de instrucciones y datos masivos almacenados ah.
Una de las operaciones ms importantes lo es el cmputo de direcciones
virtuales o direcciones fsicas, mediante la Unidad de Generacin de
Direccin (AGU).

Direccionamiento virtual: Espacio de direcciones lineal con tamao limitado


nicamente por la cantidad de bits utilizado por los punteros.
Ej. Un procesador de 32 bits, pude direccionas hasta 4GB de RAM.
Un procesador de 64 bits, puede direccionar hasta 264 bytes
Direccin fsica: Espacio de direcciones lnea con tamao limitado nicamente
por la capacidad instalada.
Cuando las direcciones virtuales no pueden ser traducidas a un espacio fsico el
procesador ejecuta o salta hacia otra parte del sistema operativo para ejecutar una rutina de
intercambio, que intentar cambiar pginas, de memoria ya caduca si las almacena en el
disco duro, y marca dichas pginas como memoria disponible, si hay espacio disponible se
resuelve la direccin fsica.
d) Unidad de prediccin de saltos (Branch Prediction Unit)
Su objetivo lo es tener precargado en el cach L1 las prximas instrucciones que
posiblemente se ejecuten de una previa bifurcacin.
EJ.
if (condicin)
{
<instrucciones>
}
else
{
<instrucciones>
}
e) Unidad de ejecucin especulativa (Espectulative Ejecution Unit)
En cooperacin con la unidad de prediccin de saltos, esta unidad provee
ejecucin por adelantado de las diversas lneas de ejecucin que una bifurcacin
puede tener, cuando la condicin se resuelva se toma nicamente los resultados
del camino adecuado desechndose los otros caminos de ejecucin, incluso si
estos ya terminaron.
f) Decodificador de instrucciones (ID)
Est fuertemente conectado con la unidad de control, es aqu donde comienza la
distribucin de trabajo con el resto de las unidades para realizar o ejecutar
instrucciones. Cada instruccin es dividida en seales internas del CPU para
movilizar las unidades involucradas con la realizacin de la instruccin.
Ej.
mov eax,1
add eax, 80 eax = eax + 80
g) Unidad de interfaz de BUS (BUS Interface Unit)

Es responsable de intercambiar informacin fsicamente con la memoria RAM


externa y los perifricos de entrada y salida.
BUS de control: Organiza las seales que ordena la escritura y/o lectura desde
o hacia la RAM o perifrico.
RD: Read (out)
WR: Write (out)
ACK: Acknowledge (input)
IOM: Input/Output Memory (out)
BUS de interrupciones: Recibe y reconoce seales de interrupcin.
INTn: Interruption (input)
INTACKn: Interruption Acknowledge (output)
BUS de datos: Transmite y recibe los datos provenientes de la memoria y de
los dispositivos de entrada y salida.
El BUS de datos de un procesador moderno es de 64 o hasta 256 hilos de
cobre.
BUS de direcciones: Transmite la direccin de memoria a direccin de
perifrico de entrada/salida al ser operado. El BUS de direccin actualmente es e
hasta 48bits, o hilos de cobre.

Modelo de programacin de un CPU


El modelo de programacin de un CPU, establece el paradigma sobre el cual el
programador se ajusta para escribir programas en ese procesador.
Por lo general un modelo de programacin consta de lo siguiente:
1) Una o ms memorias.
2) El conjunto de registros internos en el CPU:
Registro: Memoria interna del CPU que almacena un operador o un resultado, as
como direcciones de memoria. Cada registro tiene una capacidad medida en bits.
El modelo de programacin le asigna un nombre a cada registro.
3) Conjunto de instrucciones:
Se divide en los siguientes grupos por lo general:
CONTROL DE FLUJO DE PROGRAMA
CONTROL DE ESTADO DEL PROCESARO
INSTRUCCIONES ARITMTICAS Y LGICAS
INSTRUCCIONES DE MANIPULACION DE MEMORIA
INTRUCCIONES DE ENTRADA Y SALIDA
Control de flujo de programa son:

Saltos incondicionales. (go to)


Saltos condicionales. (if)
Llamada incondicional.
Llamada condicional.
Manipulacin de pila. (Last In First Out LIFO) (push, pop)

Control de estado de procesado:

Instrucciones de control de cach.


Instrucciones de control de direccionamiento a la memoria.
Instrucciones de administracin de energa.
Instrucciones de control de la palabra de estado (Propiedad que todo
procesador debe tener, son bits, bitcora de lo que pas en la anterior
instruccin, notificaciones, indicaciones, errores).

Instrucciones Aritmticas y lgicas.

Instrucciones aritmticas sobre enteros (sumar +, restar - y corrimiento de


bits >>, <<).
1100 << 1 = 11000 (corrimiento)
*Investigar: Registros SIPO, PIPO, PISO, Barrel Shifter.
Instrucciones lgicas: AND, OR, CMP (complemento, negacin).
Instrucciones de manipulacin de bits: <<< (rotacin), count (conteo,
paridad, nmero de bits en 1 o 0).

Instrucciones de manipulacin de Memoria:

Instrucciones de movimiento de memoria.


Instrucciones de procesamiento de texto.
Instrucciones de intercambio de memoria.

Instrucciones de Entrada y Salida:

IN
OUT

Modelo de programacin del 80386


80386 Liberado en el 1985 es el primer procesador comercial de 32 bits disponible para su
ensamble.
Qu significa que es un procesador de 32 bits?
Que su modelo de programacin soporta datos en los registros de hasta de 32 bits de
tamao. Incluidos el bus de direcciones.

Conjunto de registros del 386 son los siguientes:


EAX: Registro Acumulador.
EBX: Registro Base.
ECX: Registro Contador.
EDX: Registro Contador Auxiliar.
ESI: Registro ndice fuente.
EDI: Registro ndice destino.
ESP: Registro puntero de pila.
EBP: Registro puntero base.
EFLAGS: Palabra de estado.
Los registros EAX, EBX, ECX, EDX se subdividen as:
32

16

8bits

EAX > AX > AH AL

|-----------------------EAX ------------------------|
|----------AX------------|
|---AH---|---AL---|
Para los registros ESI, EDI, EBP y ESP
32

16bits

ESI -> SI
|-----------------------ESI ------------------------|
|----------SI------------|
Registros de segmento:
Existen cuatro registros llamados selector de segmento en modo real y selector de
descriptor en modo protegido. (Interactan con la MMU)
En modo real, la memoria est segmentada en pginas de 64KB cada una. 1MB de
RAM, lo cual es lo mximo direccionable en modo real.
Cuntas pginas tiene?
16 pginas de 64KB, pero las pginas se pueden traslapar, poner varios
programas distribuidos en esos 16. Podas manejar 65,536 programas diminutos.
Clculo de direccin:
Segmento: 0001 + Desplazamiento (puntero): 4DC8
Clculo de Direccin final en la memoria RAM:
0001 * 10 + 4DC8
00010
4DC8+
-------4DD8

26/02/16
Registro de segmento:
CS: Code Segment
Modo real, este segmento selecciona la pgina de 64KB correspondiente al
programa.
Modo protegido, este segmento selecciona el descriptor de cdigo. El descriptor es
una estructura de datos que indica, donde comienza y termina el programa en un
espacio virtual de 232 bytes. Actualmente existen hasta 65536 descriptores. Los
descriptores se almacenan en la RAM
DS: Data Segment
Modo real, cada segmento es hasta de 64KB.
Modo protegido, corresponde a un descriptor de datos de hasta 4GB mximo.
Investigar: Qu es un sistema operativo? (Kernel)
ES: Extra Segment
Igual que el DS, se utiliza en instrucciones de transferencia de datos entre pginas o
descriptores, en modo protegido.
GS: General Segment
Se utiliza como memoria reservada para el intercambio de informacin entre anillos.

Niveles o privilegios de acceso:


En modo protegido existen 4 anillos, desde el anillo 0 hasta el anillo 3.
Anillo: Conjunto de privilegios otorgados a un descriptor, Polticas de acceso.
Anillo 0: No restriccin (puede usar cualquier cdigo).
Anillo 1: Restriccin de I/O.
Anillo 2: Restriccin de configuracin.
Anillo 3: Restriccin de inicio de ejecucin.
Kernel de Windos y Linux slo usan Anillo 0 y las aplicaciones usan el Anillo 3.

01/03/16
REPRESENTACIN DE NMEROS EN EL CPU

Sin signo: Son cantidades representadas en binario, de tal manera que queden representadas
de forma acotada en un vector de bits.
Los lectores de bit disponibles en un CPU moderno son:
QWORD: Palabra cudruple (64 bits)
DWORD: Doble palabra. (32 bits)
WORD: Palabra (16 bits)
BYTE: Octeto (8 bits)
Para el BYTE: Una cantidad C, queda definida as mediante un vector de bits:
[b7 b6 b5 b4 b3 b2 b1 b0]
b7: MSB Most Significative Bit
b0: LSB Less Significative Bit
C= Sigma (i=0,7, b[i]*2^i)
C=

[]

El dominio de la cantidad C es desde 0 hasta 255


Para el WORD: Una cantidad C, se representa mediante un vector de 16 bits
b15: MSB, b0: LSB
C= Sigma (i=0, 15, b[i]*2^i)
C=

[]

El dominio de la cantidad C es desde 0 hasta 65535.

Enteros con signo:


Es posible utilizar los vectores bsicos BYTE, WORD, DWORD, QWORD para
representar cantidades negativas y positivas.
Lo nico que es necesario es utilizar uno de stos bits para el signo. Cul ser era
bit?
Las computadoras modernas no sabes restar. De hecho no tienen haga dicha
funcin. Entonces como realizan la resta?

Se utiliza la tcnica de codificacin llamada Complemento a 2.


Suponer que se desea representar -24 en una palabra, entonces ser necesario 16 bits
para esa representacin.
1) Convertir la magnitud de la cantidad de base 10 a base 2.
0000 0000 0001 1000
2) Aplicar complemente a cada bit del vector.
1111 1111 1110 0111
3) Sumar 1 al complemento anterior.
1111 1111 1110 1000
-24
Con el complemento 2 se pueden hacer restas?
S, mediante sumas.
Ej. 32 24
Si se suponen vectores de 16 bits, entonces
32 0000 0000 0010 0000 +
-24 1111 1111 1110 1000
------------------------------------0000 0000 0000 1000 8
Se ha llegado a una conclusin, el MSB de un vector de bits cualquiera, siempre ser el bit
de signo (Sing).
0: Positiva
1: Negativa
Ahora queremos resolver 24 32
0000 0000 0001 1000 24
1111 1111 1110 0000 -32
----------------------------------1111 1111 1111 1000 -8
0000 0000 0000 0111 // Aplicando complemento a 2.
0000 0000 0000 1000 8
Mediante el conocimiento del complemento a 2, es posible conocer una formula genera
para evaluar el vector de bits y extraer la cantidad codificada:

Si suponemos una palabra de 16 bits:


C = Sigma (i=0, 14, b[i]*2^i) b [15]*2^15
C=

[]

Demostracin:
Verificar que -1, es un complemente a 2
1111 1111 suponiendo un vector de 8 bits.
C = 127 128 = -1
Q.D.E (Quedum Demostratus Est)

Aritmtica de punto fijo:


Las computadoras utilizan nicamente enteros para representar cantidades
fraccionales. Las computadoras no pueden representar reales. Pero si pueden procesar
smbolos.
Cmo pueden representar fracciones si evidentemente slo manejan bits enteros?
Las fracciones slo existen en la imaginacin del usuario, es decir, los bits estn
sujeto a la interpretacin que se les d.
[S e3 e2 e1 e0 . f1 f2 f3]
e3*2^3 + e2*2^2 + e1*2^1 + e0*2^0 + f1*2^-1 + f2*2^-2 + f3*2^-3
Ejemplo: Sea sumar 0.125 + 0.5 = 0.625
00000.001
00000.100
-------------------00000.101
0.5 + 0.125 = 0.625
Sea sumar 0.5 0.125
00000.100

0.5

11111.111

-0.125

-------------------00000.011

0.25 + 0.125 = 0.375

Ejercicios:
Utilizando 4 bits para la parte fraccional, 3 para la entera y un bit de signo:
1) Cul es la cantidad ms pequea distinta de cero que se puede representar?
2) Cul es la cantidad ms grande positiva que se puede representar?
3) Realizar los cmputos siguientes:
3.25-7.0
2.5 1.125
7.0 7.0625
1.- 0000.0001 = 0.0625
2.- 0111.1111 = 7.9375
3.- 0011.0100 + 1001.0000 = 1100.0100 = -3.25
0010.1000 + 1110.1110 = 0001.0110 = 1.375
0111.0000 + 0111.0001 = 1111.1111 = -0.0625

04/03/16
Tarea de Microprocesadores
1) Construir un programa con la coleccin de funciones que permita realizar
aritmtica de punto fijo utilizando la notacin +-14.17
Calcular:
a) Suma, resta, multiplicacin, divisin (10pts)
b) Sqrt, sin, cos
(20pts)
Notas: La raz cuadrada se puede resolver por el mtodo de Newton-Raphson.
Sin, Cos, se pueden resolver por series de Taylor.
Observaciones: Sin y Cos, se pueden resolver con suficiente precisin con las
primeros cuatro trminos de Taylor, sin usar bucles.
2) Construir un programa en ensamblador que realice las siguientes operaciones:
a) Cmputo del MCD (mximo comn divisor): Algoritmo de Euclides (10pts)
b) Cmputo del mcm (mnimo comn mltiplo)
(10pts)
c) Conversin de una cadena de minsculas a maysculas
(10pts)
3) Contestas las siguientes preguntas:
1. Clasificar las siguientes instrucciones por tipo de direccionamiento: (20pts)
mov eax,1
add eax, ebx
add ecx, [ecx*4+edx]
xor esi, [edi]
2. Cul es la diferencia entre el modo real y el modo protegido con respecto a
la forma de administrar la memoria en el 386? (1/2 cuartilla) (20 pts)
Entrega: cornejo@ceti.mx, hasta mircoles 9 de marzo de 2016
Revisin de programas: Viernes 11 de marzo de 2016

Multiplicacin y divisin de enteros


En la multiplicacin de dos vectores de bits, BYTE, WORD, DWORD, es importante
conocer cules son los requerimientos de almacenamiento del resultado, ya que sucede algo
interesante al respecto.
Ejemplo: Sea multiplicar 8*14 suponiendo vectores de 4 bits (nibbles).

24*24= 28
28*28=216
232*232=264
Aritmtica de Baldor (Tarea)
A*2^8 * B*2^8 = AB*2^16
A*2^8 = AB*2^16 / B*2^8

Вам также может понравиться