1. 程式人生 > >計算機組成原理基本知識

計算機組成原理基本知識

暫存器: 在CPU中

地址匯流排: 傳送地址,在記憶體中找到相應的地址。只能是從CPU---

地址匯流排: 傳送資料,從CPU到外面,或者從外面到CPU

舉例:   mov   [BX],AX

cpu先計算出實體地址,再通過地址匯流排(AB)找到記憶體中的地址(數電講過,16根線可以1,0找到2^16個地址)

然後將AX中的值通過資料匯流排(DB)寫到該記憶體。(怎麼實現的就是硬體的問題了)。

1.所以處理器的位數一般指的是 通用暫存器的位數。跟匯流排根數沒有直接關係。暫存器越大,計算能力就越快,因為運算都是通過暫存器進行的。

2.定址能力與地址匯流排根數有關係。32根匯流排定址空間就是2^32=4G

3.關於作業系統位數和CPU 位數,其實沒有什麼區別,64位只有配合64 位的作業系統和64 位的軟體才能發揮最大效能。64 CPU從硬體上提供了

支援,如地址匯流排變大,暫存器變大,但是如果採用32 的系統,就相當於給你提供了 FAX(假設,64位)但是你的程式不用。

4.64位程式只能64位系統,比如可能定址超過4G,32位系統就跟不上,但是64位卻可以。

64位系統必須64位CPU,因為64位系統就是為64位的處理器設計的,處理器變了,作業系統肯定也需要變,因為畢竟作業系統

在軟體執行時很重要。舉個例子,儲存器管理,可能32位系統最多設計的就是分配4G記憶體,但是現在64位定址能力更強,系統

就應該相應的分配更大記憶體。

總結都是向下相容:硬體升級-----作業系統升級-----軟體升級

硬體相容舊作業系統。

作業系統相容舊軟體。

反之就不相容。

5.程式向下相容問題:

機器碼跟平臺有很大關係:

linux,window 就不說了,檔案格式,DLL什麼都不一樣。

都是windows,系統升級了有時軟體不相容,因為dll之類的要重新做,可能就不相容了.

原始碼級別的,跟平臺關係:

java 完全跨平臺。所有型別都是定的。

c常常說是原始碼級別跨平臺的,但是不嚴謹。因為c並沒有規定 int 的字長,字長是編譯器根據作業系統來決定的。所以可能申請記憶體擴平臺會錯誤,

但是寫成 sizeof(int )一般就沒有問題了。

比如為了相容DOS程式引入DOS系統和真實模式。