本帖最後由 阿達金田一 於 2017-2-17 09:43 編輯
wkw 發表於 2017-2-16 23:17 
在硬體在處理上也是有分位元數的。(由其是MCU單晶片)
8086 8088好像是 8bits or 16bits
80286 16bits
不能說你說的不對...但很籠統...只算簡易分別法
首先 CPU 32bit ... 一樣可以 4G 以上 ... 不然 PAE 是用來幹嘛的
就是可以讓 32bit cpu 可以 36bit-40bit 定址
然後是 "64bits的OS也能在32bits的硬體上使用"
個人認為要嚴格說起來...這句也不對
32bit OS 是可以在 32bit 和 64bit 的硬體上跑...
但那是 64bit 硬體相容 或 支援模擬(CSM) 32bit 的情況下
如果 UEFI x64 沒 CSM 一樣不能跑 32bit OS
當然目前這可能是比較少見的...大多應該都是 Legacy/UEFI 雙支援
而這種雙支援 的 CPU ...也大多是用 x86-64 的 CPU
x86 也叫 IA32
x86-64 .. 也就是 AMD64 , Intel64 ... 是 32bit 64bit 雙支援的 CPU
從某個角度來說...也可以說是 IA32 的 64bit 版
因為基礎架構不變...只是延伸成 64bit 版...所以支援 x86
也就是 x86 , x86-64 的 CPU 都還是 IA32 架構 ...
而 IA64 的 CPU 架構就不同 IA32 ... 是純 64bit 的 CPU
而 EFI ( UEFI 前身) 是和 IA64 一起出的...
照正統來說...應該才算 "正巷" 的 64bit CPU ...
至於 IA64 + UEFI 有沒有 CSM 我就不清楚了...
一來我不是相關職員工作者...二來本身也沒那個環境 ... 不過好像是沒有 CSM
不過 IA64 不合市場需求...所以被 x86-64 干掉了
因為 IA64 並不支援 IA32 (架構不同)...所以如果要跑 IA32 程式 (32bit程式)
只能 模擬轉換 來執行 ... 因此 IA64 跑 32bit 程式...就算可以跑 (因為不能保証模擬執行不會出包)
效能反而會較低
可以參考一下
http://www.liuyongkang.com/archives/487.html
所以 OS + CPU 是 相互支援上的問題
因此 "64bits的OS也能在32bits的硬體上使用" 雖然不能說有錯
但據我所知...好像沒那個 x64 OS ... 可以去跑 32bit 的硬體
而且...就 程式/硬體 設計上...其實也不合理的...
因為當 CPU 是純 32bit ... 就一定不支援 只有64bit 才有 的溝通方式(cpu指令)
所以...OS 要和 純32bit CPU 溝通...當然只能跑 32bit 的方式
照這樣來說 OS 也是 32bit ... 不可能是 64bit
因此我才說那句話不對... 但是
如果只是說 32bit cpu 跑 64bit程式 ... 這是有可能的...
(覺的你部份可能有這個意思...)
但這不代表 OS 是 64bit... 就像 OS 可以跑 32bit 程式...能說 OS 就是 32bit 嗎
這只能說 OS 支援 某bit 的程式 執行
例如 x64 Win ... 支援 32bit 程式...但如果拿掉支援 (像 PE) ... 一樣只能跑 64bit 程式
所以就程式上來說 32bit OS 如果有 支援執行 64bit 程式
是有可能 32bit cpu 跑 64bit 程式 (但還是 32bit OS)
不過...基本上我是沒聽過有那個 32bit OS 可以支援 64bit程式
因為 32bit OS 當時主流就 32bit cpu + 程式 ...
而當 主流 硬體+程式 都是 64bit ... OS 主流早就換到 64bit ... 32bit OS 也洶汰了
OS 一定比 程式 早汰換啊
至於 jerry20530 說的 Win x86 ... 記憶體效能閹割半殘 ... 我倒覺的還好
記憶體 的 影響 要看情況而定
但 Win x86 有 4G上限 這倒是真的 ... 不過這是 OS 本身的問題
實際上 閹割半殘 我覺的應該是 CPU 本身的暫存器 效能可能會有差...
因為 x86-64 cpu 跑 x86 ... 雖然 暫存器是 64bit 但只跑 32bit 的效能
可能原本丟一次 64bit 的資料變成要丢2次
所以理論上 CPU 暫存器 效能的確是 半殘 ...
這是有可能影響到 記憶體
但前題是 CPU 處理效能 不足以發揮 記憶體 速度
CPU 內部 至 記憶體 來說... 由內而外( 速度也由 快而慢)
cpu 暫存器 -> cpu 快取( L1/L2/L3/L4 ) -> RAM
( 處理順序 則應該是反過來 RAM -> cpu 快取 -> cpu 暫存器 -> cpu 處理 )
不過由於 cpu 不可能都一直跑 100% ...
而且就算跑 100% ... 不同 記憶體階層 ...速度本來就不同...
單就速度來說...不可能不能發揮 RAM 的速度...
所以在於 CPU (處理)跑不跑的過來...
也就是...要不要等 CPU ... 因為不是丟到 暫存器 就完了沒事...而是 CPU還要處理
只要每次丟的時候...CPU都可以馬上處理...不用等...其實效能上...感覺不出來差別
另外也要看跑的程式...如果跑 32bit 程式...實際上 程式 在處理時...都還是丟 32bit 資料...那基本上等於沒影響
而這個又扯到前面說的... 什麼 bit OS 跑什麼 bit 程式
拿我 PC Intel E6750 , 2G DDR2
Win7 x64 跑 SF2 ... 並沒有比 XP SP1 x86 快...
甚至感覺還比較慢...
所以 x64 OS 要發揮效能速度...就跑 64bit 程式
不然跑 32bit ...其實不一定比較快 ...
(但遊戲來說...很多都是 32bit ...反正 64bit OS也可以跑 )
而 64bit 程式 也不能在 32bit OS 上跑
當然...如果某一程式有 32bit 和 64bit 雙版時
64bit OS 跑 64bit版程式...理論上效能會比 32bit版快
而 32bit 版...不管在 64bit 或 32bit OS 上跑...可能都差不多...甚至有可能 64bit OS 還比較慢 (例如 IA64 CPU)
前面說的有點亂...不太好理解的話簡單說就是
半殘...那是 64bit OS 跑 32bit 程式 ...
所以跑 32bit 程式時...半殘問題不在 OS ... 在程式
而 32bit OS 也不能去跑 64bit 程式 ... 32bit OS 本來就只能跑 32bit程式
要最佳效能就是 ... 64bit 硬體 + 64bit OS + 64bit 程式
早期分細一點...同一個程式...可能除了 x86 , x64 版...還會有 IA64 版 ...
現在 IA64 可能比較少見...但又有個 ARM 版 ... 不過 ARM 版 PC 上比較少...多是其它 3C 產品 (手機,機上盒, 部份 平板 或 NB ... 等等)
|