宇宙主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

欧基零壹微头条IP归属甄别会员请立即修改密码
楼主: googlebot2

[美国VPS] apple M1 单核速度横扫intel

[复制链接]
 楼主| 发表于 2020-11-18 09:16:39 | 显示全部楼层
ry-ss 发表于 2020-11-18 09:10
无非是挑指令集跑呗.......
说起来你们可能不信   但是10900K  3900x这些旗舰CPU  和865 麒麟9000这些带NPU ...

gpu仅仅是跑图像算法,  M1牛的是跑x86的代码,
发表于 2020-11-18 09:17:23 | 显示全部楼层
googlebot2 发表于 2020-11-18 08:55
如果你不懂汇编语言,就不要乱说了,

指令集加速, 有的需要写代码的时候主动调用...

其实是内联汇编...

有的是编译器帮你做这一步...

但指令集真不只是软件优化, 我用了avx2的代码, 放到不支持avx2的cpu上就是跑不起来...

寄存器数量都不一样跑个鸡儿...
发表于 2020-11-18 09:17:24 | 显示全部楼层
很想知道 PD 在M1上的适配情况。
发表于 2020-11-18 09:19:05 来自手机 | 显示全部楼层
googlebot2 发表于 2020-11-18 09:09
我几十年前从z80汇编开始的,

Arm指令是精简指令,被阉割的体无完肤了,精简指令意味着什么?,然本一条指令可以搞定的事,现在需要10几条指令完成,何来的效率。

例如,如果您在应用程序中需要某种按字节的内存比较块(由编译器生成,跳过详细信息),则这可能是这样的 x86

repe cmpsb         /* repeat while equal compare string bytewise */
而在ARM最短形式上可能看起来像(没有错误检查等)

top:
ldrb r2, [r0, #1]! /* load a byte from address in r0 into r2, increment r0 after */
ldrb r3, [r1, #1]! /* load a byte from address in r1 into r3, increment r1 after */
subs r2, r3, r2    /* subtract r2 fro
发表于 2020-11-18 09:22:15 | 显示全部楼层
试试多线程?
发表于 2020-11-18 09:24:23 | 显示全部楼层
又跑不了x86,装不了win我怎么装x?
发表于 2020-11-18 09:31:25 | 显示全部楼层
jasper 发表于 2020-11-18 09:13
那可真有够丢人,,

到现在都能说出来这种话。

你这个就无厘头了,技术在进步,芯片行业也能靠资历过日子?
发表于 2020-11-18 09:32:59 | 显示全部楼层
grate 发表于 2020-11-18 09:31
你这个就无厘头了,技术在进步,芯片行业也能靠资历过日子?

芯片可是硬实力,领先多少年就是领先多少年,造不出他就是造不出来
发表于 2020-11-18 09:34:54 | 显示全部楼层
特意摘了一篇,来给楼主做科普...
另外告诉楼主一句,苹果不是慈善机构,假如CPU真那么强的话,你觉得还会给你那么便宜的价格?


到了这里你就应该明白为什么RISC和CISC之间不好直接比较性能了,因为它们之间的设计思路差异太大。这样的思路导致了CISC和RISC分道扬镳——前者更加专注于高性能但同时高功耗的实现,而后者则专注于小尺寸低功耗领域。实际上也有很多事情CISC更加合适,而另外一些事情则是RISC更加合适,比如在执行高密度的运算任务的时候CISC就更具备优势,而在执行简单重复劳动的时候RISC就能占到上风,比如假设我们是在举办吃饭大赛,那么CISC只需要不停的喊“吃饭吃饭吃饭”就行了,而RISC则要一遍一遍重复吃饭流程,负责喊话的人如果嘴巴不够快(即内存带宽不够大),那么RISC就很难吃的过CISC。但是如果我们只是要两个人把饭舀出来,那么CISC就麻烦得多,因为CISC里没有这么简单的舀饭动作,而RISC就只需要不停喊“舀饭舀饭舀饭”就OK。
这就是CISC和RISC之间的区别。但是在实际情况中问题要比这复杂许许多多,因为各个阵营的设计者都想要提升自家架构的性能。这里面最普遍的就是所谓的“发射”概念。什么叫发射?发射就是同时可以执行多少指令的意思,例如双发射就意味着CPU可以同时拾取两条指令,三发射则自然就是三条了。现代高级处理器已经很少有单发射的实现,例如Cortex A8和A9都是双发射的RISC,而Cortex A15则是三发射。ATOM是双发射CISC,Core系列甚至做到了四发射——这个方面大家倒是不相上下,但是不要忘了CISC的指令更加复杂,也就意味着指令更加强大,还是吃饭的例子,CISC只需要1个指令,而RISC需要5个,那么在内存带宽相同的情况下,CISC能达到的性能是要超过RISC的(就吃饭而言是5倍),而实际中CISC的Core i处理器内存带宽已经超过了100GB/s,而ARM还在为10GB/s而苦苦奋斗,一个更加吃带宽的架构,带宽却只有别人的十分之一,性能自然会受到非常大的制约。为什么说ARM和X86不好比,这也是很重要的一个原因,因为不同的应用对带宽需求是不同的。一旦遇到带宽瓶颈,哪怕ARM处理器已经达到了很高的运算性能,实际上根本发挥不出来,自然也就会落败了。
说到这儿大家应该也已经明白CISC和RISC的区别和特色了。简而言之,CISC实际上是以增加处理器本身复杂度作为代价,去换取更高的性能,而RISC则是将复杂度交给了编译器,牺牲了程序大小和指令带宽,换取了简单和低功耗的硬件实现。但如果事情就这样发展下去,为了提升性能,CISC的处理器将越来越大,而RISC需要的内存带宽则会突破天际,这都是受到技术限制的。所以进十多年来,关于CISC和RISC的区分已经慢慢的在模糊,例如自P6体系(即Pentium Pro)以来,作为CISC代表的X86架构引入了微码概念,与此对应的,处理器内部也增加了所谓的译码器,负责将传统的CISC指令“拆包”为更加短小的微码(uOPs)。一条CISC指令进来以后,会被译码器拆分为数量不等的微码,然后送入处理器的执行管线——这实际上可以理解为RISC内核+CISC解码器。而RISC也引入了指令集这个就逻辑角度而言非常不精简的东西,来增加运算性能。正常而言,一条X86指令会被拆解为2~4个uOPs,平均来看就是3个,因此同样的指令密度下,目前X86的实际指令执行能力应该大约是ARM的3倍左右。不过不要忘了这是基于“同样指令密度”下的一个假设,实际上X86可以达到的指令密度是十倍甚至百倍于ARM的。
最后一个需要考虑的地方就是指令集。这个东西的引入,是为了加速处理器在某些特定应用上性能而设计的,已经有了几十年的历史了。而实际上在目前的应用环境内,起到决定作用的很多时候是指令集而不是CPU核心。X86架构的强大,很多时候也源于指令集的强大,比如我们知道的ATOM,虽然它的X86核心非常羸弱,但是由于它支持SSE3,在很多时候性能甚至可以超过核心性能远远强大于它的Pentium M,这就是指令集的威力。目前X86指令集已经从MMX,发展到了SSE,AVX,而ARM依然还只有简单而基础的NEON。它们之间不成比例的差距造成了实际应用中成百上千倍的性能落差,例如即便是现今最强大的ARM内核依然还在为软解1080p H.264而奋斗,但一颗普通的中端Core i处理器却可以用接近十倍播放速度的速度去压缩1080p H.264视频。至少在这点上,说PC处理器的性能百倍于ARM是无可辩驳的,而实际中这样的例子比比皆是。这也是为什么我在之前说平均下来ARM只有X86几十分之一的性能的原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|FastFib VPS论坛

GMT+8, 2024-9-21 04:40 , Processed in 0.058881 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表