Це ще один випадок, коли отримана народна мудрість з цього приводу, як це, на жаль 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 році.