miércoles, 24 de abril de 2013

Microprocesdador


                                
                                        FUNCIONAMIENTO DE UN MICROPROCESADOR



El microprocesador ejecuta instrucciones almacenadas como números binarios en la memoria principal . La ejecución se puede realizar en varias fases:

PreFetch, Pre lectura de la instrucción desde la memoria principal.
Fetch, envio de la instrucción al decodificador (una parte de la CPU).
Decodificación de instrucción, es decir determinar que instrucción es y por tanto que se debe hacer.
Lectura de operandos (si los hay).
Ejecución de la microinstrucción.
Escritura de los resultados, primero en el registro acumulador y después en la memoria RAM si fuera necesario.

Cada una de estas fases se realiza en uno o varios ciclos de CPU, dependiendo de la estructura del procesador, y concretamente de su grado de segmentación. La duración de estos ciclos viene determinada por la frecuencia de reloj, y nunca podrá ser inferior al tiempo requerido para realizar la tarea individual (en un solo ciclo) de mayor tiempo. El microprocesador se conecta a un oscilador que genera varios ciclos en un segundo.

Las instrucciones que lee, interpreta y ejecuta el procesador están escritas en su propio lenguaje, el lenguaje-máquina. También se utiliza un lenguaje de más alto nivel el ensamblador. Cada modelo de procesador tiene su propio lenguaje-máquina y necesita su propio ensamblador, es decir, las instruciones de los AMD e Intel serán distintas.





                                                   MICROPROCESADORES INTEL



Evolucion de los microprocesadores familia Intel 



                                          REGISTROS DE PROPÓSITO GENERAL




Registros de propósito general o en ingles GPRs o "General Purpose Registers"están disponibles para almacenar datos transitorios que requiere el programa.

Por ejemplo, cuando un programa se interrumpe su estado, es decir, el valor de los registros como el contador de programa, registro de instrucción o la memoria registro de direcciones - se pueden guardar en los registros de propósito general, lista para recordar cuando el programa está listo para comenzar de nuevo.

En general, cuanto más registra un CPU tiene disponible, más rápido se puede trabajar.







                                             MODOS  DE DIRECCIONAMIENTOS


permite determinar un operando , o la ubicación de un operando en una instrucción. Estos operandos pueden residir en diversas partes:

1.-La propia instrucción

2.-Memoria principal


3.-Registros internos de la CPU


-Los programas utilizan varios MD motivados por:

1.- Ahorro de espacio

2.- Código reubicable : se puede almacenar el programa en diversas zonas de memoria sin q afecte a la ejecución del código


3.-Estructuras de datos.








DIRECCIONAMIENTO INMEDIATO


a) El operando está presente en la propia instrucción, por lo tanto, esta opera con un valor constante.

b) El direccionamiento es mas rápido  El operando se encuentra ya en IR al fin de la fase de búsqueda. 2 palabras: lectura de memoria adicional.



DIRECCIONAMIENTO DIRECTO

La instrucción contiene la dirección real del operando.


1.- Lectura MAS RAPIDA q en memoria >> ninguna lectura adicional.
2.- Solo necesita CD pequeño.
3.- Rango operando = Rango registro >> LIMITA espacio de direcciones.


°Direccionamiento absoluto:

a) La instrucción contiene la dirección de memoria donde se encuentra el objeto, q se halla en una posición de mem principal.
b) Rango de posiciones limitado por CO.
c) Formato de 2 palabras >> MAYOR CAPACIDAD DE DIRECCIONAMIENTO >> lectura adicional.

° Direccionamiento mediante registro

a) Operando almacenado en un registro de la CPU. La instrucción indica de q registro se trata.
b) Registros limitados.




DIRECCIONAMIENTO INDIRECTO
El campo de operando contiene una dirección de memoria, en la que se encuentra la dirección efectiva del operando.



DIRECCIONAMIENTO ABSOLUTO
El campo de operando contiene una dirección en memoria, en la que se encuentra la instrucción.
De registro: Sirve para especificar operandos que están en registros.





DIRECCIONAMIENTO INDIRECTO MEDIANTE REGISTROS
El campo de operando de la instrucción contiene un identificador de registro en el que se encuentra la dirección efectiva del operando. En este modo el campo de la dirección de la instrucción da la dirección en donde la dirección efectiva se almacena en la memoria. El control localiza la instrucción de la memoria y utiliza su parte de dirección para accesar la memoria de nuevo para leer una dirección efectiva. Unos pocos modos de direccionamiento requieren que el campo de dirección de la instrucción sea sumado al control de un registro especificado en el procesador. La dirección efectiva en este modo se obtiene del siguiente cálculo:
Dir. efectiva = Dir. de la parte de la instrucción + Contenido del registro del procesador.
  


DIRECCIONAMIENTO RESPECTO A UN REGISTRO BASE
Este modo de direccionamiento es muy usado por los ensambladores cuando se llaman a las funciones (para acceder a los parametros apilados en la pila, valga la redundancia). Consiste, al igual que el indirecto a través de registro, en calcular la EA (Effective Address) como la suma del contenido del registro base y un cierto desplazamiento (u offset) que siempre será positivo. Esta técnica permite códigos reentrantes y acceder de forma fácil y rápida a posiciones cercanas de memoria. 

EA = RB+offset
RB = registro base
offset = desplazamiento


DIRECCIONAMIENTO RESPECTO A UN REGISTRO INDICE
Es similar al anterior, lo único que es el contenido del registro indice el que indica el desplazamiento que se produce a partir de una dirección de memoria que se pasa también como argumento a la orden que utiliza este modo de direccionamiento. Aunque en esencia son dos modos equivalentes. La EA se calcula como la suma del contenido del registro indice y una dirección de memoria:


EA = RI+DM
RI = registro indice
DM = direccion de memoria
-> RI se comporta como un offset






                                               
                                                 TRANSFERENCIA ENTRE REGISTROS


Los registros de computadora están representados por letras mayúsculas (en ocasiones seguidas de números), para denotar la función del registro. Por ejemplo, el registro que contiene una dirección para la unidad de memoria, por lo general se llama un registro de direccionamiento de memoria y se designan las letras MAR por sus siglas en inglés (memory address register). Otros nombres para registros son PC (contador de programa), IR (registro de instrucción) y Rl (registro de procesador). Los flip-flops individuales en un registro de n bits están numerados en una secuencia de O hasta n — 1, comenzando desde O en la posición de la extrema derecha y aumentando los números hacia la izquierda. La figura 4-1 muestra la representación de registros en forma de diagrama de bloque. La manera más común de representar un registro es mediante una caja rectangular con el nombre del registro dentro. Los bits individuales pueden distinguirse como en el ejemplo (b). La numeración de bits en un registro de 16 bits puede señalarse en la parte superior de la caja, como se muestra en el ejemplo (c). Un registro de 16 bits se divide en 2 partes en el ejemplo (d). Los bits del O al 7 reciben el símbolo L (byte bajo) y los bits del 8 al 15 reciben el símbolo H (byte alto). El nombre del registro de 16 bits es PC. El símbolo PC (0-7) o Pc (L) denomina el byte de orden menor y PC (8-15) o PC (H) designa al byte de orden mayor.




La transferencia de información de un registro a otro se representa en forma simbólica mediante un operador de sustitución. El enunciado:



R2 <— Rl


denota una transferencia del contenido del registro Rl al registro R2. Designa la sustitución del contenido de R2 por el contenido de Rl. Por definición, el contenido del registro fuente Rl no cambia después de la transferencia.


Un enunciado que especifica una transferencia de registro implica que están disponibles circuitos de la salida del registro fuente a la entrada del registro destino y que el registro destino tiene capacidad de carga paralela. Normalmente, deseamos que la transferencia ocurra sólo bajo una condición de control predeterminada. Esto puede mostrarse mediante un enunciado si, entonces Qf-then)



Si (P = 1) entonces (R2 <— Rl)




donde P es una señal de control que se genera en la sección de control. En ocasiones es conveniente separar las variables de control de la operación de transferencia de registros al especificar una función de control. Una función de control es una variable booleana, que es igual a O o a 1. La función de control se incluye en el enunciado como sigue:




P: R2~-Rl



La condición de control se termina con un signo de dos puntos. Representa la necesidad de que la operación de transferencia sea ejecutada sólo por el hardware si P = 1.








                                                     MODALIDADES DE OPERACION


El procesador soporta numerosos modos de operación para código x86, en los cuáles no todas las instrucciones están disponibles. Un sub-repertorio de instrucciones de 16-bit está disponible en “modo real” (disponible en todos los procesadores x86), “modo protegido 16-bit” (disponible desde el Intel 80286), o en el “modo v86” (disponible desde el Intel 80386). Por su parte, las instrucciones de 32-bits están disponibles para el “modo protegido 32-bit” y para el “modo heredado” (disponible con las extensiones de 64 bits). El repertorio de instrucciones parte de ideas similares en cada modo, pero da lugar a distintas formas de acceso a memoria y de este modo emplea estrategias de programación diferentes. 

Los modos en los que el código x86 puede ser ejecutado son: 
Modo real (16-bit) 
Modo protegido (16-bit y 32-bit) 
Modo 8086 virtual (16-bit) 
System Management Mode (16-bit) 
Modo largo (64-bit) 



MODO REAL

El modo real (también llamado modo de dirección real en los manuales de Intel) es un modo de operación del 80286 y anteriores CPUs compatibles de la arquitectura x86. El modo real está caracterizado por 20 bits de espacio de direcciones segmentado (significando que solamente se puede direccionar 1 MB de memoria), acceso directo del software a las rutinas del BIOS y el hardware periférico, y no tiene conceptos de protección de memoria o multitarea a nivel de hardware. Todos los CPUs x86 de las series del 80286 y posteriores empiezan en modo real al encenderse el computador; los CPUs 80186 y anteriores tenían solo un modo operacional, que era equivalente al modo real en chips posteriores. 



MODO PROTEGIDO 

El modo protegido es un modo operacional de los CPUs compatibles x86 de la serie 80286 y posteriores. El modo protegido tiene un número de nuevas características diseñadas para mejorar las multitareas y la estabilidad del sistema, como protección de memoria, y soporte de hardware para memoria virtual así como de conmutación de tareas. A veces es abreviado como p-mode y también llamado Protected Virtual Address Mode (Modo de Dirección Virtual Protegido) en el manual de referencia de programador del iAPX 286 de Intel, (Nota, iAPX 286 es solo otro nombre para el Intel 80286). En el 80386 y procesadores de 32 bits posteriores se agregó un sistema de paginación que es parte del modo protegido. 



MODO 8086 VIRTUAL 

En el microprocesador 80386 y posteriores, el modo 8086 virtual, también llamado modo real virtual o VM86, permite la ejecución de aplicaciones de modo real que violan las reglas bajo control de un sistema operativo de modo protegido. 

El VM86 usaba la forma de segmentación del modo real, pero usaba la dirección resultante de 20 bits (realmente 21 bits), tratándola como una dirección lineal, de tal manera que era sujeta a paginación. 




Era usado para ejecutar programas DOS en Microsoft Windows/386, Windows 3.x, Windows 95, Windows 98, Windows Me, y OS/2 2.x y más adelante, a través de las máquinas DOS virtuales, también en SCO UNIX a través de Merge, y en Linux por medio de dosemu. 








MODO DE GERENCIA DEL SISTEMA 

El Modo de Gerencia de Sistema, o System Management Mode (SMM) en inglés, es un modo de operación lanzado por primera vez con el Intel 386SL y disponible en microprocesadores posteriores de la arquitectura x86, en el que es suspendida toda la ejecución normal (incluyendo el sistema operativo), y es ejecutado un software especial separado en un modo de alto privilegio (usualmente un depurador en firmware o asistido por hardware). 

Algunos usos comunes del SMM son: 

Para emular hardware de la tarjeta madre que no está implementado o tiene errores (bugs). 
Operaciones de gerencia de energía, como encendido de ventiladores. 
Para emular un ratón o un teclado PS/2 desde un USB. 
Funciones de seguridad del sistema, como apagar el computador cuando hay alta temperatura en el CPU. 
Configuración del sistema, como por ejemplo en los computadores notebook de Toshiba e IBM. 


MODO LARGO 

En la arquitectura de computador AMD64 (x86-64), el modo largo (long mode) es el modo donde una aplicación o sistema operativo de 64 bits pueden acceder a las instrucciones y los registros de 64 bits del procesador, mientras que los programas de 32 bits y 16 bits se ejecutan en un sub-modo de compatibilidad.
Un procesador x86-64 actúa de la misma manera que un procesador IA-32 cuando corre en modo real o modo protegido, que son sub-modos soportados cuando el procesador no está en el modo largo.


                                                          
                                                           VELOCIDAD DEL PROCESO




La velocidad de un micro se mide en megahercios (MHz), aunque esto es sólo una medida de la fuerza bruta del micro; un micro simple y anticuado a 200 MHz puede ser mucho más lento que uno más complejo y moderno (con más transistores, mejor organizado...) que vaya a "sólo" 150 MHz. Es lo mismo que ocurre con los motores de coche: un motor americano de los años 60 puede tener 5.000 cm3, pero no tiene nada que hacer contra un multiválvula actual de "sólo" 2.000 cm3.

Debido a la extrema dificultad de fabricar componentes electrónicos que funcionen a las inmensas velocidades de MHz habituales hoy en día, todos los micros modernos tienen 2 velocidades:

Velocidad interna: la velocidad a la que funciona el micro internamente (200, 333, 450... MHz).
Velocidad externa o de bus: o también "FSB"; la velocidad con la que se comunican el micro y el mother board, para poder economizar el precio de ésta. Típicamente, 33, 60, 66 ó 100 MHz.
La cifra por la que se multiplica la velocidad externa o del board para dar la interna o del micro es el multiplicador; por ejemplo, un Pentium III a 450 MHz utiliza una velocidad de bus de 100 MHz y un multiplicador 4,5x.





                                                                     SEGMENTOS




Los registros de segmento se utilizan para referenciar áreas de memoria. La plataforma IA-32 permite direccionar la memoria según el modelo de memoria lineal o el modelo de memoria segmentada. El modelo de memoria lineal presenta todo el espacio de direcciones de la memoria como un espacio contiguo. Todas las instrucciones, los datos y la pila se encuentran en el mismo espacio de direcciones de memoria. Cada posición de memoria se referencia mediante una dirección específica llamada "dirección lineal".

El problema del enfoque anterior consiste en que todos los datos se encuentran mezclados entre si y a la vez distribuidos a lo largo de todo el espacio de direcciones memoria, lo cual hace que su manejo sea engorroso e ineficiente. El modelo de memoria segmentada resuelve este problema dividendo el espacio de direcciones en segmentos independientes entre si. Cada segmento contiene un tipo específico de información, es decir el código (las instrucciones) se ubica en un segmento, los datos en otro y la pila en un tercer segmento. Las posiciones de memoria en los segmentos se definen por direcciones lógicas. Una dirección lógica está compuesta por una dirección de segmento y un desplazamiento. El procesador traduce una dirección lógica a una dirección lineal.


Registro de segmento Descripción
cs                                Segmento de código
ds                                Segmento de datos
ss                                Segmento de pila
es                                 Apuntador de segmento extra
fs                                Apuntador de segmento extra
gs                                Apuntador de segmento extra



DIRECCIONES
El bus de las direcciones es el conjunto de vías que llevan la información acerca de dónde, en la memoria, se obtendrán los datos que serán transferidos hacia o desde ella. Por este bus circulan direcciones de memoria que indican de qué localidad de memoria se leen o escriben datos que viajan en el bus de datos. La velocidad del bus de direcciones es la misma a la del bus de datos. El ancho del bus de direcciones dá la dirección-habilidad del procesador, que es cuánta memoria puede ser direccionada por el procesador. Un bus con 16 líneas, por ejemplo, puede trabajar directamente con 216 direcciones de memoria; eso es 65,536 (o 64 KB) localidades de memoria posibles. Los diversos microprocesadores usados en varias PCs, por lo regular, cuentan con un bus de direcciones de 20 a 32 bits. El Pentium y el Pentium Pro tienen un bus de direcciones de 32 bits, otros fabricantes de chips han prolongado el alcance de algunos de sus productos a 64 bits.

El tamaño del bus de direcciones no tiene un impacto directo en el rendimiento.

Los procesadores normalmente direccionan más memoria física de la existente, y de hecho normalmente los chipset o algunos factores en la motherboard ponen las restricciones a la cantidad máxima de memoria del sistema. Por ejemplo, un Pentium puede direccionar teóricamente 4GB de memoria RAM, pero la mayoría de las motherboard normales no soportará ni siquiera la cuarta parte.

Tamaño del Bus de direcciones y RAM máxima en diferentes procesadores
En la tabla 1 se muestra el ancho del bus de direcciones y la memoria RAM Máxima para varios microprocesadores.
.





                                                                       MEMORIAS

Las memorias son dispositivos encargados de almacenar información, programas y datos. Estos
dispositivos pueden ser vistos como un conjunto lineal de celdas, en los que cada una tiene un
número asignado, el cual es único y lo llamaremos dirección. La estructura lógica de una memoria
puede ser comparada con un arreglo, en el cual cada posición tiene un índice correspondiente. 

Dirección Datos
01h      0h
02h    5h
03h     5h
04h     0h
05h     Ch
06h       ...
07h        ...
08h       ...
09h       ...
0Ah        ...

No hay comentarios:

Publicar un comentario