¿Por qué el Stack Poniter (SP) de MSP430 siempre está alineado a una dirección uniforme?

1

Mientras leía la Guía del usuario del MSP430, llegué a saber que el puntero de su pila está alineado a una dirección uniforme. (Lea la Pg.189 de enlace )

¿Por qué es así? ¿Por qué el puntero de pila está alineado a una dirección uniforme?

Según mi entendimiento, cada ubicación de la dirección en la RAM puede almacenar 16 bits de datos independientemente de la ubicación de la dirección par o fuera de ella.

A partir de la imagen de abajo, está claro cómo se pueden insertar o enviar esos datos en la RAM.

Ahora es como cada dirección (par o impar) puede almacenar 8 bits de datos. Pero esperaba que cada dirección pueda almacenar 16 bits de datos.

    
pregunta robomon

3 respuestas

3

Cada dirección de memoria hace referencia a un solo byte, pero el bus de datos interno (y la memoria flash) del procesador tiene 16 bits de ancho. Cuando se accede a los valores en la memoria que se utilizarán para los datos, esto es irrelevante desde la perspectiva del hardware; Es algo con lo que el compilador tratará. Al acceder a los valores en la memoria que se ejecutarán, es decir, son instrucciones de código de máquina, el procesador debe asegurarse de que las instrucciones siempre estén alineadas con una dirección de byte de número par. Para ello, impone una restricción en el registro de PC (Program Counter) que siempre debe ser par (el bit 0 de la PC probablemente no se implementa como DFF en absoluto, solo está cableado a la lógica 0). Las instrucciones deben estar en direcciones de bytes iguales porque el procesador debe poder leer la instrucción completa en una sola operación desde una única ubicación de memoria de 16 bits. Si la instrucción estuviera en una dirección de byte impar, sería la mitad en una ubicación de memoria y la otra mitad en otra. El procesador tendría que ser considerablemente más complejo para lidiar con esa posibilidad; es más simple (y, en última instancia, más barato) que el diseñador / fabricante del procesador acepte la compensación de menor complejidad a cambio de que el procesador solo pueda manejar direcciones pares para obtener instrucciones.

    
respondido por el markt
4

El msp430 es de 16 bits de forma nativa. Tiene un bus de 16 bit, 2 byte. Las direcciones de memoria aún están numeradas en incrementos de 8 bits, 1 byte, ya que este es el estándar para el direccionamiento de memoria.

Esta es la razón por la que la pila está alineada de manera uniforme.

    
respondido por el Passerby
3
  

Según mi entendimiento, cada ubicación de la dirección en la RAM puede almacenar 16 bits de datos

No, cada dirección RAM almacena 8 bits de datos o un byte.

    
respondido por el Turbo J

Lea otras preguntas en las etiquetas