Chi carica il BIOS nella RAM durante l'avvio del computer


8

All'avvio del computer, il codice nel BIOS viene eseguito per primo. Tuttavia, come viene caricato il codice nel BIOS nella RAM per l'esecuzione?

Ho fatto riferimento a questa domanda: il BIOS viene letto dal chip BIOS o copiato nella RAM all'avvio? . Tuttavia, mi ha confuso di più. Se il BIOS viene caricato dalla ROM e la ROM è un chip separato, che senso ha parlare degli indirizzi di segmento nella RAM? Inoltre, dove viene caricato il codice BIOS - è nell'ultimo 1 MiB di spazio degli indirizzi in modalità reale o in qualche altra posizione?

Se qualcuno potesse elencare i passaggi dall'avvio del computer fino all'esecuzione delle prime istruzioni del BIOS, inclusi gli indirizzi di memoria utilizzati, sarebbe molto utile

Risposte:


7

Come ho scritto nella mia risposta a questa domanda, la saggezza popolare ricevuta sull'argomento - come purtroppo esemplificato da altre risposte lì (e altrove in SuperUser) - è bloccata nel mondo com'era intorno al 1991, nonostante la ricchezza di riferimenti tecnici disponibili che spiegano come è ora altrimenti.

Non saresti stato così confuso se avessi letto la mia risposta, perché in primo luogo non avresti chiesto "BIOS caricato dalla ROM".

Il tuo "chip BIOS" non è ROM; non esiste un codice macchina tra l'avvio del processore e la prima istruzione nel firmware; e la "M" in "RAM" e "ROM" significa "memoria".

Come ho scritto prima, nei PC moderni, il firmware della macchina è conservato nella RAM non volatile . Non è la ROM come una volta. Vedere la risposta precedente per i dettagli del chip NVRAM collegato al bus LPC. (Ad esempio: su una macchina seduta smontata accanto a me mentre scrivo, la NVRAM che tiene il firmware è una Pm49FL004T, un chip LPC Flash RAM.)

Le CPU a 32 bit non si avviano in modalità reale e non si avviano con un indirizzo al di sotto della linea 1MiB. Sono decenni di rifiuti obsoleti dai tempi dei processori x86 a 16 bit. Cominciano in quella che è colloquialmente conosciuta come modalità irreale , e di nuovo nella mia precedente risposta ho fornito i dettagli di ciò che è stato effettivamente il caso dall'avvento dell'80386 . Caricano le loro prime istruzioni da un indirizzo che si trova proprio nella parte superiore dello spazio degli indirizzi a 32 bit FFFFFFF0.

Nella mia risposta precedente ti ho spiegato in dettaglio dove il firmware della macchina è principalmente mappato nello spazio di indirizzi fisico su macchine x86 a 32 e 64 bit. Ricorda: sia la RAM che la ROM sono memoria . Gli indirizzi fisici sono indirizzi di memoria , sul bus di sistema. Possono indirizzare la RAM o la ROM. (Possono anche indirizzare anche altre cose, ma questo complica solo questa discussione.) L'indirizzo fisico FFFFFFF0è di 16 byte al di sotto della parte superiore dell'intervallo di 512 KiB in cui i 512 KiB superiori del firmware, nella RAM non volatile, sono sempre mappati sul bus di sistema dal "chipset".

Non è possibile "caricare" da alcuni mitici chip ROM che si verificano all'inizializzazione o al ripristino del processore. Il chip che contiene il firmware è una RAM non volatile . Mantiene il suo contenuto, scritto quando viene "lampeggiato", attraverso i cicli di accensione. E la CPU legge semplicemente le istruzioni e i dati del firmware da esso, sul bus di sistema e su un bus LPC (e possibilmente un bridge LPC / FWH) collegato al bus di sistema tramite il chipset, usando un indirizzo di memoria fisica.

Ulteriori letture


Grazie, questo mi sembra molto più chiaro. Tuttavia, quando si dice RAM non volatile e dati letti da essa, significa che il BIOS è in qualche modo accoppiato con la RAM? Ogni chip RAM viene fornito con un BIOS? So che può sembrare stupido, ma sono un principiante in questo argomento.
Cygnus,

Quando dice che la memoria ad accesso casuale non volatile (NVRAM) si riferisce a una tecnologia diversa rispetto alla RAM utilizzata come memoria di sistema principale (memoria ad accesso casuale tipicamente dinamico, DRAM). È un chip separato dalla RAM principale che contiene il firmware anche quando spento, quindi la parte "non volatile".
Dougvj,

@Dougvj: In tal caso, perché abbiamo un indirizzo separato di FFFFFFF0 per questo? Le dimensioni della NVRAM non sarebbero solo le dimensioni del firmware?
Cygnus,

Penso che le tue domande vengano gestite meglio come domande reali, non come commenti a questa risposta. Guarda alcune delle domande "correlate" sulla destra, quindi trova una domanda da porre che migliorerà la tua comprensione. (C'è sicuramente spazio su SuperUser per alcune domande + risposte proprio sulle basi, sembra da un breve shufti.)
JdeBP

@JdeBP: ho aggiunto una nuova domanda- superuser.com/questions/695769/…
Cygnus
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.