Una capacidad suplementaria de procesador es una característica que se ha agregado a un diseño de unidad central de procesamiento (CPU) existente después de la introducción inicial de ese diseño en el mercado.
Una capacidad adicional aumenta la utilidad del diseño del procesador, lo que le permite competir de manera más favorable con los competidores y brinda a los consumidores una razón para actualizarse, al tiempo que conserva la compatibilidad con versiones anteriores del diseño original.
La capacidad de instrucción suplementaria de la CPU no se aplica por regla general a las CPU de 8 o 16 bits, ya que muchas de estas CPU se utilizan principalmente como microcontroladores. En las CPU modernas de 32 y 64 bits, la capacidad suplementaria del procesador no se extiende a las unidades de punto flotante (FPU) o las unidades de gestión de memoria (MMU), ya que se consideran funcionalidades fundamentales fundamentales. Sin embargo, las extensiones a las funcionalidades centrales de MMU y FPU pueden considerarse extensiones de CPU.
Razonamiento histórico
Siempre se ha asumido que la característica de instrucciones suplementarias significa conjuntos fijos de instrucciones que no son obligatorias en todas las CPU de una familia de CPU. Las instrucciones complementarias simplemente no se encontrarán en todos los procesadores dentro de esa familia. [1] Un programador que desee utilizar una función complementaria de una CPU se enfrenta a un par de opciones.
Opciones de programación de instrucciones suplementarias
- El sistema operativo (kernel) y el programador de sistemas (programas) pueden optar por diseñar el software del sistema para que utilice obligatoriamente esa función y, por lo tanto, solo se pueda ejecutar en los procesadores más recientes que tengan esa función.
- Por otro lado, el programador del sistema puede escribir o usar bibliotecas de software existentes para determinar si el procesador en el que se está ejecutando tiene una característica particular (o un conjunto de instrucciones).
Si las instrucciones necesarias no estuvieran allí, se puede recurrir a una técnica alternativa (presumiblemente más lenta o menos deseable) o, de lo contrario, se puede configurar el programa para que se ejecute con una funcionalidad reducida.
- En otros casos, un sistema operativo puede imitar las nuevas características de los procesadores más antiguos, aunque a menudo con un rendimiento reducido.
Al utilizar una estrategia de mínimo común denominador (evitando el uso de capacidades suplementarias del procesador), los programas pueden mantenerse portátiles en todas las máquinas de la misma arquitectura. [2]
Familias de CPU afectadas
Algunas arquitecturas de procesadores populares como x86 , 68000 y MIPS han visto muchas nuevas capacidades introducidas a lo largo de varias generaciones de diseño.
Algunas de estas capacidades han sido objeto de una amplia adopción por parte de los programadores, lo que ha impulsado las actualizaciones de los consumidores y ha vuelto obsoletas las generaciones anteriores de procesadores.
indicadores de capacidad x86
VME | Mejora del modo virtual 8086 |
Delaware | Extensiones de depuración |
PSE | Extensiones de tamaño de página |
TSC | Contador de marca de tiempo |
MSR | Soporte RDMSR y WRMSR |
PAE | Extensiones de dirección física |
MCE | Excepción de verificación de máquina |
CXS | Instrucción CMPXCHG8B (consulte también Extensiones de sincronización transaccional y comparación e intercambio dobles ) |
APIC | APIC en chip (ver también APIC ) |
MTRR | Registro de rango de tipo de memoria |
PGE | Bit global PTE (consulte también la tabla de páginas ) |
MCA | Arquitectura de verificación de la máquina |
CMOV | Instrucciones de movimiento y comparación condicional (consulte también FCMOV ) |
Capacidades complementarias no representadas por banderas
Incluir (no lista completa):
- 3D¡Ahora!
- Tabla de atributos de página (PAT)
- MMX
- SSE (y variantes posteriores hasta SSE5 )
- AVX
- AVX2
- AVX-512
Instrucciones complementarias del procesador
Las instrucciones complementarias del procesador son instrucciones que se han implementado en ciertos procesadores dentro de una familia, pero que no están presentes en todos los procesadores dentro de una familia en particular.
IA-32
Las siguientes instrucciones se consideran instrucciones complementarias del procesador en la arquitectura IA-32 . Estas instrucciones se agregaron a procesadores de producción posteriores y no forman parte del conjunto de instrucciones IA-32 original. Es posible que los programas que contienen estas instrucciones no funcionen correctamente en todas las máquinas de la familia IA-32:
cmovnpbswap | intercambio de bytes |
cmov | movimiento condicional |
cmova | |
cmovae | |
cmovb | |
cmovbe | |
cmovc | |
cmove | |
cmovg | |
cmovge | |
cmovl | |
cmovle | |
cmovna | |
cmovnae | |
cmovnb | |
cmovnbe | |
cmovnc | |
cmovng | |
cmovnge | |
cmovnl | |
cmovnle | |
cmovno | |
cmovns | |
cmovnz | |
cmovo | |
cmovp | |
cmovpe | |
cmovpo | |
cmovs | |
cmovz | |
cpuid | |
fcmov | movimiento condicional de punto flotante |
fcomi | |
nopl | |
rdpmc | leer recuentos del monitor de rendimiento |
rdtsc | leer el contador de marca de tiempo |
syscall | |
sysenter | |
sysexit | |
sysret | |
ud2 | una instrucción indefinida solo para pruebas de software |
xsave | guardar estados extendidos del procesador |
xrstor | restaurar estados extendidos del procesador |
Capacidad FPU y MMU
La capacidad de coprocesamiento matemático FPU (unidad de coma flotante) está disponible en todos los procesadores x86 desde la serie 80486DX. Los conjuntos de instrucciones FPU y MMU (para la familia x86) no se han considerado instrucciones complementarias desde su introducción debido a su importancia para la funcionalidad central de la CPU.
Ver también
- listados de instrucciones x86
- CPUID
- Instrucciones complementarias del procesador para el i686 [ enlace muerto permanente ]
Referencias
- ^ http://markhobley.yi.org/glossary/supplementarycapability.html [ enlace muerto permanente ]
- ^ http://markhobley.yi.org/glossary/supplementarycapability.html [ enlace muerto permanente ]