高性能服务系列【三】CPU和内存2

本文介绍了NUMA架构的出现背景,重点讲述了内存控制器集成、跨CPU访问内存机制以及在NUMA下线程切换和原子操作的性能影响。文章强调了核间迁移和缓存一致性协议的重要性,同时提到了分支预测技术在高性能程序中的应用。
摘要由CSDN通过智能技术生成

上篇写到传统的计算机系统架构对性能的影响,有朋友提到不容易理解。其实我只是想起到提纲掣领的作用,每个主题都是个很宏大的,不是三言两语,随笔这样性质文章能够覆盖的。

随着现代服务器主板上挂载的CPU越来越多,一个很显然的限制,就是FSB和北桥芯片的带宽跟不上,于是NUMA架构被提出。NUMA的几个特点,就是为了解决FSB和北桥芯片的瓶颈问题:

1、内存控制器被集成到芯片中,每颗芯片都直接挂接本地主存。相当于FSB和北桥芯片直接被集成到芯片中,也就不存在瓶颈了。

2、访问其他芯片的本地内存,需要通过快速总线,英特尔的QPI/UPI或者AMD的IF总线。作用相当于传统的FSB,但不一样的是,只有跨芯片访问远程的主存才需要。如果访问本地主存,那是相当快的,完全不需要。

CPU和CPU之间的高速通道,不是点对点完全相等。比如4颗CPU之间,距离可能是10/16/22/28。

在上篇中提到的两个场景,线程切换和原子操作,在NUMA架构中更加复杂,特别是在CPU之间进行迁移,比同一CPU内部的核间进行迁移,要付出更多的性能损失,原理却是一样的。

到此为止,CPU和内存对服务性能影响的要点也提到差不多,基本都归结到两点:1、核间迁移;2、缓存一致性协议。

除此之外,还要再提到一个有趣技术:分支预测。这项技术在日常开发中,极少用到,只有在性能敏感的程序会考虑这些。在linux内核中,经常会看到likely和unlikely。这两个函数的底层原理就是分支预测技术,同样涉及到高速缓存的预加载。

掌握好计算机组成的基础原理,在后续更宏大的架构设计,已经为你提供了大部分的答案

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值