Чи читається BIOS з мікросхеми BIOS чи копіюється в оперативну пам’ять при запуску?


10

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

Оновлення

Я думаю , що я знайшов свою відповідь тут :

Після того, як сигнал скидання вимкнеться, процесор починає працювати. Код в оперативній пам'яті неможливо виконати, оскільки оперативна пам'ять порожня. Виробники процесорів заздалегідь запрограмують процесор, щоб завжди починати виконання коду за адресою "FFFF: 0000" (зазвичай це BIOS ROM) ROM.

Таким чином, процесор фізично налаштований для отримання та виконання адреси пам'яті FFFF: 0000 в ROM, як тільки він увімкнений.


1
Якщо знайти відповідь самостійно, зробити опублікувати його в якості відповіді нижче, замість того , щоб редагувати його в питання. (Ви можете прийняти власні відповіді через деякий час.)
user1686

У книзі "Оновлення та відновлення ПК" в ній згадується місце пам'яті, перше, з якого читає процесор. І там старі вчителі CS навчають, які все ще можуть застосовуватися, називаються завантажувальним процесом, як підтягуючи себе за допомогою завантажувальних програм, саме так ( фундамент) завантажується ОС.
барлоп

Відповіді:


3

Більшість плат використовували опцію в BIOS для налаштування такої поведінки. Зазвичай його називали затіненням, і зазвичай це було включено за замовчуванням. Я не думаю, що багато дошки турбуються, що дають вам можливість сьогодні і завжди завжди тінь. Причина в тому, що оперативна пам’ять швидша за ROM, тому вона прискорює роботу, скопіювавши її в оперативну пам’ять і запустивши її звідти.

Зауважте, що копія не робиться якоюсь магічною схемою, вона робиться самим біосом, коли вона спочатку починає виконувати з ROM, вона просто копіює себе в ОЗУ, а потім продовжує виконувати звідти.


Отже, з того, що я розумію з того, що ви сказали, при оживанні процесор читає вказівки з ПЗУ, в яких вказується "Скопіюйте всі інструкції із запуску тут в ROM в оперативну пам'ять, а потім встановіть лічильник програми на таку і таку початкову адресу" в оперативній пам’яті ». Це правильно?
травня 11

@psusi Чи є у вас посилання, що пояснюють, про що ви говорите? Затінення процесора мені не дуже приємне, і як це можна налаштувати. А коли ти говориш? Коли у материнських плат з'явився такий варіант? Чи можете ви вказати на будь-які моделі материнської плати, які мали б цю опцію?
барлоп

18

Це ще один випадок, коли отримана народна мудрість з цього приводу, як це, на жаль psusi, пояснюється відповіддю Росії і справді є частиною питання, застрягла у світі, як це було близько 1991 року, незважаючи на багаті технічні довідки, що пояснюють, як це зараз інакше.

У світі кінця 1980-х апаратне програмне забезпечення - одна з двох речей, що називається "BIOS" у світі сумісних з IBM PC - справді була в мікросхемі ROM на шині ISA; і процесори дійсно почали виконувати код за фізичною адресою 000FFFF0, місцеположення у «звичайній пам’яті», до якого можна отримати доступ через реальний покажчик режиму. F000:FFF0Цей світ давно минув.

(Світ, на який автор сторінки WWW, на який ви вказували, С. Ебрагім Шуббар, помилково живе, незважаючи на те, що він написав у 2002 році, є ще старшим. Процесори не почалися з CS:IPкомбінації FFFF:0000з 8086 року. 80286 змінив це на F000:FFF0. Але 80286 мир сам по собі є досить застаріле світу кінця 1980 - х років , що народна мудрість до сих пір циркулюють.)

Ваш "мікросхема BIOS" - оперативна пам'ять; а ваш процесор не 16-розрядний.

У сучасних ПК прошивка машини зберігається в енергонезалежній оперативній пам'яті . Мікросхема NVRAM підключена до шини LPC (або до виділеного інтерфейсу "концентратор прошивки"), а міст LPC / FWH в "чіпсеті" зазвичай відключає цикли запису на нього. "Миготіння" мікропрограмного забезпечення передбачає встановлення регістрів чіпсетів, які дозволяють записувати в NVRAM, а потім записувати в NVRAM. (Наприклад, в Intel ICH10, біт реєстру чіпсетів, який дозволяє проходити цикли запису, називається BIOSWE"BIOS Write Enable". Є кілька додаткових деталей, які я пропускаю тут, але це суть його.)

Процесори x86 не розпочали виконання з місця 000FFFF0з часів 80286. 32-розрядні процесори запускаються в тому, що розмовно називається нереальним режимом . Навіть незважаючи на те, що початкове значення CSрегістра після скидання є F000, дескриптор сегмента, пов'язаний з цим регістром, спочатку містить FFFF0000основну адресу. Таким чином, фізичну адресу , який спочатку відповідає в CS 16:16: IP - адреса F000:FFF0, насправді, і було з часів 80386 FFFFFFF0.

І саме тут прошивка машини в основному відображається у фізичному адресному просторі на 32-бітних та 64-бітних машинах x86. На прошивку в області «звичайної пам’яті» є вікно 128 Кбіб, але NVRAM, що містить прошивку машини, може досягати 16 Мбіт (хоча це залежить від чіпсета) на сучасних ПК і, головним чином, відображається негайно в 16 Мбіт фізичного адресного простору нижче рядка 4GiB - тобто фізичні адреси FF000000до FFFFFFFF. (Щоб використати ICH10 в якості прикладу ще раз: яка частина цього адресного простору відображена на NVRAM, контролюється регістр чіпсетів, відомий як FWH_DEC_EN"Режим декодування концентратора прошивки". Прошивка кодується для перепрограмування програмиFWH_DEC_ENзареєструйте відповідно до розміру фактичного чіпа NVRAM, який встановлений на материнській платі. Але вершина 512KiB з NVRAM буде завжди відображатися, в фізичні адреси FFF80000в FFFFFFF, і не може бути відключений.) Код спочатку виконується процесором відразу після скидання життя в верхньому по 64Kb цього діапазону адрес 16MiB.

Що стосується затінення BIOS ROM (як його називають - саме тому, що barlopвважає, що процесор перебуває в тіні, є загадкою): Так, доступ до NVRAM на шині LPC або концентратору прошивки все ще не такий швидкий, як доступ до основної системи (летюча) ОЗУ. Але причини важливого затінення сильно зменшилися внаслідок прихильників операційних систем, таких як OS / 2 і Windows NT - знову ж таки в кінці 1980-х та на початку 1990-х. Операційні системи в реальному режимі, такі як MS-DOS, PC-DOS, DR-DOS і так далі, були шаруватими над функціоналом вводу / виводу, що забезпечується програмним забезпеченням машини. Таким чином, до коду вбудованого програмного забезпечення та даних, доступних лише для читання, в процесі роботи було доступно багато. Операційні системи захищеного режиму, такі як OS / 2 та Windows NT, покладаються набагато меншепісля надання прошивки послуг під час виконання. Отже, той факт, що код, що виконує NVRAM, і дані, що лише для читання, в той же самий, надходять до процесора повільніше, ніж при затіненні в системну оперативну пам’ять, - менше проблеми, ніж раніше.

Крім того, будь прошивки код і дані , які вони роблять покладатися не обов'язково жити в тій частині NVRAM відображається в частині фізичного адресного простору, вищезгадана вікно 128KiB «звичайної пам'яті», тобто обов'язково навіть shadowable в першу чергу. Послугам мікропрограмного забезпечення захищеного режиму не потрібно жити нижче лінії 1MiB у фізичному адресному просторі, як це роблять сервісні програми в режимі реального режиму, а деякі - ні. (І, звичайно , це було б можливо тільки зробити той же трюк з областю фізичного адресного простору , яке вони роблять жити, якщо є принаймні 4GiB системна пам'ять.)

Як не дивно, більш точним джерелом інформації про це, ніж написання С. Ебрагіма Шуббара у 2002 році, є книга Філа Краучера «BIOS Companion» за рік до 2001 року. М. Краучер зауважує, що Unices, Linux, Windows NT і «імовірно (95 / 98) "" не отримує ніякої користі від затінення ". Це не обов'язково зовсім не приносить користі, але порівняно дуже мало стосовно світу людей, що працюють у режимі MS-DOS, PC-DOS та DR-DOS на 16-бітних 80286 машинах у 1989 році.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.