計算機中各種位寬的含義
大家接觸計算機就會聽到各種位寬,多少位的CPU,多少位的操作系統(tǒng),多少位的數(shù)據(jù)總線、地址總線等,很多時候大家糾結這些位寬之間有什么關系?有些資料或者學習視頻里對這些概念的解釋也是不準確,甚至是錯誤的,例如下面的說法:
1 數(shù)據(jù)總線和CPU的字長一致;
2 數(shù)據(jù)總線和地址總線位數(shù)一致;
都是常見的錯誤表述!
要搞清楚各種位寬的含義,先要解釋下各位寬的物理意義:
一、??? 計算機的“字長”---俗稱是多少位的CPU
這里上下文特指計算機的字長,它就是CPU里寄存器的寬度,學了計算機組成應該知道,CPU里除了控制器、運算器之外,還有很多寄存器(當然現(xiàn)在CPU還有Cache等),機器的字長就是其中通用寄存器(GPR)的位寬。
CPU在設計的時候會讓運算器和通用寄存器的位寬保持一致,在硬件上就是CPU一次能進行的多少位數(shù)據(jù)運算,所以字長反應了CPU的數(shù)據(jù)運算能力(一次可以進行幾位的數(shù)據(jù)運算,得到的結果是幾位的)。
這里還要提一下編程人員經(jīng)常說的字長,我們姑且叫它是軟件字長吧,這個和上面的機器字長不一樣,機器字長就叫硬件字長吧??梢钥聪旅孢@篇文章,這里不贅述了。
https://www.bilibili.com/read/cv19069811
二、??? 數(shù)據(jù)總線位寬
有些資料里說數(shù)據(jù)總線寬度和機器字長一致,這種說法是不準確的,數(shù)據(jù)總線細分又分外部數(shù)據(jù)總線和內(nèi)部數(shù)據(jù)總線,處理器在設計時一般通用寄存器GPR和運算器及內(nèi)部數(shù)據(jù)總線是一致的,外部數(shù)據(jù)總線會鏈接內(nèi)存、顯卡、IO、設備等,外部數(shù)據(jù)總線反應的是CPU和外設的數(shù)據(jù)傳送能力,而平時說的數(shù)據(jù)總線沒特殊說明一般指外部數(shù)據(jù)總線,那“數(shù)據(jù)總線寬度和機器字長一致”這種說的就是不準確的。
三、??? 地址總線位寬
在計算機里內(nèi)存尋址分邏輯地址尋址和物理地址尋址,地址線反應的就是物理地址的尋址能力。
那什么是邏輯尋址呢?學過計算機組成應該知道,指令執(zhí)行時涉及指令尋址(下一條指令在哪里)和操作數(shù)尋址(指令執(zhí)行時操作數(shù)在哪里),指令尋址肯定都是內(nèi)存尋址(代碼加載到內(nèi)存中后才被執(zhí)行),而操作數(shù)尋址中除了立即數(shù)尋址和寄存器尋址,其他都要進行內(nèi)存訪問,那就需要計算內(nèi)存地址,內(nèi)存地址的計算除了寄存器間接尋址不需要計算內(nèi)存地址外,其他大都需要運算器去計算訪存位置,上面介紹計算機“字長”概念時提到了,運算器字長決定了運算結果的位數(shù),所以字長決定了計算機的邏輯地址尋址能力,在平時我們提的程序的地址空間其實說的都是這個邏輯地址范圍。
很多資料里說地址總線和數(shù)據(jù)總線一致,這種說法也是錯的,一個是物理上CPU能辨別的存儲單元個數(shù),一個是程序邏輯上能辨別的地址單元個數(shù),兩者沒直接聯(lián)系。以x86系列處理器為例,字長和外部數(shù)據(jù)總線及地址線可以各不相同(見下圖)。
