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.