Kto ładuje BIOS w pamięci RAM podczas ładowania komputera

8

Podczas uruchamiania komputera kod w systemie BIOS jest wykonywany jako pierwszy. Jak jednak kod w BIOSie jest ładowany do pamięci RAM w celu wykonania?

Odniosłem się do tego pytania - czy BIOS jest odczytywany z układu BIOS lub kopiowany do pamięci RAM podczas uruchamiania? . Jednak bardziej mnie to zamieszało. Jeśli BIOS jest ładowany z ROM, a ROM jest osobnym układem, to po co mówić o adresach segmentów w RAM? Ponadto, gdzie ładowany jest kod BIOS - czy znajduje się w ostatnim 1 MiB przestrzeni adresowej trybu rzeczywistego, czy w innej lokalizacji?

Gdyby ktoś mógł wymienić kroki od uruchomienia komputera do wykonania pierwszej instrukcji BIOS-u, w tym użytych adresów pamięci, byłoby to bardzo pomocne

Gwiazdozbiór Łabędzia
źródło

Odpowiedzi:

7

Jak napisałem w mojej odpowiedzi na to pytanie, otrzymana ludowa mądrość na ten temat - jak niestety ilustrują to inne odpowiedzi tam (i gdzie indziej w SuperUser) - utknęła w świecie tak jak około 1991 roku, pomimo bogactwa dostępnych technicznych odnośników wyjaśniających jak teraz jest inaczej.

Nie byłbyś tak zdezorientowany, gdybyś przeczytał moją odpowiedź, ponieważ nie zapytałbyś w pierwszej kolejności o „BIOS załadowany z ROM”.

Twój „układ BIOS” nie jest ROMem; między uruchomieniem procesora a pierwszą instrukcją oprogramowania układowego nie ma kodu maszynowego; a „M” zarówno w „RAM”, jak i „ROM” oznacza „pamięć”.

Jak pisałem wcześniej, we współczesnych komputerach oprogramowanie układowe urządzenia jest przechowywane w nieulotnej pamięci RAM . To nie jest ROM, jak kiedyś. Zobacz poprzednią odpowiedź, aby uzyskać szczegółowe informacje na temat układu NVRAM podłączonego do magistrali LPC. (Na przykład: na maszynie siedzącej przy mnie zdemontowanej podczas pisania, NVRAM przechowujący oprogramowanie to Pm49FL004T, układ LPC Flash RAM.)

Procesory 32-bitowe nie uruchamiają się w trybie rzeczywistym i nie zaczynają się od adresu poniżej linii 1MiB. To dziesięciolecia przestarzałych śmieci z czasów 16-bitowych procesorów x86. Zaczynają się w tak zwanym potocznie trybie nierealnym i ponownie w mojej poprzedniej odpowiedzi podałem szczegóły tego, co faktycznie miało miejsce od czasu pojawienia się 80386 . Ładują swoje pierwsze polecenie z adresu, który jest w rzeczywistości na samym szczycie 32-bitowej przestrzeni adresowej FFFFFFF0.

W mojej poprzedniej odpowiedzi szczegółowo powiedziałem, gdzie oprogramowanie wewnętrzne maszyny jest głównie mapowane do fizycznej przestrzeni adresowej na komputerach 32-bitowych i 64-bitowych x86. Pamiętaj: zarówno RAM, jak i ROM są pamięcią . Adresy fizyczne to adresy pamięci na magistrali systemowej. Mogą adresować pamięć RAM lub ROM. (Mogą nawet zajmować się także innymi rzeczami, ale to tylko komplikuje tę dyskusję.) Adres fizyczny FFFFFFF0jest 16 bajtów poniżej górnej granicy zakresu 512 kB, przy czym górne 512 kB oprogramowania układowego w nieulotnej pamięci RAM jest zawsze mapowane na magistrala systemowa przez „chipset”.

Nie ma „ładowania” z jakiegoś mitycznego układu ROM, który zachodzi przy inicjalizacji lub resecie procesora. Układ przechowujący oprogramowanie układowe to nieulotna pamięć RAM . Zachowuje swoją zawartość, zapisaną, kiedy jest „flashowana”, w cyklach zasilania. Procesor po prostu odczytuje instrukcje oprogramowania układowego i dane z niego, poprzez magistralę systemową i przez magistralę LPC (i ewentualnie mostek LPC / FWH) podłączoną do magistrali systemowej za pomocą mikroukładu, używając adresu pamięci fizycznej.

Dalsza lektura

JdeBP
źródło
Dziękuję, wydaje mi się to o wiele bardziej jasne. Kiedy jednak mówisz, że nieulotna pamięć RAM i dane są odczytywane, czy to oznacza, że ​​BIOS jest w jakiś sposób sprzężony z pamięcią RAM? Czy każdy układ pamięci RAM ma system BIOS? Wiem, że to może wydawać się głupie, ale jestem początkującym w tym temacie.
Cygnus
Kiedy mówi, że nieulotna pamięć o dostępie swobodnym (NVRAM) odnosi się do innej technologii niż pamięć RAM używana jako główna pamięć systemowa (zazwyczaj pamięć o dynamicznym dostępie swobodnym, DRAM). Jest to oddzielny układ od głównej pamięci RAM, który zawiera oprogramowanie układowe nawet po wyłączeniu, a więc część „nieulotna”.
Dougvj
@Dougvj: W takim przypadku, dlaczego mamy do tego osobny adres FFFFFFF0? Czy rozmiar NVRAM nie byłby tylko wielkością oprogramowania układowego?
Cygnus
Myślę, że twoje pytania lepiej traktować jak pytania rzeczywiste, a nie komentarze do tej odpowiedzi. Spójrz na niektóre „Powiązane” pytania po prawej stronie, a następnie znajdź pytanie, które pozwoli Ci lepiej zrozumieć. (Z pewnością jest miejsce na SuperUser na kilka pytań + odpowiedzi na bardzo podstawowe informacje, wydaje się, że z krótkiego shufti.)
JdeBP
@JdeBP: Dodałem nowe pytanie
Cygnus