關於電腦記憶體的疑問

來源:互聯網
上載者:User

大家都知道,電腦啟動時,最開始從物理地址0xffff0處執行BIOS程式,而BIOS程式是固化在ROM中

於是我想,這個地址應該不屬於記憶體條。進一步說,如果BIOS ROM大小為64k,那麼它就應該佔用f000:0~f000:ffff的地址;相應地,顯存bios可能佔用e0000~bffff地址空間,還有其他一些bios都會佔用部分地址空間。如果ROM和RAM(記憶體條)真的互不相干,只是邏輯上組成了電腦的記憶體空間,那麼可以說明一下2點:

1. 往ROM中寫資料是無效的。例如mov [f000:1],ax(指令不一定正確,為了說明問題方便而已)這條指令不會對f0001單元有任何改變;mov [b800:0],ax是往顯存裡寫資料,不經過記憶體條,因為這個地址是顯卡顯存的,和記憶體條沒半毛錢的關係

2. CPU可訪問的儲存單元(ROM和RAM)是和地址匯流排相串連的,主板上地址匯流排的布局決定了該主板能接受多大的顯卡,想在同一塊主板上更換更大顯存顯卡是不行的。另外1G記憶體也不是連續的儲存單元,它被各種ROM分割開來

以上兩點,應該都好做實驗論證,可惜我沒做過,希望有經驗的朋友告知真想,謝謝~

不過,我在win7內建的dos工具下,往bios rom地址空間寫過資料,當時是可以寫的。後來想了下,該dos是運行於虛擬86模式下,而該模式下的地址不是真正的物理地址,也就不能證明什麼

後來,我 瞭解到bios映射技術,即是系統將各種bios地址映射到記憶體條裡,而f0000~fffff 等這些地址還是在記憶體裡,只不過約定這些地址單元不可修改。。 那麼這樣是不是就反駁了上述猜想呢。 但還是有些疑惑。 既然這樣,那麼32根地址匯流排就都是和記憶體條串連的,各種rom裡的程式也都是通過映射技術最終在記憶體條裡執行。但另一問題又來了,沒有地址匯流排,cpu如何訪問rom呢,即使映射技術,也得先訪問rom吧。

還有一種猜想,32根地址匯流排既串連rom地址空間,同時也串連了記憶體條ram。 不過這樣也還是有疑問,同一個地址,cpu如何知道是去訪問rom還是記憶體條ram呢,電腦從不允許二義性

我個人還是比較肯定第一種猜想,之前聽朋友說過買了2根記憶體條(共4g),但作業系統只能識別2.9g,可能的原因就是 雖然有4g記憶體條,但只能佔用較少的地址空間,其他的地址空間被各種rom佔用了

關於這些疑問,清楚的朋友,請指教下小弟,先謝謝了:)

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.