一、什么叫尋址空間? 尋址空間一般指的是CPU對於內存尋址的能力。通俗地說,就是能最多用到多少內存的一個問題。數據在存儲器(RAM)中存放是有規律的 ,CPU在運算的時候需要把數據提取出來就需要知道數據在那里 ,這時候就需要挨家挨戶的找,這就叫做尋址,但如果地址太多超出了CPU的能力范圍,CPU就無法找到數據了。 CPU最大能查找多大范圍的地址叫做尋址能力 ,CPU的尋址能力以字節為單位。 通常人們認為,內存容量越大,處理數據的能力也就越強,但內存容量不可能無限的大,它要受到系統結構、硬件設計、制造成本等多方面因素的制約,一個最直接的因素取決於系統的地址總線的地址寄存器的寬度(位數)。 計算機的尋找范圍由總線寬度(處理器的地址總線的位數)決定的,也可以理解為cpu寄存器位數,這二者一般是匹配的。 Intel公司早期的CPU產品的地址總線和地址寄存器的寬度為20位,即CPU的尋址能力為2^20=1024*1024字節=1024K字節=1M字節;286的地址總線和地址寄存器的寬度為24位,CPU的尋址能力為2^24=1024*4*1024*4B=4*1024*4KB=16M;386及386以上的地址總線和地址寄存器的寬度為32位,CPU的尋址能力為2^32=4096M字節=4G字節。 也就是說,如果機器的CPU過早,即使有很大的內存也不能得到利用,而對於現在的PⅡ級的CPU,其尋址能力已遠遠超過目前的內存容量。 由此推出:地址總線為N位(N通常都是8的整數倍;也說N根數據總線)的CPU尋址范圍是2的N次方字節,即2^N(B)。 二、16位、32位、64位通常指的是什么? 從CPU的發展史來看,從以前的8位到現在的64位,8位也就是CPU在一個時鍾周期內可並行處理8位二進字符0或是1,那么16就以此類推是64位就64位二進制. 從數據計算上來講理論上64位比32快一半。但因為電腦是軟硬相配合才能發揮最佳性能的.所以操作系統也必須從32位的到64位的,而且系統的硬件驅動也必須是64位的. 在64CPU的計算機上要安裝64位操作系統64位的硬件驅動,32位的硬件驅動是不能用的,只有這樣才能發揮計算機的最佳性能.如果64CPU裝32操作系統的話,那性能不會有明顯的提升。
總而言之,8位的CPU一次只能處理一個字節,而32位的CPU一次就能處理4個字節,同理字長為64位的CPU一次可以處理8個字節。 三、為什么是2的N次方,而不是其他數的N次方? 因為計算機是采用二進制計算的。 假設一台計算機,它只有1根地址線,請問它最多能對幾個存儲單元尋址?答案是:2個.因為在任何2進制計算機中,所有物理元件只有 0,1兩種狀態,對應這個例子,我們假設已經把這唯一的一根地址線與兩個存儲單元a和b連上了,那么究竟怎么確定何時讀a何時讀b?有一個辦法,當地址線上的電壓是高電壓時我們讀a,相反是低電壓時,我們讀b.如此一來,一根地址線的情況下,只能對2個存儲單元進行尋址 依次類推,2根地址線時可以對4個存儲單元進行尋址,對應的電壓情況可以是:低低,低高,高低,高高;繼續想下去,3根地址線就可以對8個存儲單元進行尋址(3個1和3個0不同組合情況:111、110、100、000、101、100、001、011),4根就是16個,也就是說,當有n根地址線時,可以對2的n次方個存儲單元進行尋址。 一根線是怎么連接到兩個存儲單元的?好像不同於一根電話線吧,他有兩個線芯或才網線,有八個小線(線芯)? 四、什么是存儲單元? 存儲單元一般應具有存儲數據和讀寫數據的功能,一般以8位二進制作為一個存儲單元,也就是一個字節。每個單元有一個地址,是一個整數編碼,可以表示為二進制整數。 程序中的變量和主存儲器的存儲單元相對應。變量的名字對應着存儲單元的地址,變量內容對應着單元所存儲的數據。 五、為什么計算機采用二進制? (1)技術實現簡單,計算機是由邏輯電路組成,邏輯電路通常只有兩個狀態,開關的接通與斷開,這兩種狀態正好可以用“1”和“0”表示。 (2)簡化運算規則:兩個二進制數和、積運算組合各有三種,運算規則簡單,有利於簡化計算機內部結構,提高運算速度。 (3)適合邏輯運算:邏輯代數是邏輯運算的理論依據,二進制只有兩個數碼,正好與邏輯代數中的“真”和“假”相吻合。 (4)易於進行轉換,二進制與十進制數易於互相轉換。 (5)用二進制表示數據具有抗干擾能力強,可靠性高等優點。因為每位數據只有高低兩個狀態,當受到一定程度的干擾時,仍能可靠地分辨出它是高還是低。 http://blog.csdn.net/lovejavaydj/article/details/7295505
地址總線 (Address Bus;又稱:位址總線) 屬於一種電腦總線 (一部份),是由CPU 或有DMA 能力的單元,用來溝通這些單元想要存取(讀取/寫入)電腦內存元件/地方的實體位址。地址總線AB是專門用來傳送地址的,由於地址只能從CPU傳向外部存儲器或輸入輸出端口,所以地址總線總是單向三態的,這與數據總線不同。地址總線的位數決定了CPU可直接尋址的內存空間大小,比如8位微機的地址總線為16位,則其最大可尋址空間為2^16=64KB,16位微型機的地址總線為20位,其可尋址空間為2^20=1MB。一般來說,若地址總線為n位,則可尋址空間為2^n字節。地址總線的寬度,隨可尋址的內存元件大小而變,決定有多少的內存可以被存取。
數據總線DB(DataBus)用於傳送數據信息。數據總線是雙向三態形式的總線,即它既可以把CPU的數據傳送到存儲器或輸入輸出接口等其它部件,也可以將其它部件的數據傳送到CPU。數據總線的位數是微型計算機的一個重要指標,通常與微處理的字長相一致。例如Intel8086微處理器字長16位,其數據總線寬度也是16位。需要指出的是,數據的含義是廣義的,它可以是真正的數據,也可以是指令代碼或狀態信息,有時甚至是一個控制信息,因此,在實際工作中,數據總線上傳送的並不一定僅僅是真正意義上的數據。
計算機最小的單位是位(bit),每8位組成一個字節(Byte),字節(B)也是存儲器的最小存儲單元。
b、B、Kb、KB、Mb、MB、Gb、GB之間的單位換算如下:
1B = 2的3次方*b = 8b
1Kb = 2的10次方*b = 1024b
1KB = 2的13次方*b = 2的10次方*B =1024B
1Mb = 2的20次方*b
1MB = 2的23次方*b = 2的20次方*B
1Gb = 2的30次方*b
1GB = 2的33次方*b = 2的30次方*B
4Gb = 2的32次方*b
4GB = 2的35次方*b = 2的32次方*B
至於為什么說16根地址總線的尋址空間為 2的16次方 = 64K(B),是因為字節(B)是內存的最小存儲單元,每個地址總線可以對2個存儲單元尋址(2B),所以16根地址總線可以尋址 2B的16次方 = 64K(B);
同理20根地址總線可以尋址的存儲器空間是 2B的20次方 = 1MB;
32根地址總線的尋址空間是 2B的32次方 = 4GB;這也是為什么32位地址總線的系統的最大能搭配4GB內存的原因:再多的話CPU就找不到了。
關於地址總線和尋址空間的關系可以從下文得到更深刻的理解:
"8086有20根地址線,所以可尋址的存儲器空間為1MB"。因為,2的20次方等於1MB,所以是這個結果。
問,為什么要這樣算?這中間的那個過程是怎樣的?(硬件是怎么實現的?)
假設有這么一台計算機,它只有1根地址線,那么請問它最多能對幾個存儲單元尋址?答案顯然是2個.因為在任何2進制計算機中,所有物理元件只有 0,1兩種狀態,對應這個例子,我們假設已經把這唯一的一根地址線與兩個存儲單元a和b連上了,那么究竟怎么確定何時讀a何時讀b?有一個辦法,當地址線上的電壓是高電壓時我們讀a,相反是低電壓時,我們讀b.如此一來,你應該明白-----一根地址線的情況下,只能對2個存儲單元進行尋址
依次類推,2根地址線時可以對4個存儲單元進行尋址,對應的電壓情況可以是:低低,低高,高低,高高;繼續想下去,3根地址線就可以對8個存儲單元進行尋址,4根就是16個,也就是說,當有n根地址線時,可以對2的n次方個存儲單元進行尋址
http://blog.chinaunix.net/uid-11572501-id-2868719.html