我们在装机,挑选硬件尤其是CPU时,总会听到“采用xxx架构的xxx处理器”,而通常我们在选择CPU时,很多玩家也会考虑购购买什么架构的处理器。而到现在智能手机成为主流的时代,我们也知道了什么叫“苹果A12”“高通骁龙855”。虽然我们都在说架构,但是还有一个与处理器息息相关的名词,叫做指令集。虽然很多朋友也知道“x86”“Arm”,但是“微架构”与“指令集”有什么关系呢?
Skylake处理器架构细节之一
首先要看这两个名词是面向什么的。指令集是一款CPU处理指令及数据的规范,我们只能通过输入指定格式的指令才能操作计算机。而这个是面向程序员和用户层面的。而微架构是面向CPU设计人员的,通过设计处理器的指令执行单元,当完成整个设计时,组成的一整套执行规定指令的微处理器的架构就叫“微架构”。
AVX指令中的3操作数和4操作数格式
前面提到了指令集就是“规范”,这也就意味着他能指导CPU设计人员通过阅读“指令集规范”这本“指南”来设计CPU。而CPU设计人员通过阅读这本规范后设计出来的CPU结构就叫“微架构”。举个简单的例子,就是小学老师教会我们如何解决一元二次方程,但题目是很多的,我们就需要通过解题方法来解决这些实际的问题。这里“解题方法”就是指令集,而“具体的题目”就是微架构了。
AMD推出的x86-64规范,图片来自Wikipedia
讲到这里更正式的表述就是“微架构”就是“指令集”的具体“实现”。所以从我们日常使用中就可以举例,AMD和英特尔同样都是采用x86指令集的处理器,但是他们处理器具体微架构是不同的,这就是典型的“实现”问题。而近期发布的Arm Cortex-A77处理器微架构,其采用的是Arm v8.2指令集,其前代微架构Cortex-A76也是采用的Arm v8.2指令集。所以从软件开发层面上讲,其汇编语言也是相同的,所以两者就可以使用相同的操作系统,基本相同的软件,而基本不需要重新开发编译。
Cortex-A77处理器微架构解析
不过在具体设计处理器微架构时,不同的处理器在缓存、分支预测等结构会有不同,所以虽然可以执行相同的指令,但为了让软件在该处理器上运行更快,所以会针对缓存命中等进行优化。这种优化主要是软件层面的,所以既可以通过汇编语言,也可以通过编译器进行,最终提升软件执行效率。
最后总结一下,指令集需要通过微架构去实现,而采用相同指令集的处理器即使微架构不同,其也可以运行相同的程序(一定条件下)。处理器虽然采用相同指令集,但微架构不同的处理器,在缓存设计等方面存在差异,所以也会有通常处理器厂商也会为开发调试工具甚至是编译器等方式优化软件在自家处理器上的运行效率
超能网友教授 2019-06-12 15:36 | 加入黑名单
支持(4) | 反对(1) | 举报 | 回复
5#
游客 2019-06-11 17:52
支持(8) | 反对(0) | 举报 | 回复
4#
游客 2019-06-11 17:08
支持(0) | 反对(0) | 举报 | 回复
3#
超能网友一代宗师 2019-06-11 16:58 | 加入黑名单
该评论年代久远,荒废失修,暂不可见。
支持(2) | 反对(0) | 举报 | 回复
2#
游客 2019-06-11 16:24
1#