作者jpopaholic (日音スキ)
看板C_Chat
標題Re: [閒聊] [瑪奇] 遊戲程式升級成64位元有什麼好處?
時間Thu Feb 9 19:35:13 2023
※ 引述《kopune (談崩專家 康普尼)》之銘言:
: 瑪奇韓國原廠已經升級64位元一段時間了
: 台版則是下禮拜(2/16)要升級
: MMORG升級64位元有什麼實質好處阿?
: 可以減少位移嗎?
: 現在遊戲大多是直接64位元了吧?
首先講益處之前要先認識一下
所謂的32/64/....位元程式 那個位元代表的是啥意思
大家都知道位元,是指一種電腦容量單位,英文為bit(s)
那這裡的容量,又是指啥呢?
記憶體/硬碟/程式? 都不是
而是指電腦(CPU)處理一道程序的單位大小
大家都知道不論何種程式語言,用compile編譯(加link)後
運送到電腦/OS/記憶體/CPU/暫存器 後都會變成數位的0和1(支語:數字)
最後用一堆NAND之類的邏輯閘(底層變成一堆npn pnp半導體)運送電子
而32/64/...位元 則就是運行一道指令單位需要多少個0/1
這時就會有資工系教授/面試官會考以下問題:
請問以下程式指令最後輸出會是啥?
int *a;
int b;
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(*a));
printf("%d\n",sizeof(b));
printf("%d\n",sizeof(&b));
之類的....
所以越多位元,代表一道指令有更多的0/1 , 則會有更多的變化
不考慮op code/暫存器/記憶體位址
32位元 一道指令就有2^32種變化
而64位元 則是有2^64種變化
所以32與64位元不單單只是差兩倍
知道原理後就小講一下變成64位元的益處
大家(電蝦老闆)都知道,32位元處理器的電腦 記憶體最高只能塞4G
但很少人知道為何
電腦不只資料用0/1儲存,程式也一樣
一般程式大部分都會躺在硬/軟/光碟 (現行有的會躺在雲端?)
要運作時才會把程式有上述儲存裝置轉移到記憶體
然後利用CPU(與內部的暫存器)去讀/寫裡面的記憶體,運作裡面的程式
假設不考慮op code,單純只是要定址記憶體每個區塊
32位元電腦 定址長度最高也就只有32位元長度
所以最多可定址2^32(0~2^32-1)
又每個cell假設為1byte(剛好是電腦處理資料最小單位)
那這樣電腦最多只能定址2^32 * 1byte(s) = 4GB
所以4GB就是這樣來的
多餘的記憶體除非用特殊的指令,不然一般無法使用到
所以升到64bit首先最有感的就是記憶體可以變大
那記憶體變大有何好處: 最明顯感受到就是運作變快(先不考論程式品質等等其他因素)
上述說過,程式一般都會躺在硬碟,需要用時才會轉移到記憶體
所以假設要運行16GB的程式
32bit就得要搬移4次程式,而64bit只需搬移一次(假設記憶體設置>=16GB)
硬碟運作速度明顯遠慢於記憶體/暫存器運作速度
所以搬移硬碟越多次,速度就會拖越慢
由於64bit比32bit搬移次數少,所以運行得比較快
再來是指令本身
32bit指令只有2^32種變化,而64bit則更多
所以64bit可以把很多行32bit指令融合成一個變新的指令
像是某個步驟32bit需要跑3次,而64bit可能只要跑一次
在頻率相同狀況下,64bit這樣就會比32bit快3倍
所以改64bit運行速度會加快
但是由於指令不同,所以不論是OS和程式需要大幅度的改正
所以就會有一堆相容性問題
以上是小小的科普
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.15.2 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1675942515.A.C6C.html
推 thesonofevil: 先推 免得人家說我看不懂 02/09 19:39
→ labbat: 早期16bit/32bit爭議跟交流電直流電之爭差不多啦 02/09 19:40
→ labbat: 之後就多了32bit/64bit總是在重複一樣的情境 02/09 19:41
推 lucky0417: 有以下嗎 02/09 19:42
※ 編輯: jpopaholic (1.171.15.2 臺灣), 02/09/2023 19:44:11
推 SangoGO: 我知道,所以x86比x64好對吧(爆論 02/09 19:44
推 k960608: 先推 02/09 19:48
推 kaioken: 是...這樣遊戲程式更可以運用新的硬體資源嗎? 02/09 19:49
推 forsakesheep: 好像看懂了,又好像沒懂 02/09 19:52
推 yankeefat: 最重要的一點 遊戲中貨幣的持有量會多很多 02/09 19:57
→ yankeefat: RO的台幣交易 一部分就是因為高價品根本沒辦法用R幣 02/09 19:58
→ lay10521: 32bit可以用大數 避免32bit的限制 02/09 20:03
推 hh123yaya: 恩恩 跟我想的一樣 02/09 20:07
推 fate201: Bit數越多 定址的成本也越高 不知道什麼時候會出現128bit 02/09 20:12
推 rockmanx52: 128bjt出現過了 沒有在一般電腦上使用而已 02/09 20:37
→ rockmanx52: bit 02/09 20:38
推 ken841520: 大數處理有開銷啊,怎麼可能比得上原生64bit 02/09 20:52
推 NotBi11: 你應該在研究所考試前發的 幫大家複習OS 02/09 21:10
推 sdd5426: 這篇的內容哪需要到OS 計組就有了 02/09 21:23
推 harry2014: 我逐漸理解一切 02/09 21:25
推 minie0114: 大家都知道…? 恩… 02/09 21:28
→ A5Watamate: 怎麼沒有胡歌老公 02/09 21:31
推 holyark93: 推薦這篇文章 02/09 21:45
推 efkfkp: 死去的計算機概論突然攻擊我 02/09 21:51
推 gs8613789: 張凡有教過 02/09 22:05
推 Lhmstu: x86是跟cpu指令集有關啦XD 02/09 22:26
推 aertina: 漲知識捏 02/09 22:36
推 leo82528: 推科普文www 02/10 10:54
推 CRPKT: 這和直流交流完全不能類比吧 02/10 11:08
推 Bencrie: 對的錯的摻在一起講再糟糕不過了 XD 02/10 12:58
推 Bencrie: 你是不是沒看過 16bit 處理器隨便都有超過 64KB 的 ram 02/10 13:01
推 orze04: 要重新定址 02/16 23:15