¿Cómo se encuentran y toman datos 'específicos' de una fuente de memoria de semiconductores?

En un chip de memoria semiconductor, cada bit de datos binarios se almacena en un pequeño circuito llamado celda de memoria que consta de uno a varios transistores. Tipo volátil.

Supongamos que una aplicación almacenó sus datos en un segmento particular en la memoria RAM de la computadora.

¿Cómo sabría la CPU qué datos extraer y cómo ordenaría los otros datos para llegar a ellos? Si todo en su nivel central es 0 o 1, es difícil distinguir qué propósito tiene la memoria 'x'.

Respuestas (3)

Por lo general, una memoria está controlada por varias entradas de dirección , así como por una señal de control de lectura/escritura y algunas entradas que controlan cuándo debe ocurrir la operación de lectura o escritura.

Dadas n entradas de direcciones, se pueden distinguir 2 n ubicaciones en la memoria. Estas son las ubicaciones "específicas" a las que la computadora puede acceder. Por lo general, cada ubicación contiene más de un bit. Puede ser un byte (8 bits o celdas de memoria) o una palabra de varios bytes, que puede tener 16, 32 o 64 bits de ancho .

Si tiene un megabyte de memoria, con acceso de un solo byte, necesitará 20 bits de dirección (señales de entrada individuales) para controlarlo. Para un gigabyte de memoria, necesitaría 30 bits de dirección.

¿Cómo sabría la CPU qué datos extraer y cómo ordenaría los otros datos para llegar a ellos?

En general, depende del programador (si usa lenguaje ensamblador) o del compilador (cuando usa un lenguaje de nivel superior) hacer un seguimiento de qué datos se almacenan en qué dirección.

Por ejemplo, si escribe un programa en C con una variable global x, el compilador decidirá en qué ubicación almacenarlo y se encargará de generar instrucciones que accedan a esa ubicación cada vez que su programa necesite usar x.

Si crea una variable local ydentro de una función, el compilador realizará un seguimiento de esa variable en relación con el valor contenido en un registro especial llamado puntero de pila (SP). Cada vez que se llama a la función, SP puede tener un valor diferente. Pero yse creará de nuevo con cada llamada y se almacenará en el mismo desplazamiento desde SP (que el compilador realiza un seguimiento y generalmente no ve el programador).

Una tercera posibilidad es la asignación de montones . Lo que significa que el espacio de almacenamiento se asigna desde un "montón" de memoria disponible. En algunos lenguajes (Java, por ejemplo), el compilador puede hacer la mayor parte del trabajo de seguimiento de la memoria del montón. En C, el programador es responsable de realizar un seguimiento de la memoria del montón. Esto se hace con variables de puntero , que básicamente codifican la dirección a la que debe acceder el programa para obtener ese dato en particular.

La CPU (originalmente diseñada por humanos) simplemente sigue las instrucciones del programa (escritas por humanos) y va a una dirección particular en su memoria y obtiene los datos binarios y luego hace algo con ellos (dependiendo de la instrucción del programa).

A diferencia de los humanos, las computadoras no tienen problemas con muchos 1 y 0. No 'piensan' ni 'saben' nada (todavía).

P: ¿Cómo sabe en qué dirección buscar los datos? R: Almacena la dirección en una ubicación de memoria diferente... P: ¿Cómo sabe esa dirección? R: también está almacenado en la memoria P: ??? R: en algún lugar al principio, el cableado real del procesador dice en qué dirección buscar las instrucciones iniciales.
@ChrisStratton La dirección puede provenir de una instrucción de programa como en 'cargar este registro con el contenido de esta dirección', o puede indexarse ​​como en 'mover los datos en este registro a una dirección base más el contenido del registro de índice' etc. Cuando la CPU se inicia por primera vez, va a una dirección particular donde espera encontrar su primera instrucción. Esto está 'cableado' (lógica preprogramada) en el diseño de la CPU. La forma en que interpreta estas instrucciones y los datos binarios (dirección, número, letra, índice, etc.) que pueden seguir también está programada.

Tiene razón, es extremadamente difícil porque en las computadoras en general, las ubicaciones de memoria no tienen ningún significado. La serie de bytes, etc. en una ubicación puede ser parte de una imagen, una dirección de correo electrónico, una receta de taco. Todo está en contexto. Entonces, el programa tiene que recordar dónde puso cosas específicas y qué formato se usó. Si algo está mal, aunque sea un poco, es muy probable que no se complete.

De hecho, en ciertas computadoras no existe una diferencia real en el almacenamiento entre el código y los datos.

Solo hay una cosa segura en un microprocesador y es que, al iniciarse, el procesador espera que en una dirección reservada haya una palabra de código que es una instrucción. Todo lo demás se construye encima de eso. Es por eso que el proceso de puesta en marcha se llama amarrar las botas, literalmente significa agarrarse a las correas de las botas y levantarse del suelo.