(杰里·桑德斯,AMD公司创始人。图片来源于网络)
本篇导读:中本聪是如何在网友的帮助下打磨哈希算力之矛的?
前情回顾:
【连载】比特币史话 | 左右互搏(3) - 27吨重的计算机
【连载】比特币史话 | 左右互搏(4) - 硅的降临
【连载】比特币史话 | 左右互搏(5) - 算力民主制
正文:
当我们去翻阅中本聪当年留存下来的档案资料时,我们就会发现,中本聪花了很多的时间和精力在不断优化比特币的哈希计算性能,也就是破解哈希的速度。从这些资料的阅读中,我们仿佛可以感受到中本聪对于“矛与盾”的深刻认知。他不懈努力,磨刀霍霍向哈希,要为比特币打造一把最锋利的矛,专攻哈希之盾。
2010年7月6日,中本聪在比特币0.3版本的发布公告邮件中列举了各项优化改进的特性[1],其中有一条是:
“哈希计算速度加快了20%”
2009年12月17日,在比特币0.2版本时,中本聪就加入了对多核CPU并行计算的支持[2]:
“硬币生成支持多核处理器”
2010年8月12日,中本聪在题为“用0.3.6版本在SSE2 CPU上并行计算4个哈希”帖子里总结网友反馈的各种多核CPU的计算速度提升情况[3]:
“速度差异很大,约为4或6倍,感觉好像是旧芯片处理速度较慢的一些古怪弱点或指令。除非这是i5的吹捧特性,否则它们会使SSE2的速度提高六倍。
快速总结:
Xeon Quad 慢41%
Core 2 Duo 慢55%
Core 2 Duo 相同(vess报告)
Core 2 Quad 慢50%
Core i5 快200%(nelisky报告)
Core i5 快100%(vess报告)
AMD Opteron 快105%
...”(注:略)
2010年8月15日,在比特币版本0.3.10对CPU启用4路缓存访问进行优化[4]:
“Linux版本包含了tcatm(注:早期比特币代码贡献者)的4路SSE2 SHA-256,可在i5,i7(带有超线程)和AMD CPU(注:AMD是英特尔的竞争对手)上更快地生成。尝试使用“-4way”开关启用它,并检查它是否对您来说更快。”
这个4路(CPU的缓存访问并行路数)SSE2(英特尔发明的单指令多数据流扩展指令集2)的补丁能够把计算速度提升到多少呢?据网友在一篇题为“Windows版的比特币x64”的帖子中报告说,在4核上可以高达470万哈希每秒(4.7Mhash/s)[5]。
而在2010年8月15-28日的论坛讨论中,中本聪和网友们讨论了很多关于4路SSE2以及超线程技术下的哈希计算性能问题,并说[6]:
“我希望有人可以测试i5或AMD来检查我是否正确构建了它。这两个我都没有,没法测试。
我也很好奇,如果它在32位linux上比64位上表现更差。”
针对网友的测试数据反馈,他总结道[7]:
“cpu family 6 model 26 stepping 4 是一块 Intel Core i7。
使用-4way可以提高23%,使用-4way + 超线程可以提高63%。
使用超线程要比不使用它快33%。”
通过测试,他们发现AMD的芯片比英特尔的芯片计算速度要更快,但是中本聪也没搞明白原因是什么[8]:
“我读到过有人在2007年左右发布的有关AMD做出架构改变的链接,但我不知道英特尔的故事。
到时候英特尔Core/Core2将不再有希望。他们只有一半的SSE2硬件。
奇怪的是,英特尔有3个128位单元,而AMD只有2个128位单元,速度却是更快。”
另外,他们还讨论了编译器的优化参数是否可以提升哈希计算速度[9],甚至优化代码[10]。
中本聪在2010年9月8日的帖子中回答网友的提问“24核电脑一秒钟能计算多少哈希?我有一个四核电脑,每秒能生成4300个哈希,所以我估计一台24核电脑能够以每秒25000个哈希的速度开采比特币”时回答[11]:
“AMD Phenom CPU(我认为是4核的)以-4way运行可以达到约1100万哈希每秒(11Mhash/s),大约有100%的加速。24个核应获得6600万哈希每秒(66Mhash/s)。AMD是最佳选择,因为它具有最佳的SSE2实现。(或者可能是因为tcatm拥有AMD并为此优化了代码)”
2010年10月3日,一直配合中本聪进行哈希计算性能优化和测试的网友tcatm报告说实现了单机9亿8300万哈希每秒(983Mhash/s)的速度,中本聪十分惊讶的回复[12]:
“真的吗?你用的啥硬件?”
山雨欲来风满楼。就在中本聪埋头优化CPU计算哈希的性能时,一场哈希算力的军备竞赛正在悄然到来,比特币挖矿算力即将飞跃到一个新的高度,一场好戏正在徐徐拉开帷幕。这些即将登台亮相的人物,你方唱罢我登场,一掷千金,废寝忘食,激烈竞争,谱写传奇,和比特币共生,一同光速进化,而太多人,也被这光速前进的历史巨轮碾在滚滚红尘之中,随风逝去。
【未完待续】(公众号:刘教链)