Хто завантажує BIOS в ОЗУ під час завантаження комп'ютера


8

Коли комп'ютер запускається, спочатку виконується код у BIOS. Однак як код в BIOS завантажується в оперативну пам'ять для виконання?

Я посилався на це питання - чи BIOS читається з мікросхеми BIOS чи копіюється в оперативну пам'ять при запуску? . Однак це мене більше збентежило. Якщо BIOS завантажений з ПЗУ, а ПЗУ - це окрема мікросхема, який сенс говорити про сегментні адреси в ОЗУ? Крім того, де завантажений код BIOS - чи є він в останній 1 МБ адресного простору реального режиму чи в якомусь іншому місці?

Якщо хтось міг перерахувати кроки від запуску комп'ютера до виконання першої інструкції BIOS, включаючи використані адреси пам'яті, було б дуже корисно

Відповіді:


7

Як я писав у своїй відповіді на це запитання, отримана народна мудрість з цього приводу - як це, на жаль, пояснюється іншими відповідями там (і ніде в SuperUser) - застрягла у світі, як це було близько 1991 року, незважаючи на багаті технічні довідки, що пояснюють як зараз інакше.

Ви б не розгубилися, якби прочитали мою відповідь, оскільки ви б не питали про "завантаження BIOS із ROM".

Ваш "мікросхема BIOS" не є ROM; між запуском процесора та першою інструкцією з прошивки немає машинного коду; а "M" і в "ОЗУ", і в "ROM" означає "пам'ять".

Як я писав раніше, в сучасних ПК комп'ютерне програмне забезпечення зберігається в енергонезалежній оперативній пам'яті . Це не ROM, як це було раніше. Детальну інформацію про мікросхему NVRAM, підключену до шини LPC, див. У попередній відповіді. (Наприклад: На машині, що сидить у розібраному поруч зі мною, коли я це вводя, NVRAM, що містить прошивку, - це Pm49FL004T, чіп LPC Flash RAM.)

32-бітні процесори не запускаються в реальному режимі і не починаються з адреси, що знаходиться нижче лінії 1MiB. Це десятиліття застаріле сміття з часів 16-бітних процесорів x86. Вони починаються в тому, що розмовно називається нереальним режимом , і знову в своїй попередній відповіді я розповів деталі того, що насправді було з моменту появи 80386 року . Вони завантажують свою першу команду з адреси , який насправді прямо у верхній частині 32-бітного адресного простору, FFFFFFF0.

У своїй попередній відповіді я детально розповів вам, де вбудована програмне забезпечення в основному відображається у фізичному адресному просторі на 32-бітних та 64-бітних машинах x86. Пам'ятайте: і оперативна пам'ять, і ROM є пам'яттю . Фізичні адреси - це адреси пам'яті на системній шині. Вони можуть адресувати або оперативну пам'ять, або ROM. (Вони навіть можуть вирішувати інші речі, але це лише ускладнює цю дискусію.) Фізична адреса FFFFFFF0на 16 байт нижче верхньої частини діапазону 512KiB, де верхня 512KiB мікропрограмного забезпечення, в енергонезалежній оперативній пам'яті, завжди відображається на системна шина "чіпсетом".

Немає "завантаження" з якогось міфічного чіпа ROM, який продовжується при ініціалізації або скиданні процесора. Мікросхема, що містить прошивку, - енергонезалежна ОЗУ . Він зберігає свій вміст, записаний, коли він "спалахує", протягом циклів живлення. А процесор просто зчитує інструкції прошивки та дані з нього, через системну шину та шину LPC (і, можливо, міст LPC / FWH), підключений до системної шини через чіпсет, використовуючи фізичну адресу пам'яті.

Подальше читання


Дякую, це здається мені набагато зрозумілішим. Однак, якщо ви говорите про енергонезалежну оперативну пам’ять і дані, що читаються з неї, чи означає це, що BIOS якимось чином поєднується з ОЗУ? Чи входить кожен мікросхем оперативної пам’яті з BIOS? Я знаю, що це може здатися дурним, але я новачок у цій темі.
Сигнус

Коли він говорить про енергонезалежну пам'ять з випадковим доступом (NVRAM), він має на увазі іншу технологію, ніж оперативна пам'ять, що використовується як основна системна пам'ять (як правило, динамічна пам'ять з випадковим доступом, DRAM). Це окремий чіп від основної оперативної пам’яті, який містить вбудовану програму навіть при відключенні живлення, таким чином, “енергонезалежну” частину.
Dougvj

@Dougvj: У такому випадку чому ми маємо для нього окрему адресу FFFFFFF0? Хіба розмір NVRAM не був би просто розміром прошивки?
Сигнус

Я думаю, що ваші запитання краще розглядати як актуальні питання, а не коментарі до цієї відповіді. Подивіться на деякі "Пов'язані" питання праворуч, а потім вигадайте запитання, яке сприятиме вашому розумінню. (У SuperUser, безумовно, є місце для деяких питань + відповідей на самі основи, здається, з короткого шуфти.)
JdeBP

@JdeBP: Я додав нове запитання- superuser.com/questions/695769/…
Cygnus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.