Po pierwszym włączeniu komputera najpierw jest ustawiony cykl pobierania / wykonywania w celu pobierania instrukcji z układu BIOS bezpośrednio do rejestru instrukcji w CPU lub czy jest skonfigurowany automatyczny zespół obwodów, tak aby po wykryciu zasilania instrukcje zostały wykryte układ BIOS jest automatycznie ładowany do pamięci RAM?
Aktualizacja
Myślę, że znalazłem tutaj odpowiedź :
Po wyłączeniu sygnału resetowania procesor zaczyna działać. Nie można wykonać kodu w pamięci RAM, ponieważ pamięć RAM jest pusta. Producenci procesorów wstępnie programują procesor, aby zawsze zaczynał wykonywać kod pod adresem „FFFF: 0000” (zwykle ROM BIOS) ROM.
Tak więc procesor jest fizycznie skonfigurowany, aby przejść do pobierania i wykonywania adresu pamięci FFFF: 0000 w pamięci ROM, gdy tylko zostanie włączony.
Odpowiedzi:
Większość płyt miała w BIOSie opcję konfiguracji tego zachowania. Zwykle nazywało się to shadowingiem i zwykle było domyślnie włączone. Nie wydaje mi się, żeby wiele tablic przeszkadzało w dzisiejszych czasach i po prostu zawsze cienia. Powodem jest to, że pamięć RAM jest szybsza niż pamięć ROM, więc przyspiesza to, aby skopiować ją do pamięci RAM i uruchomić z tego miejsca.
Zauważ, że kopia nie jest wykonywana przez jakieś magiczne obwody, jest po prostu wykonywana przez sam bios, gdy zaczyna się początkowo poza ROM, po prostu kopiuje się do pamięci RAM, a następnie kontynuuje wykonywanie z tego miejsca.
źródło
Jest to kolejny przypadek, w którym otrzymana ludowa mądrość na ten temat, niestety pokazana na przykładzie
psusi
odpowiedzi, a nawet części pytania, utknęła w świecie tak, jak było około 1991 roku, pomimo bogactwa dostępnych odniesień technicznych wyjaśniających, jak to jest teraz. Inaczej.W świecie pod koniec lat osiemdziesiątych oprogramowanie układowe maszyny - jedna z dwóch rzeczy zwanych „BIOS” w świecie kompatybilnym z IBM PC - rzeczywiście znajdowało się w układzie ROM na szynie ISA; a procesory rzeczywiście zaczęły wykonywać kod pod adresem fizycznym
000FFFF0
, miejscem w „konwencjonalnej pamięci” dostępnym za pośrednictwem wskaźnika trybu rzeczywistegoF000:FFF0
Ten świat już dawno minął.(Świat, w którym autor strony WWW, na którą wskazałeś, S. Ebrahim Shubbar, błędnie żyje, pomimo pisania w 2002 roku, jest jeszcze starszy. Procesory nie zaczęły się od tej
CS:IP
kombinacjiFFFF:0000
od 8086 roku. 80286 zmienił to naF000:FFF0
Ale sam świat 80286 jest bardzo przestarzałym światem późnych lat osiemdziesiątych, w którym wciąż krąży mądrość ludowa).Twój „układ BIOS” to pamięć RAM; a twój procesor nie jest 16-bitowy.
W nowoczesnych komputerach oprogramowanie układowe urządzenia jest przechowywane w nieulotnej pamięci RAM . Układ NVRAM jest podłączony do magistrali LPC (lub do dedykowanego interfejsu koncentratora oprogramowania układowego), a mostek LPC / FWH w „chipsecie” zwykle wyłącza do niego cykle zapisu. „Flashowanie” oprogramowania układowego polega na ustawieniu rejestrów mikroukładów, które umożliwiają zapis do NVRAM, a następnie zapis do NVRAM. (Na przykład w procesorze Intel ICH10 bit rejestru chipsetu, który umożliwia cykle zapisu, nosi nazwę
BIOSWE
„BIOS Write Enable”. Jest kilka dodatkowych szczegółów, które pominę tutaj, ale to jest sedno.)Procesory x86 nie rozpoczęły wykonywania w miejscu
000FFFF0
od czasów 80286. 32-bitowe procesory uruchamiają się w tak zwanym potocznie trybie nierealnym . Mimo że początkowa wartośćCS
rejestru po resecie jestF000
, deskryptor segmentu powiązany z tym rejestrem początkowo zachowuje sięFFFF0000
jako jego adres bazowy. Tak fizyczny adres, który początkowo odpowiada na 16:16 CS: adres IPF000:FFF0
jest w rzeczywistości, a nie było od czasów 80386FFFFFFF0
.I właśnie tam oprogramowanie wewnętrzne maszyny jest głównie mapowane na fizyczną przestrzeń adresową na 32-bitowych i 64-bitowych komputerach x86. W oprogramowaniu wbudowanym znajduje się okno 128 kB w obszarze „pamięci konwencjonalnej”, ale pamięć NVRAM przechowująca oprogramowanie układowe może mieć do 16 MB (choć zależy to od mikroukładu) na nowoczesnych komputerach i jest natychmiast mapowana do 16 MB fizycznej przestrzeni adresowej poniżej linii 4GiB - tj. adresy fizyczne
FF000000
doFFFFFFFF
. (Aby ponownie użyć ICH10 jako przykładu: część tej przestrzeni adresowej mapowanej na NVRAM jest kontrolowana przez rejestr mikroukładu znany jakoFWH_DEC_EN
„Włączanie dekodowania koncentratora oprogramowania układowego”. Oprogramowanie układowe jest kodowane w celu przeprogramowaniaFWH_DEC_EN
zarejestruj się zgodnie z rozmiarem rzeczywistego układu NVRAM zainstalowanego na płycie głównej. Ale top 512KiB z NVRAM jest zawsze mapowany do adresów fizycznychFFF80000
produktuFFFFFFF
i nie mogą być wyłączone.) Kod pierwotnie wykonywany przez procesor natychmiast po resecie życia w górnym 64Kb tego zakresu adresów 16MiB.Co się tyczy cieniowania ROM BIOS-u (tak się nazywa - to, dlaczego
barlop
myślenie, że procesor jest śledzony, jest tajemnicą): Tak, dostęp do NVRAM na magistrali LPC lub hubie oprogramowania wciąż nie jest tak szybki, jak dostęp do głównego systemu (lotna) pamięć RAM. Ale powody, dla których cieniowanie jest ważne, znacznie zmniejszyły się wraz z zaletami systemów operacyjnych takich jak OS / 2 i Windows NT - ponownie na przełomie lat 80. i 90. Systemy operacyjne w trybie rzeczywistym, takie jak MS-DOS, PC-DOS, DR-DOS i tak dalej, były oparte na funkcjonalności I / O zapewnianej przez oprogramowanie układowe urządzenia. Tak więc kod oprogramowania i dane tylko do odczytu były często uzyskiwane w czasie wykonywania. Systemy operacyjne w trybie chronionym , takie jak OS / 2 i Windows NT, polegają znacznie mniejw przypadku usług dostarczanych przez oprogramowanie układowe w czasie wykonywania. Tak więc fakt, że kod wykonywany z pamięci NVRAM i dane tylko do odczytu w tym samym czasie przychodzą do procesora wolniej niż wtedy, gdy jest ukryty w systemowej pamięci RAM, jest mniejszym problemem niż kiedyś.Co więcej, na jakim kodzie oprogramowania układowego i danych, na których polegają, niekoniecznie musi znajdować się część NVRAM odwzorowana na część fizycznej przestrzeni adresowej, wspomniane okno „konwencjonalnej pamięci” 128 kB, które z konieczności jest nawet możliwe do zacienienia. Nie wszystkie usługi oprogramowania układowego w trybie chronionym muszą znajdować się poniżej linii 1MiB w fizycznej przestrzeni adresowej, podobnie jak usługi oprogramowania układowego w trybie rzeczywistym, a niektóre nie. (I oczywiście będzie to tylko możliwe, aby wykonać tę samą sztuczkę o powierzchni fizycznej przestrzeni adresowej, że oni robią na żywo, jeśli istnieje co najmniej 4GiB systemowej RAM).
Jak na ironię, dokładniejszym źródłem informacji na ten temat niż pisanie S. Ebrahima Shubbara w 2002 r. Jest książka Phila Crouchera The BIOS Companion sprzed roku 2001. M. Croucher zauważa, że Unices, Linux, Windows NT i „prawdopodobnie” (95 / 98) „„ nie czerpią korzyści z cieniowania ”. Niekoniecznie jest to całkowicie bezużyteczne , ale w porównaniu ze światem osób korzystających z MS-DOS, PC-DOS i DR-DOS w trybie rzeczywistym na 16-bitowych komputerach 80286 w 1989 roku jest stosunkowo niewiele.
źródło