Acceso a memoria en microprocesadores

0

Acabo de enterarme de la segmentación de la memoria que se usa en los microprocesadores y me dijeron que los microprocesadores antiguos como el Intel 8086 tenían 20 líneas de bus de direcciones, lo que significa que podía acceder a la ubicación de memoria 2 ^ 20.

Si se necesitan 20 líneas de bus para acceder a una memoria de 1 MB, ¿cómo pueden acceder los microprocesadores, digamos 1 TB de memoria? Porque obviamente parece absurdo hacer tantas líneas para acceder a esa enorme memoria.

    
pregunta Simon Maghiar

1 respuesta

2

El antiguo 8086 no pudo resolver un TB de memoria. Eso habría sido absurdo en aquel entonces. Hoy en día, donde los recuerdos son grandes, hay más bits de dirección.

En cuanto a la segmentación , se refiere a cómo las instrucciones acceden a una memoria grande. Digamos, por ejemplo, que tiene una memoria de 4 GB. Eso significa que hay 32 líneas de dirección de hardware. Para direccionar cualquier ubicación de memoria arbitraria desde una instrucción requeriría 32 bits de dirección. Eso podría ser una gran carga para exigir que tengan todas las instrucciones de direccionamiento de memoria.

Una forma de lidiar con esto es la segmentación. Por ejemplo, puede codificar solo 16 bits de dirección en instrucciones. Los 16 bits superiores provendrían de un registro especial para ese propósito. Para dirigirse a cualquier ubicación arbitraria sería necesario cargar primero el registro de segmento. Sin embargo, muchas operaciones están cerca en la memoria. Se podría utilizar un solo valor de registro de segmento, por ejemplo, para abordar cualquiera de las pocas variables globales a las que se accede entre las subrutinas.

Eche un vistazo al conjunto de instrucciones de los primeros procesadores x86. Los primeros tenían un espacio limitado de direcciones fijas. Luego, a medida que se acumulaba más memoria, se agregaron varios registros de referencia indirectos. Estos se ampliaron con el tiempo, y también el número de bits codificados directamente en instrucciones.

Para ver un ejemplo de un mundo diferente, eche un vistazo a la arquitectura PIC 16 original. Esos son microcontroladores, no los microprocesadores que usted preguntó, pero el concepto es el mismo. El primer PIC 16 podría abordar 128 bytes de RAM y se incluyeron direcciones de 7 bits en las instrucciones. A medida que se necesitaba más memoria, se utilizaron dos bits no utilizados del registro de ESTADO como bits de dirección superior. Ahora, cualquier instrucción podría acceder a cualquier byte del actual banco de 128 bytes, con el banco definido por los dos bits de banco en ESTADO. Estas máquinas podrían tratar 512 bytes de RAM.

La arquitectura PIC 18 se extendió a 8 bits de dirección por instrucción y un registro de banco de 4 bits. Esto creó 16 bancos de 256 bytes cada uno, para un total de 4096 bytes.

El compromiso entre el tamaño de la memoria para poder direccionar y la cantidad de bits de dirección gastados por instrucción ha estado con nosotros durante mucho tiempo. Casi todas las minicomputadoras de los años 60 a los 80 tenían algún tipo de esquema bancario.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas