1. 程式人生 > >CPU定址範圍(定址空間)一系列問題

CPU定址範圍(定址空間)一系列問題

一、什麼叫定址空間?

         定址空間一般指的是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作業系統的話,那效能不會有明顯的提升。

三、為什麼是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)用二進位制表示資料具有抗干擾能力強,可靠性高等優點。因為每位資料只有高低兩個狀態,當受到一定程度的干擾時,仍能可靠地分辨出它是高還是低。 


另,Tomcat原始碼剖析電子書: