計算機的總線可以分為3種:數據總線,地址總線和控制總線。這里不對控制總線進行描述。數據總線用于進行數據信息傳送。數據總線的位數一般與CPU的字長一致。
一般而言,數據總線的位數跟當前機器int值的長度相等。例如在16位機器上,int的長度是16bit,32位機器則是32bit。這個計算機一條指令最多能夠讀取或者存取的數據長度。大于這個值,計算機將進行多次訪問。這也就是我們說的64位機器進行64位數據運算的效率比32位要高的原因,因為32位機要進行兩次取指和運行,而64位機卻只需要一次!
地址總線專門用于尋址,CPU通過該地址進行數據的訪問,然后把處于該地址處的數據通過數據總線進行傳送,傳送的長度就是數據總線的位數。地址總線的位數決定了CPU可直接尋址的內存空間大小,比如CPU總線長32位,其最大的直接尋址空間長232KB,也就是4G。
這也就是我們常說的32位CPU最大支持的內存上限為4G(當然,實際上支持不到這個值,因為一部分尋址空間會被映射到外部的一些IO設備和虛擬內存上。現在通過一些新的技術,可以使32位機支持4G以上內存,但這個不在這里的討論范圍內)。
一般而言,計算機的地址總線和數據總線的寬度是一樣的,我們說32位的CPU,數據總線和地址總線的寬度都是32位。
計算機訪問某個數據的時候,首先要通過地址總線傳送數據存儲或者讀取的位置,然后在通過數據總線傳送需要存儲或者讀取的數據。一般地,int整型的位數等于數據總線的寬度,指針的位數等于地址總線的寬度。計算機的基本訪問單元學過C語言的人都知道,C語言的基本數據類型中,就屬char的位數最小,是8位。我們可以認為計算機以8位,即1個字節為基本訪問單元。小于一個字節的數據,必須通過位操作來進行訪問。
內存訪問方式
如圖1所示,計算機在進行數據訪問的時候,是以字節為基本單元進行訪問的,所以可以認為,計算每次都是從第p個字節開始訪問的。訪問的長度將由編譯器根據實際類型進行計算,這在后面將會進行講述。
sizeof關鍵字
sizeof關鍵字是編譯器用來計算某些類型的數據的長度的,以字節為基本單位。例如:
sizeof(char)=1; sizeof(int)=4;
sizeof(Type)的值是在編譯的時候就計算出來了的,可以認為這是一個常量!
-
計算機
+關注
關注
19文章
7625瀏覽量
90020 -
內存
+關注
關注
8文章
3104瀏覽量
74942 -
總線
+關注
關注
10文章
2941瀏覽量
89279
發布評論請先 登錄
評論