都不会!所以M1芯片发布后,intel和AMD的芯片没有太大影响,真正对intel和AMD可以产生影响的是高通和微软,对intel威胁最大的是AMD,让intel芯片降价的也是AMD。下面具体说说:
在说这个问题前,我们要看一下Intel和AMD的主要业务是什么以及苹果M1改变了什么,因为AMD的规模和业务覆盖不如intel,所以我们分析下intel,看一下最新的2020年第三季的财报:
可以看出来,CCG的占比达到54%,收入还提高了1%,财报里有一句话很有趣“intel推出了世界上最适合轻薄本的处理器”,
In the third quarter, Intel launched the world’s best processor for thin and light laptops, 11th Gen Intel® Core™ processors with Intel® Iris® Xe graphics (formerly known as "Tiger Lake").
CCG占整个Intel收入的54%,这部分是跟苹果M1芯片有关的,其它的DCG、IOTG等都不受影响,首先可以肯定的是损失了苹果笔记本的不少订单,其它潜在的影响是一些PC用户向用M1芯片的苹果产品的转换,当然最大敌人依然是AMD。
下面我们看看苹果M1最大的转变是什么,我们先来看一张iFixit 对MBP的拆解图,如下所示:
M1做的事情首先把这些打包到一起了,CPU、GPU,Neural Engine(原来没有)以及其它的IP单元,比如HDR video 处理器,HDR imaging 处理器,USB控制器等通过Fabric总线与DRAM和连接。与传统的Intel/AMD的处理器相比,M1是一个真正的SoC芯片,这种高集成度注定只适合笔记本领域,即便Intel/AMD以后这样做也是如此,因为这样做GPU无法升级,内存无法升级,
M1与内存封装在一起,优点就是速度更快,缺点是没法扩展,考虑到目前的产品16GB可能还够用,但是如果要用在更要求性能的机器上应该很多人不够用。同样的道理SoC集成了很多的IP核,在做相应的处理运算的时候会很高效,比传统的CPU/GPU处理可能高几十倍,我想M1做一些视频处理也会很高效,但是这种asic固化的方式也是写死的,有新的框架之类的效率可能会降低。
当然,跟这些比起来,intel的老朋友微软才是最大的关键,苹果有勇气抛弃Intel,跟自己掌握操作系统有特别大的关系,甚至苹果从编程语言,IDE、编译工具都有把控力。Wintel是过去几十年微软和Intel成功的关键,虽然Windows on arm现在就有,但是并不是很用心,跟高通勾勾搭搭说不清但是还是不够重视。就怕苹果M1的成功刺激到微软了,贴了心要把高通明媒正娶当正房。
说到这里非常可惜,我原来用过华为出的一款本子,是骁龙处理器+WIN10,基本应用都能跑,就是效率不高,本来按这个发展节奏作为苹果的好学生华为很可能也会推出类似的麒麟芯片往笔记本上弄,结果。。。
虽然说M1芯片暂时不会对intel和AMD产生影响,但是这款芯片的出现已经开始对行业产生影响了,对于有视频剪辑需求以及MBA用户而言是真香。
说到真香,我看了一眼,拼多多百亿补贴中已经有搭载M1芯片的MBA了,补贴700,注意!选百亿补贴的。
8+256GB的到7499了,不过暂时被抢完了,拼爹爹!
一、苹果M1只是一个开始。
苹果还会有M2、M3,更可怕的是ARM公版会有X2、X3、X4……
需要指出的是ARM公版A76、A77、A78并不弱。
性能落后苹果是,同时代,用1W、2W的功耗打苹果的5W。
未来,ARM也上5W,可能也会用宽发射,IPC未必比苹果差多少。
就是说,以后ARM公版的MTK,紫光也会高性能处理器。
苹果M是对外不卖的,但是MTK,紫光是对外卖的,可能会有ARM的平板或者类似于笔记本电脑的东西。
二、苹果M1可能把ARM指令集的问题解决
ARM和X86之间需要二进制转换,以前这种转换效率很低。
英特尔ATOM用X86模拟ARM,微软高通用ARM模拟X86效率都很低
但是苹果的转换效率大约有70%-80%的样子
苹果之后,可能会在安卓或者Linux平台,有效率更高的转换器。
就是说,以后可能会有安卓平台通过模拟器,高效率运行Windows系统,或者Windows下程序。
目前的模拟器效率比较低,运行WinXP和Win7可以,运行Win10效率太慢。
现在用骁龙865在模拟器下跑SuperPI,只有早期2.0Ghz奔腾4的水平。
如果有苹果的转换效率。
安卓下,或者Linux下直接高效率运行Windows的生态,那么ARM和X86就形成直接的竞争关系。
就是说,两年后紫光出 ARM X3的芯片,安卓下直接跑Windows虚拟机,有70%-80%的效率,实际效能达到Zen2的水平。还能跑安卓的生态。
能耗很低,价格很便宜,这就构成竞争了。
三、AMD和英特尔可能学手机SOC
苹果M1是手机发展过去的。
其实,早在骁龙801的年代,手机处理器四核不如酷睿2双核的时候,手机SOC已经能4K录制,4K解压了。
而当年的i7解压4K视频都很吃力。‘
差别在手机SOC,直接集成了硬件解码器
苹果M1剪辑视频,比英特尔的工作站还强,并不是处理器性能强大,而是M1自带硬件模块。
电脑,以前是板卡思路
游戏加显卡,视频以前有解压卡,视频编辑有编辑用的卡……
手机SOC的集成思路,电脑处理器应该学习,把常用的功能做成硬件电路集成了,比CPU去算效率高多了。
不常用的再加板卡。
四、英特尔和AMD会有更大的牙膏
苹果在A11以后,其实IPC进步也慢下来了。
要靠主频提升来维持性能进步。英特尔和AMD最近一年的IPC都在进步。未来几年,这几家都会把牙膏多挤一些。
苹果的悬念,是未来的桌面处理器。
现在的M1还是移动处理器移植过去的。考虑功耗,主频拉的并不是很高,功耗大约放到25W
没有一开始就把功耗放到65W,甚至200W去做。
苹果还在集成GPU,而没有把GPU单独去做。
在生态成熟以后,不排除苹果用自己的处理器上桌面,做工作站。
现在苹果一个大核心大约5W-6W,四个大核心25W足够了。
而桌面上可以用65W,一个核心可以有15W甚至更高(一个大核心单独睿频)
这个时候主频就不一定是3.2Ghz了,4Ghz行不行?
拿到工作站上,16个核心200W行不行?
苹果能做,ARM也能做。
ARM做一个X3,单核心功耗放到15W,能不能上4GHZ?
紫光做一个四核心的ARM处理器,能跑安卓,能跑Linux,能虚拟机跑Windows,做成PC卖,英特尔和AMD有没有压力?
五、nVIDIA的变数
nVIDIA正在收购ARM
如果,nVIDIA收购成功,加入战团会很热闹。
nVIDIA的丹佛很久以前就是7发射了,nVIDA把ARM公版发展出高性能处理器,估计规模会很恐怖。
nVIDIA手里有nvlike和网卡的高速连接,它来搞可能会有利于大规模运算。
如果其他因素,CPU未来我更看好分工的模式
1、ARM出指令集和IP,设计CPU、GPU和其他一些IP。
2、中国大陆企业用比较低的人力成本,设计出处理器
3、台积电、三星代工生产
4、大陆的电脑、平板企业制造消费成品
这种处理器的量可能很大,价格可能很便宜。类似于电视盒子芯片的价格
当年杀死诺基亚的并不是苹果手机,
杀死intel和amd芯片的也不会是M1芯片,
而是根据M1的原理的全新芯片们。
苹果芯片不外卖。。。
所以问题解决了。
M1性能再高也是只有iMac、MacBook有关系,而iMac和MacBook因为价格和功能原因,实际上在消费市场里面和PC市场重合度并不太高。
所以关intel和AMD什么事情呢?这两家没有一个卖整机的,单纯就是卖芯片,你说你苹果产品那价格,压根就砸不死人家两家的市场啊。
打个很不恰当的比喻,这就好比A14横空出世,你问天玑怎么活?该咋活咋活呗。。。难道你苹果还能冲进3000价位抢市场不成?
M1强在哪里,之前写过两篇回答了,一篇针对CPU部分,另一篇针对SoC整体。没看过的朋友有空可以看一下,好歹是拿到了几个专业徽章的:
智能手机、平板普及也不是一年两年了,上网追剧聊天的,真没几个人用PC了。现在买PC的,大部分生产力,少部分玩游戏。
如果年纪大点或者接触PC时间长点的,最早应该在本世纪初,就听说过“性能过剩”这个说法了。那时候AMD的K7和Intel的奔三频率大战,CPU频率从之前的主流300 MHz迅速提升到1 GHz以上。现在回看,那时候就说性能过剩有点太天真了,才单核1 GHz就以为够用,严重低估了广大程序员浪费硬件性能的水平了,看看程序员们是如何高效的浪费掉CPU厂家提供的性能的:
面向对象编程。摘录一下维基词条:
面向对象程序设计推广了程序的灵活性和可维护性,并且在大型项目设计中广为应用。此外,支持者声称面向对象程序设计要比以往的做法更加便于学习,因为它能够让人们更简单地设计并维护程序,使得程序更加便于分析、设计、理解。
然而面向对象编程时,大量的调用和参数传递,都需要更多的指令去处理。对比下这两个程序:
int main(int args) { int a, b, c; a = 5; b = 8; c = a + b; }
把加法计算改成函数调用:
int func_add(int a, int b) { return a + b; } int main(int args) { int a, b, c; a = 5; b = 8; c = func_add(a, b); }
对这两个程序分别用gcc编译,看看要执行的指令区别(使用-O0选项避免编译器优化,使用-S选项查看指令文本)
.file "add.c" .text .globl main .type main, @function main: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movl %edi, -20(%rbp) movl $5, -12(%rbp) movl $8, -8(%rbp) movl -12(%rbp), %edx movl -8(%rbp), %eax addl %edx, %eax movl %eax, -4(%rbp) movl $0, %eax popq %rbp .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE0: .size main, .-main .ident "GCC: (Gentoo Hardened 9.3.0-r1 p3) 9.3.0" .section .note.GNU-stack,"",@progbits
没有函数调用的整个文件只有12条指令。
.file "func_add.c" .text .globl func_add .type func_add, @function func_add: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movl %edi, -4(%rbp) movl %esi, -8(%rbp) movl -4(%rbp), %edx movl -8(%rbp), %eax addl %edx, %eax popq %rbp .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE0: .size func_add, .-func_add .globl main .type main, @function main: .LFB1: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 subq $24, %rsp movl %edi, -20(%rbp) movl $5, -12(%rbp) movl $8, -8(%rbp) movl -8(%rbp), %edx movl -12(%rbp), %eax movl %edx, %esi movl %eax, %edi call func_add movl %eax, -4(%rbp) movl $0, %eax leave .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE1: .size main, .-main .ident "GCC: (Gentoo Hardened 9.3.0-r1 p3) 9.3.0" .section .note.GNU-stack,"",@progbits
函数调用版则是需要执行24条指令,多了一倍。而且大量的调用,会降低CPU分支预测正确率和缓存命中率,分支预测失败起码需要清空流水线浪费十多个时钟周期,缓存命中失败需要从下级缓存甚至内存中取数的话,少说需要等待十来个时钟周期,多则需要等待数百个时钟周期。
应用虚拟机。摘录一下英文维基词条:
A process VM, sometimes called an application virtual machine, or Managed Runtime Environment (MRE), runs as a normal application inside a host OS and supports a single process. It is created when that process is started and destroyed when it exits. Its purpose is to provide a platform-independent programming environment that abstracts away details of the underlying hardware or operating system and allows a program to execute in the same way on any platform.
Java、微软的.Net都是在应用虚拟机上运行,目的是让应用运行在一个硬件无关的软件环境中。这些应用虚拟机早期尚未成熟的时候性能有多烂就不用我说了吧?好处在于程序员不需要为每种不同的硬件环境编译一套二进制程序,甚至进行代码上的调整。
Web应用、XML、各种脚本语言。
这些技术的共同性都是使用文本,极大的方便了程序员直接查看代码和数据。然而对这些格式文本的解析和转换为CPU可以处理的数据,也是非常浪费硬件性能的。有兴趣的,可以随便找个开源语言,看看里面的html/xml的解析器里面使用了多少正则表达式处理,正则表达式的实现里面又有多少分支判断和循环。如果改成用二进制的数据结构来实现,一个浏览器需要两三秒才渲染出来的网页,完全可以几毫秒内完成渲染。
上面这些技术的流行,告诉大家,CPU性能是永远都不会嫌多的。
然而,程序员浪费硬件性能是为了提高开发效率(说白了就是偷懒):面向对象是提高代码复用率,不用重复造轮子;跨平台、脚本语言、Web应用,省了多平台、多版本的重复开发、分发更新、兼容旧版的麻烦;Web应用、XML、脚本语言使得程序员看代码无需再找对应的源码,查数据无需先做格式转换。当CPU主频提升困难,又没有出现新的革命性技术可以大幅提升单核性能的这些年来,CPU厂家提升性能的主要手段一是堆核心,二是加宽SIMD指令。然而单个线程只能在一个核心上运行,要利用上这些新增加的核心性能,程序员要面对多线程编程的各种坑。多线程编程有多坑?随手推篇文章:
懒得看的,摘录一段:
说起多线程,有那么几个老生常谈的概念不得不再次在此重申一遍。这里,用群众喜闻乐见的“挖坑”这件事进行类比:
并发:有一群人在挖坑。可能是挖同一个坑,也可能是各自挖各自的坑。
单线程 vs. 多线程:一个人在挖坑 vs. 一群人在挖坑。坑的数量不明,人员的组成不明,挖坑的具体安排不明。
同步:可以是下面中的某一个:
线程同步:一群人在挖坑,同时有一群人在拉土,坑挖好了的时候拉土的人才开始工作。
数据同步:一群人在挖坑,以某种方式保证所有人都知道挖坑进度,防止挖到别人的坑里并产生事故。
异步:一个或一群人在挖坑,忽然有人指示开挖新坑,但并没有人为之所动;几小时后连新坑都挖完了,但具体中间是怎么安排的并没有人知道。
这就吃力不讨好了,所以不是真的需要处理大批量的数据的应用,很少为多线程优化,单独一个线程处理界面响应已经算做的不错了。也是因为这样(PS:再加上AMD推土机系列的不争气),Intel才有底气在桌面、笔记本市场挤了近十年的牙膏,从Core 2 Quad一直到Core Gen 7,主流桌面最高级别的CPU一直都只有4核8线程——反正给多了一般人也等闲用不上。4核8线程的规格,足够2~3个稍微有点多线程多任务的应用在后台运行的同时,CPU还有足够的资源保证前台应用的快速响应。
至于加宽SIMD指令,对于批量数据处理很有用。如果说64bit的MMX、128bit的SSE很方便也很适合处理一些常见矢量数据的话,256bit的AVX/AVX2和512bit的AVX512,适用范围真的很窄。这些之前也写过回答了,不重复:
所以,现在x86早就严重两级分化了:一方面是提升单线程性能,只能像苹果那样加宽架构来提升,但是x86的变长指令严重制约了解码单元性能(这个在M1跑分超过i9那篇回答中有详细说明,不重复了),而且宽架构需要消耗更多的晶体管,单个核心成本过高;另一方面则是随着制程工艺升级带来的功耗下降,在限定功耗的场景下塞进去更多的核心。但加宽架构和更多核心这两个方向是矛盾的,因为都会消耗更多的晶体管。CPU厂家只能在两者之间,加上成本因素(晶片大小)来平衡。但可以肯定的一点是,加核心带来的性能提升几乎是线性的,只要你的应用能躲开内存瓶颈并且分出这么多线程来跑,而加宽架构则是会因为受到算法中的指令并行度、分支预测正确率、缓存命中率这些因素影响,两倍的晶体管很可能只能提升40%的IPC——对于x86而言,还有一个绕不开的解码器性能需要去解决。
从两家已经公开的roadmap来看,Zen4会有哪些改进还不明确,Intel则是打算走大小核混合,可能还有类似M1这样搭配多种专用单元的SoC路线。但和M1的不同在于Intel大概率会把各种专用单元做成chiplet,用芯片堆叠/互联的封装方式来集成,而非M1这样固定多个专用单元。具体请参看关于LKF的评论回答:
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有