BIOS, BIOS çipinden okunuyor veya başlangıçta RAM'e kopyalanıyor mu?


10

Bilgisayarınızı ilk kez açtığınızda, getirme / yürütme döngüsü ilk olarak BIOS çipinden doğrudan CPU'daki talimat kaydına talimatlar almak için ayarlanmış mı veya güç açıldığında, yongası otomatik olarak RAM'e yüklenir mi?

Güncelleme

Sanırım cevabımı burada buldum :

Sıfırlama sinyali söndükten sonra CPU çalışmaya başlar. RAM boş olduğu için RAM'deki kod yürütülemiyor. CPU üreticileri her zaman ROM'un "FFFF: 0000" adresinde (genellikle ROM BIOS) kod yürütmeye başlamak için işlemciyi önceden programlar.

Bu nedenle CPU fiziksel olarak FFFF: 0000 bellek adresini ROM'da açıldığı anda almaya ve yürütmeye ayarlanmıştır.


1
Eğer bir cevap bulursanız, do yerine soru haline düzenleme, aşağıda bir cevap olarak yayınlamayın. (Bir süre sonra kendi cevaplarınızı kabul edebilirsiniz .)
user1686 15:11

PC'leri yükseltme ve onarma kitabı, CPU'nun ilk okuduğu bir bellek konumundan bahsediyor. Ve eski CS öğretmenlerinin öğrettiği, bootstrapping adı verilen ve bootstraps'ınız tarafından yukarı çekerken olduğu gibi uygulanabilecek bir süreç var. OS) kurulur.
barlop

Yanıtlar:


3

Çoğu kartta bu davranışı yapılandırmak için BIOS'ta bir seçenek vardı. Genellikle gölgeleme olarak adlandırılır ve genellikle varsayılan olarak etkindir. Pek çok kurulun size bugünlerde seçenek sunmaktan rahatsız olduğunu sanmıyorum ve her zaman gölge. Bunun nedeni RAM'in ROM'dan daha hızlı olmasıdır, bu yüzden RAM'e kopyalamak ve oradan çalıştırmak için işleri hızlandırır.

Kopyalamanın bazı sihirli devrelerle yapılmadığını, başlangıçta ROM'dan yürütmeye başladığında sadece bios tarafından yapıldığını, sadece RAM'e kopyaladığını ve daha sonra oradan çalışmaya devam ettiğini unutmayın.


Söylediklerinizi anladığım kadarıyla, CPU, hayata geçtikten sonra ROM'dan "ROM'daki tüm başlangıç ​​talimatlarını RAM'e kopyalayın ve ardından program sayacını böyle bir başlangıç ​​adresine ayarlayın. RAM. " Bu doğru mu?
mring

@psusi Neden bahsettiğinizi açıklayan bazı bağlantılarınız var mı? CPU gölgelemesi beni çok fazla anlamıyor ve nasıl yapılandırılabiliyor. Ne zaman bahsediyorsun? Anakartlar ne zaman bu seçeneğe sahipti? Bu seçeneğe sahip olabilecek herhangi bir anakart modeline işaret edebilir misiniz?
barlop

18

Bu, konuyla ilgili alınan halk bilgeliğinin, maalesef psusicevabının ve gerçekten sorunun bir parçası olarak örneklendiği gibi, şu anda nasıl olduğunu açıklayan mevcut teknik referansların zenginliğine rağmen, 1991 civarında olduğu gibi dünyada sıkıştığı bir başka durumdur. aksi takdirde.

1980'lerin sonlarında, IBM PC uyumlu dünyasında "BIOS" adı verilen iki şeyden biri olan makine yazılımı gerçekten ISA veriyolundaki bir ROM yongasındaydı; ve CPU'lar 000FFFF0gerçek mod işaretçisiyle erişilen "geleneksel bellekte" bir yer olan fiziksel adreste kod yürütmeye F000:FFF0başladılar. Bu dünya çoktan gitti.

(WWW sayfasının yazarının işaret ettiği dünya, S. Ebrahim Shubbar, 2002'de yazılmasına rağmen yanlışlıkla yaşıyor. Daha da eski. CPU'lar 8086'dan beri CS:IPkombinasyonla FFFF:0000başlamadı. 80286 bunu değiştirdi F000:FFF0. Fakat 80286 Dünya kendisi olduğunu yüksek 1980'lerin o halk bilgelik hala dolaşır tarihi dünya üzerinden.)

Sizin "BIOS yongası" olan RAM; ve CPU'nuz 16-bit değil.

Modern bilgisayarlarda, makine ürün yazılımı kalıcı RAM'de tutulur . NVRAM yongası LPC veriyoluna (veya özel bir "ürün yazılımı hub'ı" arayüzüne) bağlanır ve "yonga setindeki" LPC / FWH köprüsü normalde ona yazma döngülerini devre dışı bırakır. Ürün yazılımının "yanıp sönmesi", NVRAM'a yazmayı ve ardından NVRAM'a yazmayı sağlayan yonga seti kayıtlarını ayarlamayı içerir. (Örneğin, Intel ICH10'da, yazma döngülerine izin veren yonga seti kayıt biti BIOSWE"BIOS Yazma Etkin" olarak adlandırılır . Burada atlayacağım bazı ek ayrıntılar var, ancak bunun özü.)

x86 işlemciler 000FFFF0, 80286 günlerinden beri yerinde yürütülmeye başlamıyor. 32 bit CPU'lar, gerçek anlamda gerçek olmayan mod olarak bilinen şeyde başlatılıyor . CSSıfırlamanın ardından kaydın başlangıç ​​değeri olmasına rağmen F000, bu kayıtla ilişkilendirilen segment tanımlayıcı başlangıçta FFFF0000temel adres olarak kalır. Yani başlangıçta 16:16 CS: IP adresine karşılık gelen fiziksel adres F000:FFF0aslında ve 80386'nın günlerinden beri olmuştur FFFFFFF0.

Makine bellenimi temel olarak 32 bit ve 64 bit x86 makinelerde fiziksel adres alanına eşlenir. "Geleneksel bellek" alanında yazılım üzerine 128KiB penceresi vardır, ancak makine ürün yazılımını tutan NVRAM modern PC'lerde 16MiB'ye kadar olabilir (bu, yonga setine göre değişir) ve temel olarak hemen 16MiB fiziksel adres alanına eşleştirilir 4GiB sınırının altında - yani fiziksel adresler FF000000için FFFFFFFF. (ICH10'u tekrar örnek olarak kullanmak için: Bu adres alanının ne kadarının NVRAM ile eşlendiği FWH_DEC_EN"Firmware Hub Kod Çözme Etkinleştir" kaydı olarak bilinen bir yonga seti kaydı tarafından kontrol edilir . Firmware yeniden programlanacak şekilde kodlanırFWH_DEC_ENanakarta takılmış olan gerçek NVRAM yongasının boyutuna göre kaydedin. Ama NVRAM'da üst 512KiB edilir hep fiziksel adreslere, eşleştirilmiş FFF80000için FFFFFFF, engelli olamaz.) Kodu başlangıçta hemen bu 16MiB adres aralığının üst 64KiB sıfırlama yaşamları sonra işlemci tarafından yürütülen.

BIOS ROM gölgelemeye gelince (buna denir - barlopCPU'nun gölgelenmesinin neden bir sır olduğunu düşünüyor): Evet, LPC veriyolundaki NVRAM'a veya bellenim merkezine hala ana sisteme erişim kadar hızlı değil (uçucu) RAM. Ancak gölgelemenin önemli nedenleri, yine 1980'lerin sonunda ve 1990'ların başında OS / 2 ve Windows NT gibi işletim sistemlerinin avantajları ile büyük ölçüde azaldı. MS-DOS, PC-DOS, DR-DOS ve benzeri gerçek mod işletim sistemleri, makine bellenimi tarafından sağlanan I / O işlevselliği üzerine yerleştirilmiştir. Böylece yazılımın kodu ve salt okunur verilerine çalışma zamanında çok fazla erişildi. OS / 2 ve Windows NT gibi korumalı mod işletim sistemleri çok daha az güvenirçalışma zamanında ürün yazılımı tarafından sağlanan hizmetler üzerine. Bu nedenle NVRAM'den yürütülen kodun ve salt okunur verilerin aynı olması, işlemciye, sistem RAM'ine gölgelendirildiğinde olduğundan daha yavaş gelir.

Üstelik onlar firmware hangi kodun ve veri do NVRAM'de kısmında mutlaka canlı yapmak güvenmek fiziksel adres alanı kısmına eşleştirilmiş, mutlaka ilk etapta bile shadowable olan yukarıda belirtilen 128KiB "geleneksel bellek" penceresinde. Korumalı mod ürün yazılımı hizmetlerinin, gerçek mod ürün yazılımı hizmetlerinin yaptığı gibi fiziksel adres alanında 1MiB satırının altında yaşamasına gerek yoktur ve bazıları gerekmez. (Ve tabii ki yalnızca fiziksel adres alanı alanı ile aynı hile yapmak mümkün olacaktır yapmak canlı en az 4GiB sistem RAM varsa.)

İronik olarak, 2002 yılında S. Ebrahim Shubbar'ın yazmasından daha doğru bir bilgi kaynağı Phil Croucher'ın 2001'den bir yıl öncesine ait BIOS Companion adlı kitabıdır . M. Croucher, Unices, Linux, Windows NT ve "muhtemelen (95 / 98) "" gölgelemeden hiçbir fayda sağlamaz ". Mutlaka tamamen faydası yoktur , ancak 1989'da 16-bit 80286 makinelerde MS-DOS, PC-DOS ve DR-DOS'u gerçek modda çalıştıran insanların dünyasına göre nispeten çok azdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.