En el conjunto de instrucciones MIPS, ¿por qué firmamos la extensión de los datos inmediatos en lugar de la extensión cero en las instrucciones de tipo I?

2

Recientemente estuve leyendo el libro "Organización y diseño de computadoras" de Patterson y Hennessy, y encontré la pregunta de que para hacer que los datos inmediatos sean de 32 bits en las instrucciones de tipo inmediato (generalmente cargar / almacenar), firmamos extender eso, pero ¿por qué no lo extendemos a cero en su lugar?

gracias en avanzado

    
pregunta DCP

2 respuestas

4

Usted tiene un número limitado de bits en una palabra de instrucción de 32 bits para crear un valor inmediato de 32 bits. Si no puede crearlo, tendrá que usar varias instrucciones u otros trucos (más lento, más memoria). Así que digamos que tienes 10 bits. Lo que sería más útil, poder crear

.
  • 0 .. 1023, o
  • -512 .. 511?

Puede decidir desde la intuición o desde los datos recopilados desde los back-end del compilador, pero en la mayoría de los casos, las personas han concluido que incluir al menos -1 es más útil que duplicar el rango en el lado positivo.

IIRC ARM decidió usar un esquema un poco más complejo, utilizando algunos de los bits disponibles para especificar en qué lugares se debe desplazar el valor hacia la izquierda. Esto sacrifica el número de valores pequeños que se pueden realizar, pero obtiene unos valores más grandes (muy separados), lo cual es bueno, por ejemplo, para campos de bits dentro de una palabra. Pero requiere hardware de cambio de barril. Los diseñadores de MIPS pensaron que los transistores necesarios para una palanca de cambios de barril se utilizarían mejor para otros propósitos.

El muy buen aspecto de la H & P libros es que cuantifican los efectos de tales decisiones de diseño. Lee todos sus libros, no solo este.

    
respondido por el Wouter van Ooijen
0

Este enlace da la idea muy básica. aquí

    
respondido por el MaMba

Lea otras preguntas en las etiquetas