打印
[技术讨论]

【每日话题】高性能CPU微架构应该具有哪些特性?

[复制链接]
1013|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#每日话题# #有奖活动#

  • 参与本帖话题讨论,必奖20家园币~~~

  • 优质评论,另奖论坛现金红包~~~



简介
CPU是一个非常复杂的系统,评估其性能并不好量化,传统上讲,我们习惯说“不服跑个分”,这种方式当然也是一个相对靠谱能够对CPU性能进行量化评估的方式,但评估性能对于技术人员来讲,远不是跑个分就能得出结论的,本文将从CPU微架构的角度去讲解当前先进的微架构设计具备特性。亦安不会太过展开微架构的设计细节,所以需要一定的技术背景。

MMU
就从MMU讲起,MMU用于VA-PA的转换以及保护等作用。坦白说各个公司在宣传自家微架构的时候基本不会对MMU有过多的提及,都是提一下L1 TLB和L2 TLB的entry数量就略过,有些甚至都不会提这个。不是因为MMU不重要,而是这个模块相对而言不是CPU的流水线停滞的主要瓶颈点,并且对其微架构的设计都比较成熟,性能做的都还不错,但近些年也有对MMU进行深入研究的论文。

相对普遍的设计是L1 TLB分为ITLB和DTLB,统一的L2 TLB一般是1K entry-4K entry不等,L2 TLB有指令和数据分开的设计,也有混合指令和数据的(TLB用于存储VA-PA的映射)。对于地址转换的逻辑PTW,一般都是多个并行来缓解多个访问源的压力(每次转化地址需要很长时间)。而L2 TLB的自身结构就各家各有自己的设计,有多页面混合的,有页面分开的,这些选择就是PPA的平衡了。具体技术细节我就不讨论了,后续有时间出个专题讨论这些微架构设计的优劣。

刚才提到地址转换的时间是很长的,所以一般还会有Walk Cache,用于存储转化过程的中间页,那么原本可能需要访问4次Cache的转换过程,会被大大缩小。类似想实现缩短转换延迟的方案很多,目前业界采取比较多的是这种。当然其结构各个不一样。

聚合技术,聚合简单说就是VA连续PA连续的情况,可以依据这种规则将多个小页面压到TLB的一个entry里面,实现一次取多页的效果,并且原本一个TLB entry可以存多个页面,当然取来的额外的页未必有用,但评估实验结果来讲多数是有用的。

预取技术,预取在整个CPU领域都是属于关键的技术,目前MMU的预取一般都是实现简单的预取,预测下次要访问的页面。

对于MMU就简单说这些,基本都是高性能处理器具有的特性。

IFU
取指这一块可以聊的东西就很多了,宏观讲就是预测和取指解耦,好处是可以通过更多的预测(因为预测常常有错,会刷新预测的流水线)来缓解取指出现的气泡,还有命中itag后取指可以准确访问idata,减少不必要的无效访问,以及merge多次访问来减少对cache的访问等等。

ICache,ICache可以说是很受关注的一个点了,近些年来,ICache的容量升级不大,基本就是32K/64K的样子,当然也有更大的,相比较L2/L3这种动辄以M为单位的容量,ICahce变化不算大,对其要求当时是低延迟,高命中率,低缺失代价等。对于其优化大家可以参考“计算机体系结构量化研究方法”一书,例如路预测,非阻塞缓存的设计(也叫无锁缓存,缺失后依然命中,可以允许多个miss向L2查找),合并写等等。当然一些替换策略也是对Cache有较大影响的。

预测器,当前预测器比较主流的还是TAGE-SC-L,在2016年分支预测大赛上,TAGE-SC-L夺的桂冠,后续虽然也有不少预测器精度逐渐接近TAGE-SC-L(例如一些机器学习等),但效果依然是TAGE-SC-L更好,近些年基本是围绕TAGE来优化预测器,容量也是随着版本水涨船高。

BTB,BTB用来存储预测的目标,实际BTB相比较TAGE,ICache这些关注度没那么的高,但其miss对流水线停滞也是重大影响,对BTB的要求是在一定面积下实现更高的命中率,对于涉及SRAM结构的要求都差不多,都是希望一定面积下存更多有效信息实现更高的命中率。近些年对BTB的研究也有些比较有趣的论文,例如分region存储,分页存储,以实现在一定的面积下存更多的有效信息。当然这类论文早就有,工程上也很早实现了,只是现在研究的更加细致了。

一个cycle预测多个分支,一般实现这个特性在介绍自己微架构的时候都会提一下,例如AMD的Zen5架构,ARM的N2/V2以及后续版本。实际这种在学术上早在上个世纪就有论文描述,当前各家的实现方案我还在研究。

其它的不细致展开了,核心点就是“更小面积,更低功耗,更高性能”,不少人有个误区,觉得我花费了更多的面积,是不是就是更舍得材料,性能就更高?不是这样的,有些预测器用了更大的面积,但预测的效果还不如那些消耗资源更小预测器,当然这是个复杂的问题,有关于预测器历史发展汇总的论文,感兴趣可以搜搜看。

Decode/Rename/Dispatch

从这里往后我就不是很了解了,因为还没做过,重点的参数当然就是decode宽度了,当前自称高性能处理器的,解码宽度基本都是4+,当然解码宽度不仅仅只是decode模块的问题。

这里提一下复杂指令集常使用的uop-cache,也是预测完后直接访问uop-cache,然后直接绕过decode把指令发到rename。

高性能处理器基本都是乱序执行,和顺序执行相比,效率更高(当然这句话没那么严谨)。rename和dispatch,这里是CPU顺序和乱序的分界点,乱序是以牺牲能耗来提升性能的,这里有分发到执行单元调度的问题,一般这个模块都是希望能够实现高效的调度来实现对资源的高效利用。

传统的调度一般基于依赖性或者就绪性来实现分发,此模块希望提高效率,改善功耗,希望实现更优的指令和内存并行性,相关的论文描述的也比较多。

此处一般会作为宣传的参数有rename checkpoint以及分支flush的恢复优化。

ISSUE/EX

执行一般考虑执行低延迟高带宽,例如ALU的带宽,Zen5有6个ALU,V2也有6个ALU。对于OoO我不熟悉,所以没法过多聊一些所谓“高级”的微架构,后续我参与到这些工作会出一下详细的文章,所以OoO这一块的描述,大家简单参考即可。


LSU
LSU模块关键点DCache,和ICache需要注意点差不多,只是在面向数据存储上做优化,要求低延迟,高命中率,低缺失代价是一致的,除此以外还需要先进的预取引擎。

一般LSU重点需要低延迟,高数据带宽,高执行带宽等,常规的LS 2个,当然涉及的一致性也是关注的重点。

L2
需要的特性是大容量低延迟高命中率,例如现在ARM的新服务器系列的CPU L2基本都到2MB,而和上一代相比容量变大延迟保持不变。取数据的带宽要求更高,能对死区进行有效的预测,支持强大有效的一致性接口。

安全特性

不管是微架构还是架构一般都会有强大的安全设计。

总结
如果我具备某种微架构是不是就可以称为高性能处理器了,如果没有就不是?也不能这么讲,这些微架构都是权衡后的选择,而且也取决于设计者的水平,同样的微架构不同人设计出的效果差距可能巨大。最后说一句“不服跑个分”一定程度上可以反映微架构设计水准的。

使用特权

评论回复

相关帖子

沙发
tpgf| | 2024-7-30 13:12 | 只看该作者
高性能CPU微架构的特性包括但不限于MMU和TLB优化、取指单元的改进、ICache的优化

使用特权

评论回复
板凳
咕咕呱呱孤寡| | 2024-7-30 13:24 | 只看该作者
我觉得CPU中的安全设计是比较重要的一个环节了

使用特权

评论回复
地板
海中水| | 2024-7-30 13:40 | 只看该作者
最后的总结很到位,微架构都是权衡后的选择,而且也取决于设计者的水平。

使用特权

评论回复
5
丙丁先生| | 2024-7-30 13:54 | 只看该作者
高性能CPU微架构这个话题,其实挺有意思的。就像我们平时挑手机,看中的不仅仅是外观,更重要的是里面的硬件配置。CPU作为计算机的大脑,它的微架构设计直接影响到性能和效率。

首先得提提MMU,这家伙负责虚拟地址到物理地址的转换,还有保护机制。虽然听起来有点技术宅,但MMU对CPU性能的影响可不小。现在市面上的CPU,L1 TLB和L2 TLB的条目数量是衡量其性能的一个标准。而且,为了减少地址转换的时间,很多CPU还配备了Walk Cache,这就像是给地址转换过程加了个缓存,效率自然更高。

再说说IFU,也就是指令获取单元。这里头的学问可大了,预测和取指解耦是关键。简单来说,就是通过预测来减少取指令时的等待时间。ICache作为取指令的缓存,容量虽然变化不大,但对低延迟和高命中率的追求可是永无止境。

预测器,这可是个技术活。TAGE-SC-L预测器在2016年的大赛上拿了冠军,现在虽然有其他预测器精度接近,但TAGE-SC-L依然是主流。BTB,也就是分支目标缓冲,虽然关注度没那么高,但它对流水线的影响也不容忽视。

接下来聊聊Decode/Rename/Dispatch,这部分涉及到指令的解码、重命名和调度。高性能处理器的解码宽度至少是4+,这直接影响到CPU能同时处理多少指令。乱序执行是提高效率的一个手段,但同时也会增加能耗。

执行单元(ISSUE/EX)和加载/存储单元(LSU)也很关键。执行单元要保证低延迟和高带宽,而LSU则要优化数据访问,提高命中率。

L2缓存,这个大家都懂,容量越大,延迟越低,性能越好。现在ARM的新服务器CPU,L2缓存都达到2MB了,这容量,杠杠的。

最后,安全特性也不能少。在这个信息爆炸的时代,保护数据安全是每个CPU设计者都需要考虑的问题。

总的来说,高性能CPU微架构的设计是个技术活,需要在性能、功耗和面积之间找到平衡。就像我们挑手机,不是只看摄像头像素,还要看整体性能和使用体验。同样的,CPU的性能也不能只看单一指标,而是要综合考量。所以,那句“不服跑个分”虽然有点调侃,但也反映出了大家对CPU性能的关注。毕竟,分数有时候还是挺能说明问题的。

使用特权

评论回复
6
gyh974| | 2024-7-30 14:02 | 只看该作者
世界上能做CPU的是不是就两国家?

使用特权

评论回复
7
blust5| | 2024-7-30 14:02 | 只看该作者
对CPU架构不太了解,学习一下

使用特权

评论回复
8
王栋春| | 2024-7-30 14:28 | 只看该作者
这个问题从本人这非专业人员的角度来讲,最重要的是便于编程和使用,更PLC那种图形编程最好。

使用特权

评论回复
9
forgot| | 2024-7-30 14:45 | 只看该作者
预取在整个CPU领域都是属于关键的技术,目前MMU的预取一般都是实现简单的预取,预测下次要访问的页面。

使用特权

评论回复
10
jlc317| | 2024-7-30 14:52 | 只看该作者
只有适合自己的才是更合理的

使用特权

评论回复
11
springvirus| | 2024-7-30 15:36 | 只看该作者
最初的CPU是谁发明的,真牛叉

使用特权

评论回复
12
wzx1994| | 2024-7-30 15:39 | 只看该作者
今日的话题,有点高大上了,学习了、

使用特权

评论回复
13
飞天鸣人| | 2024-7-30 16:18 | 只看该作者
高性能CPU微架构确实不仅仅取决于跑分,在选择的时候还是要看需求。

使用特权

评论回复
14
混子黄| | 2024-7-30 16:51 | 只看该作者
不明觉厉,话题过于高端,对大多数人来说也就用用单片机搞搞硬件,编编程,这些估计没到研究生很难深入学习

使用特权

评论回复
15
田舍郎| | 2024-7-30 17:15 | 只看该作者
cpu的功耗若是能降下来就厉害了

使用特权

评论回复
16
地瓜patch| | 2024-7-30 18:03 | 只看该作者
cpu的多级流水线的设计挺高级的

使用特权

评论回复
17
木野臻| | 2024-7-30 20:18 | 只看该作者
CPU的设计的确很难得立足,高端的设计稳定性,性价比高。

使用特权

评论回复
18
zrk787| | 2024-7-30 20:41 | 只看该作者
应该具有先进的制程技术

使用特权

评论回复
19
zym123| | 2024-7-30 20:46 | 只看该作者
优秀的核心架构

使用特权

评论回复
20
ybw787| | 2024-7-30 21:04 | 只看该作者
共享式二级缓存设计、‌高效的流水线设计

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:祝大家天天开❤ ///w/// 有问题咨询联系QQ:3326242524

2751

主题

6438

帖子

239

粉丝