前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于处理器指令集和微架构

关于处理器指令集和微架构

作者头像
虚拟化云计算
发布2023-03-27 15:58:57
7720
发布2023-03-27 15:58:57
举报
文章被收录于专栏:虚拟化云计算虚拟化云计算

大家好,前段时间小伙伴测试了两款服务器处理器,同是armV8指令集架构,结果差别巨大,可以看出两家公司在微架构设计能力上的差距。

借着这个话题,今天cloud3聊聊处理器的指令集和微架构。

指令集

指令集就是我们常说的架构,CPU执行计算任务时都需要遵从一定的规范,这种规范或语言就是指令集(ISA,Instruction Set Architecture),它规定处理器相应操作,通过指令集去控制处理器实现相应功能。

常见的指令集有x86、ARM、MIPS 、 Alpha、 RISC-V、Power等,除x86 是CISC 指令体系外,其他都是RISC指令体系的指令集。

指令集可以被扩展,如x86增加64位支持就有了x86-64。厂商开发兼容某种指令集的CPU需要指令集专利持有者授权,典型例子如Intel授权AMD,使后者可以开发兼容x86指令集的CPU。

微架构

CPU核的实现方式被称为微架构(Microarchitecture),它是处理器的硬件架构,是一堆硬件电路,去实现指令集所规定的操作运算。

在相同指令集架构的规范下,如何设计硬件电路,每个人实现是不同的,所以设计出的微架构也不相同。

例如AMD的x86指令架构是Intel 授权给他们的,虽然AMD 采用的也是x86 指令集,但Intel 可没把硬件实现方法也告诉AMD,如果实现方式一样了,那不成了一样的CPU了。这就是指令集相同,微架构不同。

总结起来,指令集是CPU选择的指令编码,而微架构是具体物理实现方式。

我们平时所说的Haswell、Cortex-A57、Cortex-A72、Kyro 这些都是指CPU的微架构,其中Cortex系列为ARM公司的微架构,任何公司可以购买,也就是我们所说的公版架构,Kyro是高通自己基于ARM指令集设计的微架构,是构建在ARM指令集的生态上的微架构。

关于ARM授权

ARM公司有自己研发的ARM指令集,同时它还研发具体的微架构如Cortex系列并对外授权。ARM的授权就是从这两个层次上进行的,一种是指令集授权,一种是微架构授权。

如果是指令集授权, 仅购买ARM的架构/指令集(ARMv8、ARMv9),然后自己研究兼容ARM指令集的微架构,例如苹果公司可以使用ARM指令集设计自己的微架构,甚至可以对ARM指令集进行扩展,从而出现了苹果公司自己的'swift架构'。

如果是微架构授权,只能是在arm微架构基础然后在加上自己的外设,最后形成了自己完整的SoC。

自主研发微架构才是

IC设计实力的体现

最能体现CPU设计能力的是微架构的设计能力,微架构的研发也是IT产业技术含量最高的领域之一,业界认为一个企业只有具备独立的微架构研发能力才算具备了CPU研发能力。

因为CPU的微架构的设计非常复杂,CPU微架构包括缓存管理,缓存设计,乱序执行,超标量,超流水线,内存控制,分支预测等众多的极其复杂的电路,这些结构的效率是直接决定CPU性能的,所以微架构才是决定处理器好坏的主要因素。

高通、苹果、华为、龙芯等是自主设计的这些电路,所以说是自主的CPU微架构,只是用了ARM的指令系统和寻址方式而已。微架构玩的最好的当属苹果,华为鲲鹏920也是遵循armV8指令集的自研微架构,我国的龙芯也只是用了MIPS指令系统,但微架构也是自己设计的。

我们为什么不设计一套指令集?

要明白一点指令集与操作系统和编译器是紧密相连的,目前主流移动操作系统有Android和IOS,他们是arm的最亲密战友,X86指令集上面有windows这颗大树。

如果你设计一套新的指令集架构,上面的生态是大问题。所以你看华为、三星、高通都买arm的授权,其实买的是一种生态。

现在龙芯LoongArch是国内第一套完全自研的指令集,算是龙芯从原来的授权+自主指令集的模式的道路上走了一段时间之后的突破吧。

我是cloud3

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 虚机 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档