Número máximo de códigos de operación para un microprocesador

12

¿Cuál es el número máximo de códigos de operación para la pregunta? La respuesta es c opción, pero creo que es la opción d, porque cada dirección especifica cada ubicación de memoria, hay 16 líneas de direcciones, lo que significa 2 ^ 16 direcciones, es decir , 2 ^ 16 ubicaciones de memoria.

Entonces, si cada ubicación contiene un código de operación, el total de 2 ^ 16 ubicaciones contiene 2 ^ 16 códigos de operación y es el número máximo de códigos de operación, pero la respuesta se da como c, que es 2 ^ 12. ¿Cómo es esto posible?

    

4 respuestas

31

Todas las opciones son incorrectas . El número máximo de códigos de operación (únicos) que un procesador puede ejecutar no está limitado por el ancho del bus.

Normalmente, una CPU de más de 12 bits está diseñada para tener un comando por palabra de datos para que pueda leer la mayoría de las instrucciones de una sola vez. Por lo tanto, una CPU normal debe diseñarse hasta un límite de 2 ^ 12 códigos de operación.

Las arquitecturas de CPU existentes que tienen más de 2 ^ 12 = 4096 códigos de operación son muy raras simplemente porque uno casi nunca necesita tantos, demasiados para aprender, demasiados para ser realmente útiles, demasiado espacio de silicio costoso desperdiciado.

Update : Como se señaló en los comentarios, ¡todas las variaciones posibles del conjunto de instrucciones x86 pueden sumar más de 6000, dependiendo de cómo cuente! Sin embargo, esto es más una excepción.

Sin embargo, para una CPU de 4 bits 2 ^ 4 = 16 las instrucciones a menudo no son suficientes, por lo que muchos de estos procesadores tienen más.

Puede haber varias formas y razones por las que una CPU puede incorporar más códigos de operación de los que caben en el bus de datos, incluyendo:

Instrucciones que abarcan palabras

Un procesador no necesita leer un comando en un solo ciclo de datos; puede usar varios ciclos consecutivos. De hecho, la mayoría de las CPU no lo hacen, aunque se usa más comúnmente para argumentos de instrucción en lugar de expandir el espacio del código de operación.

Ejemplo: Intel 4004 tiene solo 4 líneas que se multiplexan como líneas de datos / direcciones, palabras de datos de 4 bits, pero más de 40 códigos de operación en instrucciones de 8 bits.

Prefijos y sufijos

Un procesador (CISC) puede tener tantos prefijos y sufijos de instrucciones como necesite.

Esos son prefijos a una instrucción real para cambiar lo que hace, ya sea un poco o por completo.

Depende de su definición de "código de operación único". Si se asume que parte de una instrucción que no es información es parte del código de operación, su número total incluiría todas las variaciones posibles. Sin embargo, algunos creen que esos afijos son partes distintas de la instrucción.

Ejemplo: las CPU Intel x86 en realidad no tienen códigos de operación de 4M. Sin embargo, si cuenta todos los prefijos como parte de un código de operación, las CPU modernas permiten instrucciones de hasta 15 bYtes, lo que es MUCHO de códigos de operación posibles. Aunque muchos solo harán lo mismo, así que esto depende de la definición de que sean "únicos".

modos

Un procesador puede tener múltiples modos de operación en los que puede tener un conjunto de códigos de operación completamente diferente.

Ejemplos: Intel x86_64 tiene modos de 32 bits (real / v86 / protegido) y de 64 bits que tienen distintos códigos de operación. Las CPU ARM pueden tener modos ARM de 32 bits y pulgar de 16 bits.

Multiplexación de bits de bus

Las preguntas indican "líneas de datos" y "líneas de dirección", sin embargo, tanto el bus de datos interno como el bus de dirección interno pueden ser más amplios que la cantidad de líneas de bus reales.

Los datos del bus multiplexado se envían secuencialmente, es decir, la primera mitad y luego la segunda mitad. La CPU lo almacena en registros internos de tamaño completo y opera en ellos.

Esto se hace a menudo para reducir costos y / o reducir el tamaño de la huella física.

Los ejemplos incluyen Intel 4004, cualquier cosa en el bus de datos LPC, y NEC VR4300, la CPU de Nintendo64 que solo tenía un bus de datos de 32 líneas.

Sin bus paralelo

Como continuación del punto anterior, una CPU ni siquiera necesita exponer un bus paralelo.

Una CPU solo puede exponer fácilmente un bus secuencial como I2C, SPI, etc.

Probablemente no sea muy rentable producir una CPU tan dedicada, pero muchos microcontroladores de bajo número de pines (que incluyen tanto la CPU como la memoria) están hechos de esa manera para guardar esos preciosos pines para algo más útil. Por ejemplo, los chips ATTINY4 / 5/6/10 de atmel solo tienen 6 pines en total, dos para alimentación, uno para restablecer, tres para uso general. Las instrucciones se envían de forma secuencial a través de una interfaz propietaria de 3 líneas.

Según su definición de microcontrolador, se puede considerar un microprocesador o se puede programar para que actúe uno (es decir, simular una CPU dedicada con un bus o buses secuenciales).

Esta pregunta indica claramente que algún tipo de datos bus ESTÁ expuesto, pero no que sea un bus paralelo. En teoría, el bus de datos de 12 líneas podría consistir en una sola línea de datos de serie y 11 líneas auxiliares / tierra / estado , aunque probablemente no No sea una idea muy sana.

Bus de instrucciones dedicado

En realidad, un procesador ni siquiera necesita aceptar instrucciones en las mismas líneas de bus que los datos.

Este podría ser fácilmente el caso cuando las ALU eran chips discretos en lugar de una parte de un microprocesador, pero ahora no es económicamente viable la mayor parte del tiempo.

Pero nada le impide implementar una CPU con líneas dedicadas solo para obtener instrucciones. Una CPU de este tipo puede ser útil cuando una sola operación debe realizarse en una matriz de datos (SIMD).

Dado que el ancho del bus de instrucciones es completamente arbitrario, también lo es el máximo conteo de códigos de operación posible.

    
respondido por el Jack White
13

El número máximo de códigos de operación se puede pensar de varias maneras:

  • El número máximo posible de códigos de operación únicos.

Esto se puede recopilar a partir del ancho de la instrucción y no del ancho del bus de datos. Por lo general, un código de operación se ajusta a un solo acceso a la memoria, y luego la respuesta es 2 ^ 12. Pero un procesador podría implementar un proceso de decodificación de código de operación de múltiples ciclos para extender el número de códigos de operación posibles más allá de 2 ^ 12.

  • El número máximo de instrucciones (que contienen códigos de operación) que el procesador puede abordar directamente.

El número máximo de instrucciones (que contienen códigos de operación) que el procesador puede abordar directamente está limitado por el ancho del bus de dirección (2 ^ 16). Indirectamente, el procesador podría, sin embargo, poder abordar más memoria, por ejemplo. un código de operación podría facilitar un cambio de página o una operación similar para obtener instrucciones de otra fuente.

    
respondido por el HKOB
4

Tienes razón al estar confundido por esta pregunta, está muy mal escrito.

Sin embargo, sospecho que la intención de esta pregunta es determinar el tamaño de palabra de la instrucción para la máquina. Dados los datos muy incompletos proporcionados, esto debe corresponder al ancho del bus datos ; el ancho del bus address determina el tamaño máximo de la memoria principal.

En la práctica, el campo "código de operación" de las instrucciones de una máquina dada es a menudo significativamente más pequeño que la instrucción en sí, aunque la instrucción puede ser más amplia que la del bus de datos.

El antiguo Motorola 68008 es un ejemplo de ello: era una versión de costo reducido del 68000 con un bus de datos de 8 bits, pero usaba las mismas palabras de instrucción de 16 bits, en las que típicamente 7 bits determinan el código de operación. (el resto identifica los registros de origen y destino, y el modo de direccionamiento, todos los cuales deben considerarse operandos , no código de operación ). Si incluye los bits de modo de direccionamiento en el código de operación, como hacen algunos, eso hace un campo de código de operación de 10 bits en total. Las instrucciones reales podrían ser sustancialmente más largas en algunos modos de direccionamiento.

    
respondido por el Chromatix
1

Edson DeCastro diseñó una computadora casi exactamente como esa, el PDP-8, con 15 direcciones y 12 líneas de datos.

Entonces, la respuesta a la pregunta publicada es 574 códigos de operación, porque el PDP-8 tenía 284 códigos de operación, y Ed solo está medio loco.

    
respondido por el Slartibartfast

Lea otras preguntas en las etiquetas