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

0

En un chip de memoria de 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 en particular en la RAM de la computadora.

¿Cómo sabría la CPU qué datos extraer y cómo clasificaría los demás datos para obtenerlos? Si todo en su nivel básico es 0 o 1, es difícil distinguir qué propósito tiene la memoria 'x'.

    
pregunta BDillan

3 respuestas

2

Normalmente, una memoria está controlada por varias entradas address , así como por una señal de control de lectura / escritura y algunas entradas que controlan cuando se debe realizar la operación de lectura o escritura .

Dadas n entradas de dirección, se pueden distinguir 2 ubicaciones n 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. Podría ser un byte (8 bits, o celdas de memoria), o una palabra de varios bytes, que podría 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ías 30 bits de dirección.

  

¿Cómo sabría la CPU qué datos extraer y cómo clasificaría los demás datos para obtenerlos?

En general, depende del programador (si se usa lenguaje ensamblador) o del compilador (cuando se usa un lenguaje de nivel superior) para realizar 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 ocupará de generar instrucciones que accedan a esa ubicación cada vez que su programa necesite usar x .

Si creas una variable local y dentro de una función, el compilador realmente hará un seguimiento de esa variable en relación con el valor contenido en un registro especial llamado apilar pila (SP). Cada vez que se llama a la función, SP puede tener un valor diferente. Pero y se creará de nuevo con cada llamada y se almacenará en el mismo desplazamiento desde SP (que el compilador realiza un seguimiento del mismo y generalmente no es visto por el programador).

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

    
respondido por el The Photon
1

La CPU (diseñada originalmente 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 ella (dependiendo de la instrucción del programa).

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

    
respondido por el JIm Dearden
1

Tienes razón, es extremadamente difícil porque en las computadoras en general las ubicaciones de la memoria no tienen ningún significado. La serie de bytes, etc. en una ubicación puede ser parte de una imagen, a una dirección de correo electrónico, a una receta para tacos. Todo está en contexto. Para que el programa tenga que recordar dónde puso las cosas específicas y qué formato se usó. Si algo está apagado, es muy probable que no se complete.

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

Hay solo una cosa segura en un microprocesador y es que, en el inicio, el procesador espera que en una dirección reservada haya una palabra clave que sea una instrucción. Todo lo demás está construido encima de eso. Es por eso que el proceso de puesta en marcha se llama atado de botas, que significa literalmente agarrarse de las correas de sus botas y levantarse del suelo.

    
respondido por el placeholder

Lea otras preguntas en las etiquetas