※ 引述《fish39 (醒醒吧!!宅宅)》之銘言:
: 64-bit CPU是指,data bus寬度為64條線
: 這個問題其實沒這麼複雜啊,也很簡單
: 會數位IC design的人,這是個常識喔!!
: 就像寫一個堆疊記憶體
: 有分data bus 和address bus
: data bus 就是一次存取data的寬度64-bit CPU就是這邊設計的
: address bus 就是你的堆疊記憶體的個數
: 簡單的說,address bus 假如有2條線,那就有2^2=4個堆疊空間每一個空間是64bit
: address bus有10條線,就有2^10=1024個空間每一個空間是64bit
之所以會複雜化是因為現在 CPU 的設計常常很詭異,
正常又直覺的設計是 data bus 跟 register 寬度相同,
但是不少 CPU 又不是這樣子,
喜歡搞一堆有的沒的讓它們不同寬,
所以出現了一些爭議。
現在習慣上會對 architecture 跟 CPU 的 bit 數分開來稱呼,
64-bit architecture 通常泛指 data bus 有 64-bit,
64-bit CPU 泛指主要 registers 的 size 有 64-bit,
也就是會區分 internal 跟 external 的差異性,
不過這也是對名詞特別挑剔的人發明出來的講法。
非 load/store 架構因為 source operands 可以有 memory address,
所以 data bus width 和 register width 的概念常牽扯在一起。
對於寫 asm code 或做 compiler 的人,
之所以會去關心 CPU 是幾 bit,
通常是想知道操作 64-bit 的 data 能不能一道指令完成,
以 64-bit 加法來說,
32-bit CPU 需要一個能改變 carry flag 的 add 指令,
以及一個 add with carry 的 add 指令才能完成,
64-bit 的 CPU 只要單單一道 add 指令就能完成。
對 users 而言,
我個人是覺得這只是名詞上的爽度問題,
也沒有必要太深入探討和講究,
商業上的廣告名詞隨它去就好了,
這就像 Java 在廣告上被稱之為「跨平台」,
但瞭解技術細節的人會爭議它不是跨平台,
而是因為它本身就是平台一樣,
跟他們解釋 64-bit CPU 時,
可以使用「典型」和「非典型」這種詞彙,
無聊的爭議也會比較少。
--
Name: Tseng, Ling-hua E-mail Address: [email protected]
School: National Tsing Hua University Department: Computer Science
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Software pipelining for VLIW architectures
Homepage: https://it.muds.net/~uranus
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.222.165