相关链接
- PassMark - CPU Benchmarks - List of Benchmarked CPUs
https://www.cpubenchmark.net/cpu_list.php - Linux——CPU亲和性(affinity) - 怪猫佐良 - 博客园
https://www.cnblogs.com/oddcat/articles/9917892.html - 龙芯真的是骗取经费的假CPU吗? - 简书
https://www.jianshu.com/p/200267980851 - 科研造假,更可怕!龙芯,在造假的阴影中差点死去!_凤凰网科技
http://tech.ifeng.com/a/20190215/45311117_0.shtml - 天啦噜!知道硬盘很慢,但没想到比 CPU Cache 慢 10000000 倍
https://mp.weixin.qq.com/s/-E5jcp7tfkXjsSu2vzdeAw
摘要
CPU affinity 使用位掩码(bitmask)表示, 每一位都表示一个CPU, 置1表示"绑定".
最低位表示第一个逻辑CPU, 最高位表示最后一个逻辑CPU.
细说起来,一个CPU的架构可细分为两种,一种叫指令集架构,一种叫微架构。
如果把处理器比作是一个算盘的话,指令集架构就是算盘运算时使用的“加减乘除”这些法则,你看不见摸不着,但确实是客观存在的法则;微架构就是算盘上的算珠,你能看得见摸得着。
所以,微架构决定着CPU内部原件“长什么样子”,它们如何排列;而具体的工作原理就是指令集架构所规定的。
对于CPU来说,只要指令集相同,就算微架构的花样再多,都是可以正常进行工作的。
好比是不管你的算盘使用什么材料的算珠,什么样的算盘框子,用什么东西串起来的,只要你懂得“加减乘除”这些运算法则,使用任何一个算盘都可以进行计算。
那么,要是指令集架构完全不同,就意味着整个CPU的运算法则是不相同的。运算法则不同,CPU内部的排列顺序自然不会一样。
所以,不同架构的CPU根本没有可比性。
这就像是在对比“加法”和“除法”,哪一个运算速度更快。
科普向,龙芯使用什么架构?
我们一般提到CPU的架构,大都是说指令集架构,也就是CPU的运算法则。现在市面上共有4类主流的CPU架构,分别是
英特尔和AMD所使用的X86架构;拥有全部的复杂指令集,可以应对各种使用场合。
ARM公司自己的ARM架构;它是一种进阶精简指令集,相比X86去掉了一部分无用的算法,所以它的功耗更小,现在被用作智能手机的处理器。
美普思科技公司的MIPS架构;它只是精简指令集,所以它的设计更简单,开发周期更短,可以短时间内开发出下一代处理器。
IBM公司的PowerPC架构。它也是精简指令集,随着IBM公司的没落逐渐被人们所淡忘,现在只存在于通信、汽车等专有领域中。
每一类指令集,都是好几代指令集产品的总称,它们下边还有N多个具体的指令集。
所以,在龙芯开发立项时,他们能选择的也只有4条路,X86、ARM、MIPS、完全自主研发架构。
自主研发芯片的意义就在于彻底摆脱AMD和英特尔的技术封锁,而ARM公司本身不生产芯片,完全靠卖芯片的架构方案赚钱。如果完全自主开发指令集,难度特别巨大,相当于是重新定义一套计算方法。
以X86为例,除了一开始的x86指令,还有x87,MMX,SSE1-4,x86-64,AVX1-2等等,每次指令集更新都会申请相应的各种专利。
想使用指令集,就要看人家英特尔的脸色行事,并且很多指令集都是在专利封锁之内根本不能使用,所以要是使用了X86架构,那么在CPU生产上永世不得翻身。
永远使用落后的指令集,性能永远是落后的。
查看cpu信息(linux)
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
# 查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
查看CPU的负载(linux)
平均负载是指上一分钟同时处于就绪状态的平均进程数。在CPU中可以理解为CPU可以并行处理的任务数量,就是CPU个数X核数。
如果CPU Load等于CPU个数乘以核数,那么就说CPU正好满负载,再多一点,可能就要出问题了,有些任务不能被及时分配处理器,那要保证性能的话,最好要小于CPU个数X核数X0.7。
Load Average是指CPU的Load。它所包含的信息是在一段时间内CPU正在处理及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。
Load Average的值应该小于CPU个数X核数X0.7,Load Average会有3个状态平均值,分别是1分钟、5分钟和15分钟平均Load。
如果1分钟平均出现大于CPU个数X核数的情况,还不需要担心;如果5分钟的平均也是这样,那就要警惕了;15分钟的平均也是这样,就要分析哪里出现问题,防范未然。
# 查看CPU负载信息,使用top 命令
top
Cache命中率
cache 的命中率 - 泪雪网
https://www.leiue.com/cache-hit-ratio
Cache命中率=(平均存取时间-主存存取时间)/(高速缓存存取时间-主存存取时间),Ta=HTa1+(1-H)Ta2,Ta为平均存取时间,Ta1为Cache的存取时间,Ta2为主存存取时间,H为Cache命中率。
Cache 命中率=(平均存取时间-主存存取时间)/(高速缓存存取时间-主存存取时间),即为:Ta=HTa1+(1-H)Ta2,Ta 为平均存取时间,Ta1 为 Cache 的存取时间,Ta2 为主存存取时间,H 为 Cache 命中率。换算一下就得到了。
Cache 是一种特殊的存储器,它由 Cache 存储部件和 Cache 控制部件组成。Cache 存储部件一般采用与 CPU 同类型的半导体存储器件,存取速度比内存快几倍甚至十几倍。而 Cache 控制器部件包括主存地址寄存器、Cache 地址寄存器,主存—Cache 地址变换部件及替换控制部件等。至于它们各自又是怎样工作的、有何作用等等,就没有必要做进一步的研究,知道一般 Cache 分为 L1 Cache(其中又分为数据 Cache、代码 Cache)、L2 Cache 就行。
终端用户访问加速节点时,如果该节点有缓存住了要被访问的数据时就叫做命中,如果没有的话需要回原服务器取,就是没有命中。取数据的过程与用户访问是同步进行的,所以即使是重新取的新数据,用户也不会感觉到有延时。 命中率=命中数/(命中数+没有命中数), 缓存命中率是判断加速效果好坏的重要因素之一。
评价 CACHE 性能关键的指标是 CACHE 的命中率。因为 CACHE 的容量远远小于内存,它只可能存放内存的一部分数据。CPU 自然是先访问 CACHE,再访问主存,如果数据在 CACHE 中为命中,在内存中为不命中,这就有个比例问题,这个比例就是命中率。
影响命中率的因素:
-
CACHE 的容量,大一些好
-
CACHE 与主存储器每次交换信息的单位量(Cache Line Size)适中
-
CACHE 不同的组织方式,多路组相联更好
-
CACHE 的多级组织可提高命中率
-
CACHE 装满后的换字算法
发表评论