Il BIOS viene letto dal chip BIOS o copiato nella RAM all'avvio?


10

Quando si accende il computer per la prima volta, il ciclo di recupero / esecuzione è impostato per la prima volta per recuperare le istruzioni dal chip del BIOS direttamente al registro delle istruzioni nella CPU o c'è un circuito automatico impostato in modo che quando viene rilevata l'accensione, le istruzioni in i chip del BIOS vengono caricati automaticamente nella RAM?

Aggiornare

Penso di aver trovato la mia risposta qui :

Dopo lo spegnimento del segnale di reset, la CPU inizia a funzionare. Il codice nella RAM non può essere eseguito poiché la RAM è vuota. I produttori di CPU pre-programmano il processore per iniziare sempre l'esecuzione del codice all'indirizzo "FFFF: 0000" (di solito il BIOS ROM) della ROM.

Quindi la CPU è fisicamente impostata per andare a recuperare ed eseguire l'indirizzo di memoria FFFF: 0000 nella ROM non appena è acceso.


1
Se si trova una risposta te stesso, non pubblicarlo come una risposta di seguito, invece di modificare in questione. (Puoi accettare le tue risposte dopo un po 'di tempo.)
user1686

Il libro Aggiornamento e riparazione dei PC menziona una posizione di memoria la prima che la CPU legge. E c'è un processo che insegnano i vecchi insegnanti CS che possono ancora applicare, chiamato bootstrap, come nel tirarti su dai tuoi bootstrap, che è come fondazione di) viene caricato un sistema operativo.
barlop,

Risposte:


3

La maggior parte delle schede aveva un'opzione nel BIOS per configurare questo comportamento. In genere si chiamava shadowing e di solito era abilitato per impostazione predefinita. Non credo che molte schede si preoccupino di offrirti l'opzione in questi giorni e solo sempre ombra. Il motivo è perché la RAM è più veloce della ROM, quindi accelera le cose per copiarla nella RAM ed eseguirla da lì.

Si noti che la copia non viene eseguita da alcuni circuiti magici, viene eseguita dal bios stesso quando inizia a eseguire inizialmente dalla ROM inizialmente, si copia semplicemente nella RAM e quindi continua l'esecuzione da lì.


Quindi, da quello che ho capito di ciò che hai detto, al momento della nascita, la CPU legge le istruzioni dalla ROM, le cui istruzioni dicono "Copia tutte le istruzioni di avvio qui nella ROM su RAM e quindi imposta il contatore del programma su un indirizzo di questo tipo nella RAM. " È giusto?
arrivo il

@psusi Hai dei link che spiegano di cosa stai parlando? L'ombreggiatura della CPU non mi dà molto, e come potrebbe essere configurato. E di quando stai parlando? Quando le schede madri hanno questa opzione? Puoi indicare qualche modello di scheda madre che avrebbe avuto questa opzione?
barlop,

18

Questo è un altro caso in cui la saggezza popolare ricevuta sull'argomento, come purtroppo esemplificata dalla psusirisposta e in effetti parte della domanda, è bloccata nel mondo com'era intorno al 1991, nonostante la ricchezza di riferimenti tecnici disponibili che spiegano come è ora altrimenti.

Nel mondo della fine degli anni '80, il firmware della macchina - una delle due cose chiamate "BIOS" nel mondo compatibile con PC IBM - si trovava effettivamente in un chip ROM sul bus ISA; e le CPU hanno effettivamente iniziato a eseguire il codice all'indirizzo fisico 000FFFF0, una posizione nella "memoria convenzionale" a cui si accede tramite il puntatore della modalità reale F000:FFF0Questo mondo è scomparso da tempo.

(Il mondo in cui l'autore della pagina WWW che hai indicato, S. Ebrahim Shubbar, vive erroneamente, nonostante abbia scritto nel 2002, è ancora più vecchio. Le CPU non hanno iniziato con la CS:IPcombinazione FFFF:0000dall'8086. L'80286 ha cambiato questo F000:FFF0Ma il mondo 80286 stesso è il mondo molto obsoleto della fine degli anni '80 che la saggezza popolare circola ancora.)

Il tuo "chip BIOS" è RAM; e la tua CPU non è a 16 bit.

Nei PC moderni, il firmware della macchina è conservato nella RAM non volatile . Il chip NVRAM è collegato al bus LPC (o all'interfaccia "hub firmware" dedicata) e il bridge LPC / FWH nel "chipset" normalmente disabilita i cicli di scrittura su di esso. Il "flashing" del firmware comporta l'impostazione di registri del chipset che abilitano le scritture sulla NVRAM e quindi la scrittura sulla NVRAM. (Nell'Intel ICH10, ad esempio, il bit di registrazione del chipset che consente i cicli di scrittura è denominato BIOSWE"Abilitazione scrittura BIOS". Ci sono alcuni dettagli aggiuntivi che salterò qui, ma questo è l'essenza.)

I processori x86 non hanno iniziato l'esecuzione sul posto 000FFFF0dai tempi dell'80286. Le CPU a 32 bit si avviano in quella che è colloquialmente nota come modalità irreale . Anche se il valore iniziale del CSregistro dopo il ripristino è F000, il descrittore di segmento associato a quel registro inizialmente ha FFFF0000come indirizzo base. Così l'indirizzo fisico che corrisponde inizialmente al CS l'16:16: L'indirizzo IP F000:FFF0è infatti, ed è stato sin dai tempi di 80386, FFFFFFF0.

Ed è qui che il firmware della macchina è principalmente mappato nello spazio di indirizzi fisico su macchine x86 a 32 e 64 bit. C'è una finestra di 128 KiB sul firmware in basso nell'area "memoria convenzionale", ma la NVRAM che tiene il firmware della macchina può arrivare a 16 MiB (anche se questo varia in base al chipset) sui PC moderni ed è principalmente mappata nel 16 MiB di spazio di indirizzi fisici immediatamente sotto la linea 4GiB - ovvero gli indirizzi fisici FF000000a FFFFFFFF. (Per utilizzare di nuovo ICH10 come esempio: quanto di questo spazio di indirizzi è mappato sulla NVRAM è controllato da un registro del chipset noto come FWH_DEC_EN"Firmware Hub Decode Enable", il registro. Il firmware è codificato per riprogrammare ilFWH_DEC_ENregistrarsi in base alle dimensioni del chip NVRAM effettivo installato sulla scheda madre. Ma la parte superiore 512KiB della NVRAM è sempre mappato, ad indirizzi fisici FFF80000a FFFFFFF, e non può essere disabilitata.) Il codice inizialmente eseguito dal processore subito dopo la vita di reset nella parte superiore 64KiB di questo intervallo di indirizzi 16MiB.

Per quanto riguarda l'ombreggiamento della ROM del BIOS (che è ciò che viene chiamato - abbastanza perché barloppensa che la CPU venga oscurata è un mistero): Sì, l'accesso alla NVRAM sul bus LPC o all'hub del firmware non è ancora veloce come l'accesso al sistema principale (volatile) RAM. Ma i motivi per cui l'ombreggiatura è importante sono notevolmente diminuiti con l'avvento di sistemi operativi come OS / 2 e Windows NT, sempre alla fine degli anni '80 e all'inizio degli anni '90. I sistemi operativi in ​​modalità reale come MS-DOS, PC-DOS, DR-DOS e così via erano sovrapposti alla funzionalità I / O fornita dal firmware della macchina. Quindi il codice del firmware e i dati di sola lettura sono stati raggiunti molto durante l'esecuzione. I sistemi operativi in modalità protetta come OS / 2 e Windows NT fanno molto meno affidamentosui servizi forniti dal firmware in fase di esecuzione. Quindi, il fatto che il codice in esecuzione dalla NVRAM e i dati di sola lettura nello stesso, arrivino al processore più lentamente rispetto a quando sono ombreggiati nella RAM di sistema è meno un problema di prima.

Inoltre, il codice firmware e i dati su cui si basano non risiedono necessariamente nella parte di NVRAM mappata alla porzione di spazio di indirizzi fisici, la finestra di "memoria convenzionale" da 128 KiB, che è necessariamente anche in primo luogo ombrebile. Non tutti i servizi firmware in modalità protetta devono vivere al di sotto della linea 1MiB nello spazio degli indirizzi fisici, come fanno i servizi firmware in modalità reale, e alcuni no. (E, naturalmente, sarebbe solo possibile fare lo stesso trucco con l'area di spazio di indirizzamento fisico che fanno vivere in se c'è almeno 4GiB di RAM di sistema.)

Ironia della sorte, una fonte più accurato per informazioni su questo di S. Ebrahim Shubbar scrivendo nel 2002 è il libro di Phil Croucher Il BIOS compagno da un anno prima nel 2001. M. Croucher osserva che Unix, Linux, Windows NT, e "presumibilmente (95 / 98) "" non traggono alcun beneficio dall'ombra ". Non è necessariamente un vantaggio, ma è relativamente poco rispetto al mondo delle persone che eseguono MS-DOS, PC-DOS e DR-DOS in modalità reale su macchine 80286 a 16 bit nel 1989.

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.