SkyHoop wrote:還好啦
先感謝各位的回應,謝謝大家願意花時間為我這電腦白痴解說

我從本來略懂,到越聽越不懂,到慢慢明朗,最後真正理解,也花了一年的時間
我是屬於會一直問為什麼的,所以需要很長的時間
SkyHoop wrote:0000000000000000000000000000010
0000000000000000000000000000000
0000000000000000000000000000001
0000000000000000000000000000002

SkyHoop wrote:不是指令,單純是個編號而已
0000000000000000000000000000001
他最終就是個 指令,至於這指令卻是占有空間,也就是 1 byte
可以想成門牌號碼,門牌號碼佔有空間嗎?沒有
門牌號碼是方便郵差找到你家把信丟給你
你家才佔有空間
可以再看一次我的文章的圖片,揣摩一下。
SkyHoop wrote:一般比較常講位址線
定址線、位址線 ? 一樣的東西? 哪種稱呼才比較常使用?位址匯流排(Address Bus) 是一樣的東西!?
位址線就是位址匯流排
定址是動詞,定者,定位也。

關於定址空間
請聯想:一個房子的寬度 x 門牌號碼的發放數量 = 這排房子的總寬度
如果一個位址所定位的記憶體大小是 4 B,
那麼這台機器就能支援 4 B * 2^32 = 16 GB 那麼大的空間了
(不過這只是假設而已,事實上 x86/x64 都是 1 B,沒有例外)
關於記憶體的資料匯流排
寬度就是處理器一次吞入的資料量
目前資料匯流排的寬度是 64 bits,也就是處理器一次抓 8 B 的資料
(若考慮雙通道,則一次抓 16 B)
注意,(處理器外部的) 記憶體資料匯流排的寬度和 (處理器內部的) 暫存器的寬度不一定要相等
例如十年前的 Pentium M,資料匯流排寬度 64x2 bits (雙通道),而暫存器寬度才 32 bits
記憶體比暫存器慢多了,所以資料匯流排寬度較寬,一次多抓一點,合情合理
處理器內有個佇列存放著尚未用到的資料 (資料在排隊)
注意,處理器有時候只需要 1 B 甚至幾個 bits 而已,但處理器仍然一次抓 8 B 的資料
然後丟棄用不到的資料
注意,雖然處理器從記憶體一次抓 8 B,但這並不違背 byte-addressing
一個位址仍然定位到 1 B
記憶體控制器只是省略了最低的那三條線,所以一次抓進 8 B
(越講越玄,這裡如果看不懂就不用勉強)
關於處理器是幾位元
最原始的定義是看暫存器有多寬
8086 的暫存器是 16-bit,所以我們說 8086 電腦是 16-bit 的
386 的暫存器是 32-bit,所以我們說 386 電腦是 32-bit 的
Core i 的暫存器是 64-bit,所以我們說 Core i 電腦是 64-bit 的
不過曾經有個例外
Pentium 的暫存器是 32-bit,但是記憶體的資料匯流排已經拓寬到 64-bit
廠商就說 Pentium 電腦是 64-bit 的 (顯然是商業語言)
x64 有向下相容 x86:在 x86 模式下,某些電路被禁能,等同 x86
所以 x64 當然可以跑 32-bit 的 OS (OS 是程式)
反過來不行,64-bit 程式無法在 x86 執行 (沒有電路要怎麼執行)
大概就這樣。


























































































