CPU性能发展所遇到的瓶颈
通常一个处理器通常包含多个核心(Core),集成 Cache 子系统,内存子系统通过内部或外部总线与其通信。在经典CPU中一般有两个常用的组件:北桥(North Bridge)和南桥(SouthBridge)。它们是处理器和内存以及其他外设沟通的渠道。图1给出了处理器、内存、南北桥以及其他总线之间的关系。
从图一可以看到:
1)处理器访问内存需要通过北桥。
2)处理器访问所有的外设都需要通过北桥。
3)挂在南桥的所有设备访问内存也需要通过北桥。
那么CPU访问南桥上的外部设备和北桥上的DDR内存的访问速率受CPU的主频、Local Bus带宽、南桥外设总线的速率、CPU取指令机制等多方面所影响。
处理器主频和集成度在过去二十年里一直按照摩尔定律在发展,从单核到多核以及超线程。处理器的性能提高不少,同时处理器的功耗也正比于主频的三次方在增加。因为使用的晶体管栅极材料存在漏电现象,高频率下电子迁移显著,势必为导致产热量增加,散热带了重大问题。CPU欢快的朝着频率越来越高的方向发展,受到物理极限的挑战,又转为核数越来越多的方向发展。由于所有CPU Core都是通过共享一个北桥来读取内存,随着核数如何的发展,北桥在响应时间上的性能瓶颈越来越明显当北桥出现拥塞时,所有的设备和处理器都要瘫痪。这种系统设计的另外一个瓶颈体现在对内存的访问上。不管是处理器或者显卡,还是南桥的硬盘、网卡或者光驱,都需要频繁访问内存,当这些设备都争相访问内存时,增大了对北桥带宽的竞争,而且北桥到内存之间也只有一条总线。
为了改善对内存的访问瓶颈,出现了另外一种系统设计,内存控制器并没有被集成在北桥中,而是被单独隔离出来以协调北桥与某个相应的内存之间的交互。系统结构如图2所示。
图 2 所示的这种架构增加了内存的访问带宽,缓解了不同设备对同一内存访问的拥塞问题,但是却没有改进单一北桥芯片的瓶颈的问题。
为了解决北桥北桥在响应时间上的性能瓶颈,把内存控制器(原本北桥中读取内存的部分)也做个拆分,平分到了每个CPU上。于是NUMA(Non-Uniform Memory Access)就出现了。内存控制器集成到CPU内部,Intel第二代酷睿I系列以及将主板北桥合并到CPU内部,所以Intel第二代酷睿I系列没有北桥,只有南桥。AMD没有吞并北桥。顺便补充一下Intel 单个socket只支持单个node,AMD 单个socket配对个node。(Node,socket,core,thread)是NUMA中的概念,linux下查看cpu参数通过如下命令:
- lscpu
图3
图3可以看出CPU是小端模式,每个CPU有一个core,每一个core有一个thread。三级cache大小,Flags查看支持的大页内存,比如pse 代表支持2MB的内存页,pdpe1gb代表支持1G内存页。
- cat /proc/cpuinfo
从图4可以到Core ID、超线程数、Core的16进制编码(在DPDK应用中会用到这些参数)。
NUMA设计框架如图5所示。红色绿色箭头代表访问处理器本地内存(Local memory),红色箭头访问远程内存(remote memory),即其他处理器的本地内存,需要通过额外的总线!
NUMA中,虽然内存直接attach在CPU上,但是由于内存被平均分配在了各个die上。只有当CPU访问自身直接attach内存对应的物理地址时,才会有较短的响应时间(后称Local Access)。而如果需要访问其他CPU attach的内存的数据时,就需要通过inter-connect通道访问,响应时间就相比之前变慢了(后称Remote Access)。所以NUMA(Non-Uniform Memory Access)就此得名。
从前面分析发现,确实提高了CPU访问内存和外设的速率,奈何CPU处理速率远远超过了内存的吞吐速率,这里就带来了CPU不必要的开销。一般来说,当CPU从DDR中取指令时,大概要花费几百个时钟周期,在这几百个时钟周期内,处理器除了等待什么也不能做。在这种环境下,才提出了Cache的概念,其目的就是为了匹配处理器和内存之间存在的巨大的速度鸿沟。
Cache 由三级组成,之所以对Cach 进行分级,也是从成本和生产工艺的角度考虑的。一级(L1)最快,但是容量最小,一级cache分为指令cache和数据cache,图3中可以查看;三级(LLC, Last Level Cache)最慢,但是容量最大。当CPU需要访问某个地址时候,首先在cache中目录表中查询是否有该内容,有就直接取指令或者数据,没有就从DDR中取取指令或者数据。在cache有对应的数据简称指令命中,反之指令没有命中。L3 cache命中,大约需要40个时钟周期,L3 cache没命中,一个内存读需要140个时钟周期。
Cache 的预取指令分为时间局部性和空间局部性。时间局部性是指程序即将用到的指令/数据可能就是目前正在使用的指令数据。因此,当前用到的指令/数据在使用完毕之后以暂时存放在Cache中,可以在将来的时候再被处理器用到。空间局部性是指程序即将用到的指/数据可能与目前正在使用的指令/数据在空间上相邻或者相近。因此,在处理器处理当前指令/数据时,可以从内存中把相邻区域的指令/数据读取到Cache中,当处理器需要处理相邻内存区域的指令/数据时,可以直接从Cache中读取,节省访问内存的时间。这里可以创建一个二维数组,然后顺序横向a[i][j]和竖向a[j][i]赋值计算时间做对比,由于a[j][i]地址是跳跃性的赋值,cache不能命中,所以消耗的时间远远大于连续地址的赋值。
提高CPU性能还可以采用多核并行计算,一个时钟周期读取N条指令。在软件上也可以做适当的系统优化和算法优化,比如配置CPU 亲和性,CPU 亲和性(Core affinity)就是一个特定的任务要在某个定的 CPU 上尽量长时间地运行而不被迁移到其他处理器上的倾向性。
本文出自Linux_Google原创,转载请注明转载出。
欢迎关注新公众号:herok,分享计算机办卡,嵌入式,AI等高质量技术干货文章。
公众号二维码:
CPU性能发展所遇到的瓶颈相关推荐
- 多核之后,CPU 的发展方向是什么?中科院计算所包云岗提 20 点新思考
作者:包云岗 在知乎上有一个问题:多核之后,CPU 的发展方向是什么? 中科院计算所研究员.智源学者包云岗针对该问题进行了详细回答.智源社区将包云岗研究员的回答内容转载过来,供读者参考. 包云岗,中国 ...
- 多核之后,CPU 的发展方向是什么?中科院计算所包云岗详细解读
来源:知乎 作者:包云岗 包云岗,中国科学院计算技术研究所研究员.博士生导师.中国科学院大学教授,中国开放指令生态(RISC-V)联盟秘书长,从事计算机体系结构和开源芯片方向前沿研究,主持研制多款达到 ...
- cpu和显卡瓶颈测试软件,《怪物猎人:世界》CPU测试:4核成瓶颈、6核才够用
自<怪物猎人:世界>发布以来,就有不少消息说这款游戏因为有D加密,对电脑CPU的要求比较高,不少试玩的玩家因为CPU性能不够导致游戏经常崩溃,那么事实是否如此呢?今天晓边就来测试一下< ...
- 性能计数器驱动_Linux CPU性能优化方法
在Linux系统中,由于成本的限制,往往会存在资源上的不足,例如 CPU.内存.网络.IO 性能.本文,就对 Linux 进程和 CPU 的原理进行分析,总结出 CPU 性能优化的方法. 1. 分析手 ...
- 关于可计算、图灵机及CPU性能
文章目录 引言 无尽的"贪婪" 可计算问题的解决 更快.更多的计算 更快的CPU 抽象模型与实际 图灵机 停机问题 图灵机与冯诺伊曼机 再谈冯诺伊曼计算机 CPU性能量化 心跳与晶 ...
- 手机CPU与电脑CPU性能究竟相差多少?
随着手机CPU厂商(高通.海思.三星.联发科)的不断发力,手机CPU都是四核.八核,联发科甚至开始十核了,而且主频也越来越高,因此绝大部分人认为手机CPU可以和电脑CPU相媲美,但事实却完全不是这样. ...
- intel和AMD CPU性能对比(2016年CPU天梯图)组装电脑必读!
http://www.365pcbuy.com/article-411.html 特别提示:此文已经于2016年10月12日更新!内容变动较大,请细细品鉴! 如何为客户推荐高性价比机型是我站的重要工作 ...
- CPU性能优化:Cache
CPU性能提升:Cache机制 随着半导体工艺和芯片设计技术的发展,CPU的工作频率也越来越高,和CPU进行频繁的数据交换的内存的运行速度却没有相应的提升,于是两者之间产生了带宽问题.进而影响计算机 ...
- Linux性能优化-CPU性能优化思路
目录 CPU性能指标 性能工具 如何迅速的分析CPU性能瓶颈 性能优化方法论 CPU优化 参考 CPU性能指标 CPU使用率 1.CPU使用率描述了非空闲时间占总CPU时间的百分比,根据CPU上运行任 ...
最新文章
- “Could not import PIL.Image. The use of array_to_img requires PIL.”错误的解决办法
- 编写有效的事条指导原则
- 如何使用批处理添加网络打印机
- JS-键盘事件之方向键移动元素
- 深入理解支持向量机(SVM)
- Redis——学习之路一(初识redis)
- Python 读写配置文件模块: configobj 和 configParser
- 微软私有云解决方案_微软发布电信云平台 ,互联网巨头争夺5G网络商机
- mysql 数据库event_mysql数据库事件调度(Event)
- Mac忘记root密码(Mac OS Sierra忘记root密码如何重置)
- oracle apex 日志,oracle-apex - 在oracle apex报告中显示员工记录或经理记录及其员工 - SO中文参考 - www.soinside.com...
- 任何事情的发生必有其目的,并有助于我
- P1262 间谍网络
- 深度学习网络模型实战
- java 其他文件转pdf_java 其他文件转成pdf java生成pdf
- 夜来风雨声,“网络应用层”知多少?
- 什么是护网(HVV)?需要什么技能?
- python 实现csdn平台自动化定时评论功能实现
- MySql——忘记密码怎么办
- 【科普】关于操作系统(桌面操作系统/服务器操作系统/嵌入式/移动设备操作系统)基础概念