2016-09-26 193 views
2

這是我的任何研究之前,第一邏輯:爲什麼32位機器的最大容量是4GB?

因爲它是一個32位的機器,將有2^32位(這是約4十億) ,但它們在位,所以我必須把它轉換成字節。 (~4億美元/ 8) 然後我得到~5億字節,或~500MB。

實際上,我是好奇,爲什麼它不是500 MB,所以我發現這一點:

「根據定義,一個32位處理器使用32位指每個內存字節的 位置2^32 = 42億,這意味着一個長32位的內存地址 只能引用42億個 的唯一位置(即4 GB)。「 (original source

但我很困惑,因爲再次,每一個內存地址是32位長,並有4.2十億人。每個存儲器地址是4個字節,而不是1個字節。因此它將是4.2千兆* 4字節= 16.8 GB。

很明顯,我錯過了我的邏輯中的東西。任何澄清?

回答

1

您將地址的長度與位於該地址的內存大小相混淆。他們非常無關。

到目前爲止,32位機器的最常見選擇是用2^32個唯一地址組織存儲器,每個地址都保存8位(1字節)。爲了唯一地尋址每一位,你需要32 + 3位。實際上,內存以128或256位塊(8或16字節)加載到緩存中,因此物理上只需要32-3或32-4地址線。那麼爲什麼我們仍然使用術語32位?這是因爲地址寄存器實際上是32位大的。有「加載字節」指令,但通常不是「加載位」。 (如果有的話,你通常有8個)

+0

噢,那麼如果我在我的內存位置0x00004000處有0x12345678,那麼數據(0x12345678)會被切割成4塊,最後佔用4個內存位置? 啊!那是什麼時候發生大大小小的排序。我應該知道的。 那麼我真正的問題是,當我們有4個字節的內存地址時,爲什麼每個內存地址只有1個字節?爲什麼我們不能爲每個地址提供更多數據? –

+0

@ RivenLv3:對於某些專用產品,我們確實看到每個地址使用多於1個字節。但考慮到通用文件是字節大小的,就像網絡通信協議一樣。具有非標準尺寸會打破互操作性。 – MSalters

1

在典型的現代機器中,每個字節可單獨尋址。因此,4G地址意味着4G字節。

0

32位CPU意味着它可以訪問2^32 = 42,94,967,296個內存位置(每個內存位置爲1個字節長)。如果我們將內存的4294967296個字節除以1024,我們將得到4194304 KB的內存。此外,如果我們再次以1024分割,我們得到4096 MB的內存,這是4 GB。

相關問題