¿Cómo puede la memoria RAM contener un "mapa de memoria" si RAM no tiene conocimiento del sistema en general?

Esta pregunta se refiere más al hardware que al software. Básicamente, citando este artículo sobre mapas de memoria, dice que:

En ciencias de la computación, un mapa de memoria es una estructura de datos (que normalmente reside en la propia memoria) que indica cómo se presenta la memoria.

Fuente: http://en.wikipedia.org/wiki/Memory_map

Hay ambigüedad extrema con respecto a esa oración muy inicial. En primer lugar, ¿cómo puede saber la RAM cómo establecer la memoria para el espacio de direcciones de la CPU si el propósito de la RAM depende del sistema?

En segundo lugar, la memoria RAM se puede cambiar. Si los datos residen en la RAM, todos los chips de RAM están cableados para tener una estructura que describe la memoria? Eso no tiene sentido, porque desde el ámbito de la CPU es vago, y hace aún menos sentido cuando se mira desde el alcance de la RAM (un sistema puede tener memoria diferente en cualquier momento, hardware diferente, direcciones diferentes, Arquitectura diferente, etc.).

En tercer lugar, el artículo afirma que el mapa de memoria se pasa al firmware de un sistema operativo. Eso sólo tendría sentido si la RAM está cableada, o el mapa es síncrono con el espacio de direcciones de la CPU.

Básicamente, soy 100% despistado y perdido en esto. No entiendo de ninguna manera cómo esto tiene sentido. RAM no puede asignar direcciones a un sistema si no tiene conocimiento de la estructura del sistema.

En ciencias de la computación, un mapa de memoria es una estructura de datos (que normalmente reside en la propia memoria) que indica cómo se presenta la memoria.

Fuente: http://en.wikipedia.org/wiki/Memory_map

Hay ambigüedad extrema con respecto a esa oración muy inicial. En primer lugar, ¿cómo puede saber la RAM cómo establecer la memoria para el espacio de direcciones de la CPU si el propósito de la RAM depende del sistema?

Normalmente, el mapa de memoria se guarda en algún tipo de memoria no volátil en el dispositivo, que carga el mapa de memoria en el procesador / MMU cuando el sistema arranca. Como alguien que usa el dispositivo, puede cambiar el mapa de memoria , aunque el diseño es menos relevante en los sistemas que ejecutan sistemas operativos, ya que se convierte en el trabajo del SO para controlar el acceso a la memoria. El enfoque de bricolaje normalmente sólo es necesario en sistemas embebidos en los que usted está conectando físicamente los circuitos integrados de RAM / ROM a un circuito existente.

Pasando a los sistemas informáticos modernos …

En segundo lugar, la memoria RAM se puede cambiar. Si los datos residen en la RAM, todos los chips de RAM están cableados para tener una estructura que describe la memoria? Eso no tiene sentido, porque desde el ámbito de la CPU es vago, y hace aún menos sentido cuando se mira desde el alcance de la RAM (un sistema puede tener memoria diferente en cualquier momento, hardware diferente, direcciones diferentes, Arquitectura diferente, etc.).

En tercer lugar, el artículo afirma que el mapa de memoria se pasa al firmware de un sistema operativo. Eso sólo tendría sentido si la RAM está cableada, o el mapa es síncrono con el espacio de direcciones de la CPU.

Exactamente – es por eso que la propia RAM proporciona detección de presencia en serie (SPD) para que el BIOS / UEFI pueda determinar qué RAM está en su sistema (y si ha cambiado desde la última vez que se inició la computadora).

Además, las unidades de administración de memoria x86 vienen con soporte de memoria virtual para uso con sistemas operativos. La propia MMU puentea el diseño físico de la RAM física (que es sólo un gran número de líneas de datos / direcciones conectadas a todos los módulos DIMM de la placa base), por lo que esta se abstrae de la propia CPU (incluso si la MMU y la CPU están en la Mismo dado, son lógicamente dos "unidades" diferentes).

RAM no puede asignar direcciones a un sistema si no tiene conocimiento de la estructura del sistema.

Usted es correcto, la RAM en sí no puede (por lo que tienen perfiles SPD / XMP) – la CPU / MMU identificará qué recursos están disponibles en el sistema cada vez que inicie su computadora. Además, este proceso está abstraído de cualquier cosa bajo el sistema operativo, ya que la mayoría de los sistemas operativos utilizan la memoria virtual ahora, lo que separa completamente el concepto de memoria del sistema de la RAM física (la mayoría de las personas están familiarizados con este concepto a través de la paginación , Parte de la memoria de un proceso en disco para liberar RAM para otras aplicaciones).

El artículo dice

En el proceso de arranque, se transmite un mapa de memoria desde el firmware para instruir un núcleo del sistema operativo acerca del diseño de la memoria. Contiene la información sobre el tamaño de la memoria total, las regiones reservadas y también puede proporcionar otros detalles específicos de la arquitectura.

Y luego dice

El BIOS del PC proporciona un conjunto de rutinas que pueden ser utilizadas por el sistema operativo para obtener el diseño de la memoria. Algunas de las rutinas disponibles son: BIOS Function: INT 0x15, AX=0xE801 Esta llamada de interrupción del BIOS es utilizada por el sistema operativo en ejecución para obtener el tamaño de memoria para configuraciones de 64 MB +

Para responder a su primera pregunta entonces. El artículo no menciona nada de espacio de direcciones de la CPU, y no es fácil incluso encontrar ese término utilizado en Internet! Porque las CPU tienen algunos registros (ubicaciones de memoria de la CPU), pero no como un gran espacio que necesita un mapa o algún tipo de índice para encontrar cosas! Y el término CPU ni siquiera se produce en cualquier parte del artículo al que está vinculado. El artículo dice que RAM obtiene la información de otra parte del sistema, no de la memoria RAM. Se obtiene de la BIOS (el BIOS utiliza la memoria CMOS .. que es la memoria que tiene una batería para alimentarlo … y se establece en la configuración del BIOS manualmente .. pero puede encontrar algunas cosas automáticamente). Y, posiblemente, el mapa de memoria tiene un aspecto flexible y nuevas cosas se cargan pulg Pero RAM comienza sin ningún mapa de memoria poner en.

Eso responde a su segunda pregunta.

Y en su tercera pregunta que se equivocó, el artículo no dice mapa de la memoria se pasa al firmware – NO !! Se dice lo contrario In the boot process, a memory map is passed on from the firmware (el firmware no es de RAM, no hay ningún firmware de RAM).

El programa básico de la BIOS sería firmware. Pero puede almacenar datos que pueden ser cambiados.

Y como una nota adicional, hay algo llamado SPD .. que DDR RAM utiliza para enviar datos a la BIOS a petición (como se menciona en este artículo bastante avanzado) http://www.simmtester.com/page/news/showpubnews. Asp? Num = 153 SPD se menciona en el BIOS .. He configurado un BIOS en un sistema donde se dice obtener detalles RAM de SPD, de introducirlos manualmente. (Por lo que se podría overclock de la RAM). No hay mapa de la memoria, por supuesto .. sólo algo básico, como la velocidad que se supone que se ejecuta en y otras cosas SPD se que se menciona en ese artículo. Otras cosas en el BIOS son datos introducidos manualmente.

Y para ver el mapa o un mapa de la memoria

Introduzca aquí la descripción de la imagen

Las computadoras realmente viejas de Apple II tenían un mínimo de 4k RAM y conmutadores DIP para establecer si se agregaba más. Durante el arranque se lee la posición de los interruptores y se configura el mapa de memoria en consecuencia. Los primeros sistemas de IBM PC también tenían conmutadores DIP y 64k de RAM como mínimo. El mapa de memoria en la lista donde varias cosas como el contenido de la pantalla, buffers disco etc se ubicaron en la memoria y qué rangos de direcciones tienen RAM.

Así que al menos parte del mapa de memoria es saber – una cantidad mínima de RAM en una ubicación conocida. Parte de esa memoria se utiliza para almacenar el mapa de memoria y otra información utilizada por el código que detecta el resto y construye el mapa de memoria completo.

Los sistemas modernos hacen mucho más auto-configuración (no más interruptores DIP) usando cosas como chips SPD en módulos RAM para averiguar su tamaño y diseño, pero los conceptos básicos son los mismos. Alguna cantidad mínima de memoria tiene que estar en un lugar conocido.

Definitivamente hay una cierta confusión que sucede aquí, sobre todo debido al hecho de que el artículo está intentando empaquetar en diverso, pero cosas relacionadas en un lugar.

Hay dos tipos principales de "mapa de memoria" que son cosas completamente diferentes, usando el mismo nombre.

  • Diseño de la memoria

    Lo que está viendo en lo que respecta a la BIOS y el hardware, realmente debe ser llamado más de una memoria de diseño. Este es un diseño de cómo la memoria se presenta y se utiliza. En este contexto, ciertas partes de la memoria están asignadas para ser utilizadas para diferentes cosas.

    Este mapa no suele existir de ninguna manera tangible en el hardware, es más de una servilleta o un diagrama de pizarra que los diseñadores de venir con e implementar en hardware / software utilizando matrices e índices.

  • Asignación de memoria

    Otro uso del término memory-map es en lo que respecta a la asignación de memoria . En este caso, un mapa de asignación de memoria es una lista que el administrador de memoria del sistema operativo utiliza para realizar un seguimiento de qué partes de memoria se han asignado a los programas y qué partes de la memoria están libres. Debido a que diferentes programas asignan y liberan trozos de memoria de tamaño variable en patrones indeterminados, la memoria se fragmenta de la misma manera que una unidad de disco cuando se crean y eliminan archivos de varios tamaños.

    Dado que la memoria se fragmenta, el sistema operativo no puede simplemente entregar un trozo de memoria de cualquier tamaño solicitado a cada programa que viene. Habrá bloques libres de diferentes tamaños rodeados de bloques usados. Para saber cuán grande es cada bloque libre, el administrador de memoria mantendrá un "mapa" de memoria que marca usado o libre cuando asigna o libera memoria de / a programas. Este mapa es como un mapa de disco (figura 1), e incluso se puede ver con herramientas como VMMap (figura 2). (El diseño específico utilizado en la visualización puede variar, por ejemplo, la mayoría de los mapas de disco mostrarán la unidad como bidimensional mientras que la mayoría de las herramientas de memoria mostrarán la memoria como unidimensional, pero eso es sólo una opción de diseño).

    Este mapa de asignación es un mapa literal que es en realidad una matriz que se almacena en la memoria.

  • ( Asignación de memoria )

    (Cuando se trata de la BIOS y el hardware, también hay el término de mapeo de memoria que se refiere a la asignación de partes de dispositivos de hardware en la memoria para que pueda leer y escribir en el dispositivo simplemente leyendo y escribiendo en direcciones de memoria como usted Podría acceder a la memoria normal, sin embargo, este es un uso aún más diferente del término, y por lo tanto añade a la confusión.En este contexto, "mapa" no significa un diseño , sino más bien un mapeo matemático donde una cosa es Asignó un analógico / alias a otra cosa).


Figura 1 : Mapa de disco de Vopt

Figura 2 : VMMap

Respuesta rápida: La memoria RAM no "sabe" nada. Sea cual sea las estructuras almacenadas en la memoria RAM que ayudan a determinar la semántica de otros contenidos de la memoria RAM, son construidos por el sistema operativo.