PTT推薦

Re: [閒聊] [瑪奇] 遊戲程式升級成64位元有什麼好處?

看板C_Chat標題Re: [閒聊] [瑪奇] 遊戲程式升級成64位元有什麼好處?作者
jpopaholic
(日音スキ)
時間推噓24 推:24 噓:0 →:6

※ 引述《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留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.15.2 (臺灣)
PTT 網址

thesonofevil02/09 19:39先推 免得人家說我看不懂

labbat02/09 19:40早期16bit/32bit爭議跟交流電直流電之爭差不多啦

labbat02/09 19:41之後就多了32bit/64bit總是在重複一樣的情境

lucky041702/09 19:42有以下嗎

※ 編輯: jpopaholic (1.171.15.2 臺灣), 02/09/2023 19:44:11

SangoGO02/09 19:44我知道,所以x86比x64好對吧(爆論

k96060802/09 19:48先推

kaioken02/09 19:49是...這樣遊戲程式更可以運用新的硬體資源嗎?

forsakesheep02/09 19:52好像看懂了,又好像沒懂

yankeefat02/09 19:57最重要的一點 遊戲中貨幣的持有量會多很多

yankeefat02/09 19:58RO的台幣交易 一部分就是因為高價品根本沒辦法用R幣

lay1052102/09 20:0332bit可以用大數 避免32bit的限制

hh123yaya02/09 20:07恩恩 跟我想的一樣

fate20102/09 20:12Bit數越多 定址的成本也越高 不知道什麼時候會出現128bit

rockmanx5202/09 20:37128bjt出現過了 沒有在一般電腦上使用而已

rockmanx5202/09 20:38bit

ken84152002/09 20:52大數處理有開銷啊,怎麼可能比得上原生64bit

NotBi1102/09 21:10你應該在研究所考試前發的 幫大家複習OS

sdd542602/09 21:23這篇的內容哪需要到OS 計組就有了

harry201402/09 21:25我逐漸理解一切

minie011402/09 21:28大家都知道…? 恩…

A5Watamate02/09 21:31怎麼沒有胡歌老公

holyark9302/09 21:45推薦這篇文章

efkfkp02/09 21:51死去的計算機概論突然攻擊我

gs861378902/09 22:05張凡有教過

Lhmstu02/09 22:26x86是跟cpu指令集有關啦XD

aertina02/09 22:36漲知識捏

leo8252802/10 10:54推科普文www

CRPKT02/10 11:08這和直流交流完全不能類比吧

Bencrie02/10 12:58對的錯的摻在一起講再糟糕不過了 XD

Bencrie02/10 13:01你是不是沒看過 16bit 處理器隨便都有超過 64KB 的 ram