Quién carga el BIOS en la RAM durante el arranque de la computadora

8

Cuando se inicia la computadora, el código en el BIOS se ejecuta primero. Sin embargo, ¿cómo se carga el código en el BIOS en la RAM para su ejecución?

Me he referido a esta pregunta: ¿se lee el BIOS del chip del BIOS o se copia en la RAM al inicio? . Sin embargo, me ha confundido más. Si el BIOS se carga desde la ROM y la ROM es un chip separado, ¿cuál es el punto de hablar sobre las direcciones de segmento en la RAM? Además, ¿dónde se carga el código del BIOS? ¿Está en el último 1 MiB de espacio de direcciones en modo real o en alguna otra ubicación?

Si alguien pudiera enumerar los pasos desde el inicio de la computadora hasta la ejecución de la primera instrucción del BIOS, incluidas las direcciones de memoria utilizadas, sería muy útil

Cygnus
fuente

Respuestas:

7

Como escribí en mi respuesta a esa pregunta, la sabiduría popular recibida sobre el tema, como desafortunadamente ejemplificada por otras respuestas allí (y en otra parte en SuperUser), está atrapada en el mundo como lo fue alrededor de 1991, a pesar de la gran cantidad de referencias técnicas disponibles que explican como es ahora lo contrario.

No habría estado tan confundido si hubiera leído mi respuesta, porque no estaría preguntando sobre "BIOS cargado desde ROM" en primer lugar.

Su "chip BIOS" no es ROM; no hay código de máquina entre el inicio del procesador y la primera instrucción en el firmware; y la "M" en "RAM" y "ROM" significa "memoria".

Como escribí antes, en las PC modernas, el firmware de la máquina se almacena en RAM no volátil . No es ROM como solía ser. Consulte la respuesta anterior para obtener detalles del chip NVRAM conectado al bus LPC. (Por ejemplo: en una máquina desarmada a mi lado mientras escribo esto, la NVRAM que contiene el firmware es un Pm49FL004T, un chip LPC Flash RAM).

Las CPU de 32 bits no se inician en modo real y no comienzan con una dirección que esté por debajo de la línea de 1MiB. Eso es basura desactualizada décadas atrás de los tiempos de los procesadores x86 de 16 bits. Comienzan en lo que se conoce coloquialmente como modo irreal , y nuevamente en mi respuesta anterior di los detalles de lo que realmente ha sido el caso desde la llegada del 80386 . Cargan su primera instrucción de una dirección que es, de hecho, a la derecha en la parte superior del espacio de direcciones de 32 bits, FFFFFFF0.

En mi respuesta anterior, le dije en detalle dónde el firmware de la máquina se asigna principalmente al espacio de direcciones físicas en máquinas x86 de 32 bits y 64 bits. Recuerde: tanto la RAM como la ROM son memoria . Las direcciones físicas son direcciones de memoria , en el bus del sistema. Pueden abordar RAM o ROM. (Incluso pueden abordar otras cosas también, pero eso solo complica esta discusión). La dirección física FFFFFFF0está 16 bytes por debajo de la parte superior del rango de 512 KB, donde los 512 KB superiores del firmware, en la RAM no volátil, siempre se asignan en el bus de sistema por el "chipset".

No hay "carga" de algún chip ROM mítico que se inicia en la inicialización o reinicio del procesador. El chip que contiene el firmware es RAM no volátil . Conserva su contenido, escrito cuando se "flashea", a través de los ciclos de energía. Y la CPU solo lee las instrucciones y los datos del firmware, a través del bus del sistema y sobre un bus LPC (y posiblemente un puente LPC / FWH) conectado al bus del sistema a través del chipset, utilizando una dirección de memoria física.

Otras lecturas

JdeBP
fuente
Gracias, esto me parece mucho más claro. Sin embargo, cuando dice RAM no volátil y datos que se leen, ¿significa que el BIOS está acoplado a la RAM de alguna manera? ¿Cada chip RAM viene con un BIOS? Sé que esto puede parecer estúpido, pero soy un principiante en este tema.
Cygnus el
Cuando dice que la memoria de acceso aleatorio no volátil (NVRAM) se refiere a una tecnología diferente a la RAM utilizada como memoria principal del sistema (memoria de acceso aleatorio dinámico típico, DRAM). Es un chip separado de la RAM principal que contiene el firmware incluso cuando está apagado, por lo tanto, la parte "no volátil".
Dougvj
@Dougvj: En ese caso, ¿por qué tenemos una dirección separada de FFFFFFF0 para ello? ¿No sería el tamaño de la NVRAM solo el tamaño del firmware?
Cygnus el
Creo que sus preguntas se manejan mejor como preguntas reales, no como comentarios sobre esta respuesta. Mire algunas de las preguntas "relacionadas" a la derecha, luego resuelva una pregunta que le permita comprender mejor. (Ciertamente, hay espacio en SuperUser para algunas preguntas + respuestas sobre los conceptos básicos, parece de un breve shufti.)
JdeBP
@JdeBP: He añadido una nueva pregunta- superuser.com/questions/695769/...
Cygnus