El número de dígitos binarios que el chip Intel 80486 puede procesar simultáneamente es
C
80486
El Inte80486 es un microprocesador de 32 bits lanzado por Intel en 1989. Utiliza un proceso de fabricación de 1 mm e integra 1,2 millones de transistores en su interior. El bus de datos interno y externo es de 32 bits, el bus de direcciones es de 32 bits, puede direccionar 4 GB de espacio de almacenamiento, admite tecnología de administración de almacenamiento virtual y el espacio de almacenamiento virtual es de 64 TB. El chip integra una unidad operativa de punto flotante y un caché de 8 KB (caché L1), y también admite caché externo (caché L2). La unidad de procesamiento de números enteros adopta una estructura RISC de conjunto de instrucciones reducido, que mejora la velocidad de ejecución de las instrucciones. Además, el microprocesador 80486 también introdujo tecnología de multiplicación de reloj y una nueva estructura de bus interno, lo que permite que la frecuencia principal supere los 100 MHz.
Estructura interna del microprocesador Intel 80486
La CPU 80486 incluye internamente componentes de interfaz de bus, componentes de captación previa de instrucciones, componentes de decodificación de instrucciones, componentes de unidad de prueba de control y protección, componentes de ejecución de enteros, componentes de segmentación, componente de paginación, así como componente de operación de punto flotante y componente de administración de caché.
1. Unidad de interfaz de bus
La Unidad de interfaz de bus (BIU) está conectada al bus externo y se utiliza para administrar los buses de dirección, datos y control que acceden a la memoria externa y a los puertos de E/S. Dentro del procesador, la BIU intercambia información principalmente con el componente de captación previa de instrucciones y el componente de caché, y almacena las instrucciones captadas previamente en la cola de códigos de instrucciones.
Hay tres situaciones en las que BIU y los componentes de la caché intercambian datos: en primer lugar, se llenan los datos en la memoria caché y BIU lee 16 bytes del bus fuera del chip a la caché a la vez; el contenido de la memoria caché es Si se modifica la operación interna del procesador, la BIU también escribirá el contenido modificado en la memoria externa, en tercer lugar, si el operando de la memoria al que se accederá mediante una solicitud de operación de lectura no está en la memoria caché; memoria caché, la operación de lectura será controlada por el bus BIU. Operará directamente en la memoria externa.
Al buscar previamente el código de instrucción, la BIU transfiere el código de instrucción obtenido de la memoria externa a la unidad de búsqueda previa de código y a la memoria caché interna al mismo tiempo, de modo que se pueda acceder directamente a la alta velocidad la siguiente vez. momento en que se recupera previamente la misma instrucción en la memoria intermedia.
2. Componente de captación previa de instrucciones
Hay una cola de captación previa de instrucciones de 32 bytes dentro de la CPU 80486. Durante el ciclo inactivo del bus, el componente de captación previa de instrucciones (precargador) forma la dirección de memoria y emite la instrucción de captación previa al servidor. BIU.Pregunta. El componente de captación previa lee 16 bytes de código de instrucción a la vez y lo almacena en la cola de captación previa. La cola de instrucciones sigue la regla FIFO (primero en entrar, primero en salir) y se mueve automáticamente al final de salida. Si el caché llega durante la captación previa de instrucciones, no se genera ningún ciclo de bus. Cuando se encuentran operaciones como saltos, interrupciones, llamadas a subrutinas, etc., se borra la cola de captación previa.
3. Unidad de decodificación de instrucciones
La unidad de decodificación de instrucciones IDU (unidad de decodificación de instrucciones) lee instrucciones de la cola de captación previa de instrucciones y las decodifica, convirtiéndolas en señales de control correspondientes. El proceso de decodificación se divide en dos pasos: primero, determine si es necesario acceder a la memoria cuando se ejecuta la instrucción. Si es necesario, se genera un ciclo de acceso al bus inmediatamente para que los operandos de la memoria puedan estar listos después de decodificar la instrucción; luego se generan señales de control para otros componentes.
4. Componente de unidad de prueba de control y protección
El componente de control CPTU (unidad de prueba de control y protección) controla el componente de ejecución de números enteros, el componente de operación de punto flotante y el componente de gestión de segmentos para que ejecuten instrucciones decodificadas.
5. Unidad de ejecución de enteros
La unidad de ejecución de enteros IU (unidad de ruta de datos de enteros) incluye cuatro registros de propósito general de 32 bits, dos registros de direcciones indirectas de 32 bits, dos registros de puntero de 32 bits y un registro de bandera. , un registro de desplazamiento de barril de 64 bits y una unidad lógica aritmética, etc. Puede completar la transmisión de números enteros, operaciones de suma y resta, operaciones lógicas, etc. en un ciclo de reloj. La CPU 80486 adopta la tecnología RISC y cambia el control lógico del microprograma al control lógico del cableado del hardware, lo que acorta el tiempo de decodificación y ejecución de las instrucciones. Algunas instrucciones básicas se pueden completar en un ciclo de reloj.
Dos conjuntos de buses bidireccionales de 32 bits conectan la unidad de números enteros y la unidad de punto flotante. Juntos, estos buses pueden transmitir operandos de 64 bits. Este conjunto de buses también conecta la unidad procesadora con la caché. El contenido del registro general se transfiere a la unidad de segmentación a través de este conjunto de buses y se utiliza para generar la dirección efectiva de la unidad de memoria.
6. Unidad de punto flotante
La CPU 80486 integra un coprocesador matemático 80487 mejorado, llamado unidad de punto flotante FPU (unidad de punto flotante), que se utiliza para completar operaciones de punto flotante. Dado que la FPU y la CPU están integradas y empaquetadas en un chip, y el canal de datos entre esta y la CPU es de 64 bits, cuando recupera datos de los registros internos y de la caché del chip, la velocidad de ejecución mejorará enormemente.
7. Unidad de segmentación y unidad de paginación
La CPU 80486 está equipada con una unidad de segmentación SU (unidad de segmentación) y una unidad de paginación PU (unidad de paginación) para implementar la protección de la memoria y la gestión de la memoria virtual. El componente de segmentación convierte direcciones lógicas en direcciones lineales y el uso de caché segmentada puede mejorar la velocidad de conversión. El componente de paginación se utiliza para completar el almacenamiento virtual, paginar las direcciones lineales formadas por el componente de segmentación y convertirlas en direcciones físicas. Para mejorar la velocidad de conversión de la página, el componente de paginación también integra un búfer de búsqueda de traducción TLB (el búfer de búsqueda de traducción).
8. Componente de administración de caché
La CPU 80486 integra un caché mixto de datos/instrucciones llamado componente de administración de caché CU (unidad de caché). En la mayoría de los casos, la CPU puede acceder a datos e instrucciones en la memoria caché del chip, lo que reduce el tiempo de acceso a la CPU. En el diseño de la placa base que coincide con el 80486 DX, se utiliza una caché secundaria de gran capacidad de 128 KB a 256 KB para mejorar la tasa de aciertos de la caché en el chip (caché L1) y la caché fuera del chip (L2). caché) puede llegar a 98 . El ancho del bus en el chip de la CPU es de hasta 128 bits, y el componente de interfaz del bus transmitirá datos entre el caché y la memoria 16 bytes a la vez, lo que mejora en gran medida la velocidad de procesamiento de datos. El componente de caché en la CPU 80486 trabaja en estrecha colaboración con el componente de captación previa de instrucciones. Una vez que el código de captación previa no llega al caché, la BIU llena el caché, recupera el código de instrucción de la memoria y lo envía al componente de caché y a la captación previa de instrucciones. componente al mismo tiempo.
Los registros del microprocesador 80486
Se pueden dividir en cuatro categorías según sus funciones: registros básicos, registros del sistema, registros de depuración y prueba y registros de punto flotante.
Los registros de la CPU 80486 generalmente se pueden dividir en dos categorías: visibles para el programa e invisibles. Los registros que se utilizan durante la programación y cuyo contenido puede modificarse mediante instrucciones se denominan registros visibles para el programa. Durante la programación, los registros a los que no se puede acceder directamente se denominan registros invisibles al programa, pero se puede hacer referencia a ellos indirectamente durante la programación. Los registros invisibles al programa se utilizan para controlar y operar el sistema de memoria en modo protegido.
1. Registros básicos (registros de arquitectura base)
Los registros básicos incluyen ocho registros de propósito general EAX, EBX, ECX, EDX, EBP, ESP, EDI, ESI, un registro de puntero de instrucción EIP; DS, ES, SS, FS y GS; un registro de banderas EFLAGS. Los registros básicos de la CPU 80486 se muestran en la Figura 2.11. Todos son registros visibles para el programa.
(1) Registros de propósito general (registros de propósito general)
Los registros de propósito general incluyen EAX, EBX, ECX, EDX, EBP, ESP, EDI y ESI.
Figura 2.11 El conjunto de registros básico de la CPU 80486
EAX, EBX, ECX y EDX se pueden utilizar como registros de 32 bits, registros de 16 bits o registros de 8 bits. registros. EAX se puede utilizar como acumulador para operaciones de multiplicación, división y algunas instrucciones de ajuste. Para estas instrucciones, el acumulador suele expresarse en forma implícita. El registro EAX también puede contener la dirección de desplazamiento de la ubicación de memoria a la que se accede. EBX se utiliza a menudo como puntero de dirección para almacenar la dirección de desplazamiento de la unidad de memoria a la que se accede. ECX se utiliza a menudo como contador para mantener el valor de conteo de las instrucciones. El registro ECX también puede contener la dirección de desplazamiento de la unidad de memoria donde se encuentran los datos a los que se accede. Las instrucciones utilizadas para contar incluyen instrucciones de cadena repetida, instrucciones de desplazamiento e instrucciones de bucle. Las instrucciones de cambio se cuentan con CL, las instrucciones de cadena repetidas se cuentan con CX y las instrucciones de bucle se cuentan con CX o ECX. EDX se usa a menudo junto con EAX para guardar el resultado parcial de la multiplicación o el dividendo antes de la operación de división. También puede guardar datos de la memoria direccionada.
EBP y ESP son registros de 32 bits, que también se pueden usar como registros BP y SP de 16 bits, y a menudo se usan para operaciones de pila de conos. EDI y ESI se utilizan a menudo para operaciones de cadenas. EDI se utiliza para direccionar la cadena de datos de destino y ESI se utiliza para direccionar la cadena de datos de origen.
(2) Registro de puntero de instrucción
El registro de puntero de instrucción EIP (puntero de instrucción adicional) almacena la dirección de desplazamiento de la instrucción. El microprocesador funciona en modo real y EIP es el registro IP (16 bits). Cuando la CPU 80486 funciona en modo protegido, EIP es un registro de 32 bits. EIP siempre apunta a la siguiente instrucción del programa (es decir, el contenido de EIP aumenta automáticamente en 1 y apunta a la siguiente unidad de almacenamiento). EIP es utilizado por un microprocesador para direccionar secuencialmente
la siguiente instrucción dentro de un segmento de código en un programa. Cuando se encuentra una instrucción de salto o una instrucción de llamada, es necesario modificar el contenido del registro del puntero de instrucción.
(3) Registro de banderas EFR
EFR (registro de banderas adicionales) incluye bits de estado, bits de control y bits de bandera del sistema, que se utilizan para indicar el estado del microprocesador y controlar el funcionamiento del microprocesador. El registro de bandera de CPU 80486 se muestra en la Figura 2.12.
① Indicadores de estado: incluido el indicador de acarreo CF, el indicador de paridad PF, el indicador de acarreo auxiliar AF, el indicador de cero ZF, el indicador de símbolo SF y el indicador de desbordamiento OF.
② Bits de indicador de control: incluido el indicador de trampa (indicador de operación de un solo paso) TF, el indicador de interrupción IF y el indicador de dirección DF. Los bits de indicador de estado y los bits de indicador de control en el registro de indicadores de la CPU 80486 tienen exactamente las mismas funciones que los bits de indicador de estado y los bits de indicador de control en el registro de indicadores de la CPU 8086, por lo que no se describirán aquí.
③ Indicadores del sistema y campos IOPL: Los indicadores del sistema y campos IOPL en el registro EFR se utilizan para controlar el sistema operativo o realizar determinadas operaciones. No pueden ser modificados por las aplicaciones.
IOPL (campo de nivel de privilegio de E/S): indicador de nivel de privilegio de entrada/salida.
Especifica el nivel de privilegio en el que se pueden utilizar instrucciones sensibles a E/S. En modo protegido, estos dos códigos se pueden usar para representar cuatro niveles de privilegios: 0, 1, 2 y 3. El nivel 0 tiene los privilegios más altos y el nivel 3 tiene los privilegios más bajos. Hay algunas instrucciones sensibles de E/S en procesadores superiores a 80286, como CLI (instrucción de interrupción), STI (instrucción de interrupción), IN (entrada), OUT (salida). El valor de IOPL especifica el nivel de privilegio en el que se pueden ejecutar estas instrucciones. Sólo los programas con privilegios superiores a IOPL pueden ejecutar instrucciones confidenciales de E/S, y los programas con privilegios inferiores a IOPL provocarán una excepción si intentan ejecutar instrucciones confidenciales.
NT (bandera de tarea anidada): Bandera de anidación de tareas. En modo protegido, indica que la tarea que se está ejecutando actualmente está anidada dentro de otra tarea. Cuando las tareas están anidadas, NT=1; de lo contrario, NT=0.
RF (reanudar bandera): Reanudar bandera. Se utiliza con registros de depuración para garantizar que los puntos de interrupción no se procesen repetidamente. Cuando RF = 1, incluso si se encuentra un punto de interrupción o una falla, no se generará ninguna interrupción anormal.
VM (indicador de modo virtual 8086): indicador de modo virtual 8086. Se utiliza para seleccionar el modo de funcionamiento virtual en sistemas en modo protegido. VM=1, habilita el modo virtual 8086; VM=0, vuelve al modo protegido.
AC (bandera de verificación de alineación): Bandera de verificación de cola. Si se aborda una palabra o una palabra doble en un límite que no es una palabra o una palabra doble, se activará el indicador de verificación de cola.
(4) Registros de segmento
El microprocesador 80486 incluye seis registros de segmento, que almacenan la dirección base del segmento (modo de dirección real) o el selector (modo protegido) respectivamente, y se utilizan con Otros registros en el microprocesador se combinan para generar la dirección física de la ubicación de la memoria. Estructura de registro
① Registro de segmento de código CS. Un segmento de código es un área de almacenamiento que se utiliza para contener el código de programa del microprocesador (programas y procedimientos). CS almacena la dirección inicial del segmento de código. En modo real, define el punto de partida de un segmento de memoria de 64 KB. Cuando opera en modo protegido, selecciona un descriptor que describe la dirección inicial y la longitud de la ubicación de la memoria donde se encuentra el código del programa. En modo protegido, la longitud del segmento de código es de 4 GB.
② Registro de segmento de datos DS. El segmento de datos es un área de almacenamiento que almacena datos. La mayoría de los datos utilizados en el programa se encuentran en el segmento de datos. DS se utiliza para almacenar la dirección inicial del segmento de datos. Los datos en el segmento de datos se pueden direccionar a través de la dirección de compensación u otros registros que contengan la dirección de compensación. Cuando opera en modo real, define el punto de partida de un segmento de memoria de datos de 64 KB. En modo protegido, la longitud del segmento de datos es de 4 GB.
③ Registro de segmento de pila. El registro de segmento de pila SS se utiliza para almacenar la dirección inicial del segmento de pila, y el registro de puntero de pila ESP determina la dirección de entrada actual en el segmento de pila. El registro EBP también puede direccionar datos dentro del segmento de pila.
④ Registro de segmento adicional ES. ES almacena la dirección inicial del segmento de datos adicional. A menudo se utiliza para almacenar la dirección base del segmento de datos o como la dirección base del segmento de datos de destino en operaciones de cadena.
⑤ El segmento adicional registra FS y GS. FS y GS son registros de segmentos de datos adicionales que tienen la misma función que ES para permitir que los programas accedan a dos segmentos de datos adicionales.
En modo protegido, cada registro de segmento contiene un área invisible para el programa. El área invisible para el programa de estos registros a menudo se denomina caché de descriptores y, por lo tanto, es una pequeña memoria donde se almacena la información. Estos cachés de descriptores no deben confundirse con los cachés primarios o secundarios del microprocesador. Siempre que cambia el contenido de un registro de segmento, la dirección base, el límite de segmento y los permisos de acceso se cargan en el área invisible para el programa del registro de segmento. Por ejemplo, cuando se almacena una nueva dirección base de segmento en un registro de segmento, el microprocesador accede a una tabla de descriptores y carga la tabla de descriptores en el área de caché de descriptores invisible para el programa del registro de segmento.
Este descriptor se guarda aquí y se utiliza al acceder a la memoria hasta que el número de segmento cambie nuevamente. Esto permite que el microprocesador acceda a un segmento de memoria repetidamente sin tener que consultar la tabla de descriptores cada vez, de ahí el nombre caché de descriptores.