為什麼不能用CPU挖礦? 秒懂

本文經超能網授權轉載, 其它媒體轉載請經超能網同意

沒說CPU不能挖啊, 最開始都是用CPU挖, 但是隨著對挖礦演算法的深入研究, 大家發現原來挖礦都是在重複一樣的工作, 而CPU作為通用性計算單元, 裡面設計了很多諸如分支預測單元, 寄存單元等等模組, 這些對於提升算力是根本沒有任何幫助的.

另外, CPU根本不擅長於進行並行運算, 一次最多就執行十幾個任務, 這個和顯卡擁有數以千計的流處理器差太遠了, 顯卡高太多了, 因此大家慢慢針對顯卡開發出對應的挖礦演算法進行挖礦.

以BTC為例, 它最基本的演算法原理就是, 把已有的10分鐘內的所有交易作為一個輸入, 加上一個隨機數, 當10分鐘內所有交易記錄加上你的這個隨機數計算出一個SHA256的hash. 裡面幾乎都是整數運算, 這個根本就像是為顯卡特別打造一樣, 顯卡非常適合這種無腦性演算法, 流處理器數目越多約佔優勢.

就Hash計算而言, 它幾乎都是獨立並發的整數計算, GPU簡直就是為了這個而設計生產出來的. 相比較CPU可憐的2-8線程和長度驚人的控制判斷和調度分支, GPU可以輕易的進行數百個線程的整數計算並發 (無需任何判斷的無腦暴力破解乃是A卡的強項) .

OpenCL可以利用GPU在片的大量unified shader都可以用來作為整數計算的資源. 而A卡的shader (流處理器) 資源又是N的數倍 (同等級別的卡)

不過到了後來大家發現, 顯卡還是太弱了, 直接上ASIC大規模堆ALU單元就能極大程度提升算力, 巴掌大的算力板的算力已經是顯卡的好幾十倍, 所以現在比特幣不用專門的ASIC礦機根本挖不動.

儘管後期的幣種LTC所使用的Scrypt演算法還引入了大量相互依賴的, 隨機的訪存指令, 當Footprint足夠大時, 還會在GPU的L2級別, 甚至TLB級別出現大量的緩存失效, 從而產生更多的DRAM訪問, 以弱化礦機 (ASIC/FPGA) 相較於GPU在整數運算性能上的優勢, 但是依然被人針對性研發出礦機, 目前也只有專門礦機才能挖.

不過像第二代虛擬貨幣 (比如說是ETH, ZEC這種) 由於吸取了前輩們被爆演算法的經驗, 在挖掘演算法上做了更加特別優化, 防止出現無腦的運算, 對於顯存要求特別高, 因此可以有效抵抗礦機的入侵.

也因為ETH這種只能靠顯卡挖礦, 造成了2017年下半年開始的顯卡漲價潮, 缺貨潮, 很多礦主都賣了成千張顯卡回去組建礦機挖掘這些虛擬貨幣.

久而久之, 大家都認為CPU不能挖礦, 其實只是效率, 效益太低了而已.

2016 GoodChinaBrand | ICP: 12011751 | China Exports