参考:
1. 问题
你是否有下面的问题?
什么是指令集架构?RISC-V是个什么鬼,好像最近很火呢?ARM是个啥?AMD和ARM有关系吗?x86是intel公司的专属吗?下载linux操作系统的时候,经常让选择架构?amd64和x86什么区别?
2. 从指令集概念说起
广义上指令集分为两类:RISC(精简指令集) 和 CISC(复杂指令集)。 它们的区别是什么呢?
CISC(Complex Instruction Set Computer),设计思路是用一条指令完成一个复杂的基本功能;
RISC(Reduced Instruction Set Computer),设计思路是一条指令完成一个基本“动作”,多条指令组合完成一个复杂的基本功能。
两大指令集各有优缺点:
CISC相对于RISC较重,支持的指令多,功能强大,但功耗也大,适合PC机(也是事实上PC机的霸主);RISC相对于CISC较轻,功耗也小,适合手机等便携设备(也是现在手机上霸主);
但,需要注意,RISC 和 CISC都只是概念上的分类。。。
3. 指令集架构
上面,我们说CISC和RISC只是概念上的分类,那么具体都有哪个架构呢?
CISC:x86;RISC:arm、RISC-V、LoongArc、MIPS;
3.1 x86架构
虽然x86这个名字起源于Intel,但这种架构不是Intel公司的专属,而且x86也不仅仅指32位处理器,它也可以表示64位处理器。
有的时候,我们也能看到x86_x64、amd64等说法,那是因为某些情况下需要明显区分32位和64位。
那么,为什么我们会认为x86就是32位系统呢? 其实,这也是历史命名的问题: 早期,Intel公司推出一系列的8086、80186,80286等芯片,将它们统一称为x86,但此时它还只是32位架构,后来AMD公司对它进行了扩展,率先推出了amd64(64位)处理器,然后Intel也推出了64位处理器,为了明显区分之前的,就称之为x86_x64,其实,它们都是对原有x86架构的一种扩展而已。
讲到这里不得不说两大公司Intel和AMD。。。
Intel自不用多说,早期的奔腾系列,现在的PC机的酷睿系列、服务器的至强系列都占据了很大市场。
AMD早期做Intel的代工厂,后来Intel觉察到了AMD的威胁,果断禁止AMD生产intel研发的X86芯片,从此AMD正式走上了自主研发的道路,后来与Intel的诉讼中胜诉,可以自行生产兼容x86架构的芯片了,从此x86不再是Intel的专属,AMD 和 Intel 在CPU上开始了漫长的拉扯。。。
它们两家在历史上都有各自的辉煌期,都是碾压对方的存在,不过当前Intel致力于转型为以数据为中心的研发,而AMD在收购了ati后也成为了同时研发CPU和显卡的公司。
具体它们的历史,可以自行百度,或参考:《intel和amd处理器发展历史》
3.2 ARM
arm既是一个公司,也是一种架构(arm和amd并没有什么关系)。
arm早期成立时也类似于Intel和AMD自己生产芯片销售,但迫于资金压力,转为卖授权,由此,arm架构的芯片称为了手机和嵌入等设备的霸主。
直接看百度百科对arm公司的介绍:
3.3 RISC-V
或许是因为arm要被英伟达收购,RISC-V这一个开源的cpu架构最近活了起来(国内国外厂商都积极加入,如:华为海思、阿里平头哥等),但pc已被x86占据,移动端也被arm吞噬,RISC-V的未来主战场或许在处在萌芽阶段的物流网市场。
注意:RISC-V相比于x86和arm还有很多不足,许多基础设施还不完善。
3.4 LoongArc
这是国产自动知识产权的芯片。由龙芯中科设计,据宣传:
后续如何,可以期待。
3.5 MIPS
MIPS公司研发的一种RISC架构,用在网关、机顶盒、路由等设备上较多,一般我们程序员接触的比较少,不过多介绍,可以参考百度百科:
4. 汇编的语法
汇编语言是依赖于硬件的,更准确的说是依赖于cpu的指令集架构,所以,每种架构理论上都有自己的汇编语法。
4.1 x86汇编:
有两种风格的语法:Intel 和 AT&T,前者是Intel的专属,一般我们在window上做汇编基于此;而后者多用在linux上。具体可参考:《汇编格式 AT&T 与 Intel》,截图如下:
4.2 arm汇编:
arm这种架构有自己的汇编语言,不过,我们不做嵌入式开发,接触的少,我们可以去官网上查看它的编译器:
4.3 RISC-V汇编:
也有自己的汇编,可以百度支持它的语法和编译器 - 官网:https://riscv.org/ - github地址:https://github.com/riscv
4.4 LoongArc汇编:
也有自己的汇编,可以去官网看看:https://www.loongson.cn/ 根据资料显示,gcc 12.1+,linux5.9+ 、FFmpeg5.0+、dotnetcore 3.1都已支持 LoongArc架构。
5. 常见关于架构的问题
5.1 下载操作系统时cpu架构的选择
我们在下载操作系统的时候,经常会让我们选择cpu架构,如:
5.1.1 centos:
5.1.2 ubuntu
5.1.3 debian
5.2 下载其他软件时的cpu架构选择
有的时候,我们下载某些软件的时候也是要选择cpu架构的,如:
5.2.1 dotnet
5.2.2 linux上安装软件时
6. 补充手机上cpu的市场
手机上的cpu厂商基本上都是买的arm公司的授权,比如:高通、华为、联发科。
但手机的cpu不止要有pc机上的功能,还要有通信技术,其中有个CMDA,早期高通在这个上面大量研发,申请了很多专利,导致现在其他的手机厂商都要向高通支付昂贵的专利费(苹果也不例外,为此还打了官司,还没打赢,后来就自研了,比如:A系列、M1等)。。。
在手机市场上,Intel也想过,也尝试过,奈何自己不行,现在也不怎么做手机了,就像微软当时要做Window Mobile一样,最后也没了声响。